Module: CoverMyMeds::ApiRequest

Included in:
Client
Defined in:
lib/covermymeds_api/api_request.rb

Instance Method Summary collapse

Instance Method Details

#api_uri(host, path, params) ⇒ Object



39
40
41
42
43
44
# File 'lib/covermymeds_api/api_request.rb', line 39

def api_uri host, path, params
  URI.parse(host).tap do |uri|
    uri.path  = path
    uri.query = params.to_param
  end
end

#call_api(http_method, rest_resource) ⇒ Object



32
33
34
35
36
37
# File 'lib/covermymeds_api/api_request.rb', line 32

def call_api http_method, rest_resource
  body = block_given? ? yield : {}
  rest_resource.send http_method, body
rescue RestClient::Exception => e
  raise Error::HTTPError.new(e.http_code, e.http_body)
end

#request(http_method, host, path, params = {}, auth_type = :basic, &block) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/covermymeds_api/api_request.rb', line 11

def request(http_method, host, path, params={}, auth_type = :basic, &block)
  params  = params.symbolize_keys
  headers = params.delete(:headers) || {}

  tail = case auth_type
    when :basic
      { user: @username, password: @password, headers: headers }
    when :bearer
      { headers: { "Authorization" => "Bearer #{@username}+#{params.delete(:token_id)}" }.merge(headers) }
    else
      {}
  end

  uri = api_uri(host, path, params)
  rest_resource = RestClient::Resource.new(uri.to_s, tail)

  response = call_api http_method, rest_resource, &block
  return nil if response.body.empty?
  return JSON.parse(response.body)
end