Class: DynamicsHTTPClient

Inherits:
Object
  • Object
show all
Defined in:
lib/msdynamics.rb

Overview

Private: Methods for making HTTP requests to the Dynamics Web API.

Class Method Summary collapse

Class Method Details

.refresh_token(url = "", refresh_token = "", client_id = "", client_secret = "", resource = "") ⇒ Object

Allows refreshing an oAuth access token.



97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/msdynamics.rb', line 97

def self.refresh_token(url="", refresh_token="",
                       client_id="", client_secret="", resource="")
  params = {
    'refresh_token' => refresh_token,
    'client_id'     => client_id,
    'client_secret' => client_secret,
    'grant_type'    => 'refresh_token',
    'resource'      => resource
  }
  uri = URI(url)
  Net::HTTP::post_form(uri, params)
end

.request(url = "", access_token = "") ⇒ Object

Sends a HTTP request.(GET)



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/msdynamics.rb', line 77

def self.request(url="", access_token="")
    uri = URI(URI.encode(url))
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = (uri.scheme == "https")
    request = Net::HTTP::Get.new(uri)
    request["Authorization"] = "Bearer #{access_token}"
    response = http.request(request)
    if response.code != '200'
      if response.code == '401'
        # Ughhh! MS Dynamics puts the 401 error messages in the body!
        error_message = response.body
      else
        error_message = JSON.parse(response.body)['error']['message']
      end
      raise RuntimeError.new(error_message)
    end
    response
end