Class: Change::Requests::Client

Inherits:
Object
  • Object
show all
Includes:
Exceptions, HTTParty
Defined in:
lib/requests/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(properties = {}) ⇒ Client

Returns a new instance of Client.



7
8
9
10
11
# File 'lib/requests/client.rb', line 7

def initialize(properties = {})
  @api_key = properties.delete(:api_key)
  @secret_token = properties.delete(:secret_token)
  raise "An API key must be specified." if @api_key.nil?
end

Instance Method Details

#request(request_on, request_type, resource, params) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/requests/client.rb', line 13

def request(request_on, request_type, resource, params)
  method = request_type.delete(:method)
  action_or_collection = request_type.delete(:action) || request_type.delete(:collection)
  endpoint = resource.endpoint(request_on, action_or_collection)

  params[:api_key] = @api_key

  if resource.needs_request_signature?(method)
    params[:endpoint] = endpoint
    params[:timestamp] = Time.now.utc.iso8601

    if resource.needs_authorization?(action_or_collection)
      auth_key_to_use = params.delete(:auth_key_to_use) || resource.auth_key
      params[:rsig] = generate_rsig(params, auth_key_to_use['auth_key'])
    else
      params[:rsig] = generate_rsig(params)
    end
  end

  response = send(method.to_s, final_url(endpoint), params)
  deal_with_response(response)
end