Module: AvailityClient

Defined in:
lib/availity_client.rb,
lib/availity_client/coverage.rb

Defined Under Namespace

Classes: Coverage, MissingApiKeyError

Class Method Summary collapse

Class Method Details

.base_urlObject



12
13
14
# File 'lib/availity_client.rb', line 12

def base_url
  "https://api.availity.com/#{premium_key? ? '' : 'demo/'}v1/"
end

.generate_tokenObject

Raises:



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/availity_client.rb', line 20

def generate_token
  raise MissingApiKeyError, "AVAILITY_API_KEY and AVAILITY_API_SECRET  Environment Variables must be set" unless ENV['AVAILITY_API_KEY'] && ENV['AVAILITY_API_SECRET']

  base_64_token = Base64.encode64(ENV['AVAILITY_API_KEY'] + ":" + ENV['AVAILITY_API_SECRET']).chomp
  conn = Faraday.new(url: "https://api.availity.com") do |faraday|
    faraday.response :logger
    faraday.adapter  Faraday.default_adapter
  end

  response = conn.post do |req|
    req.url '/v1/token'
    req.headers['Authorization'] = "Basic #{base_64_token}"
    req.body = "grant_type=client_credentials"
  end

  JSON.parse(response.body)['access_token']
end

.issue_request(method, url, params) ⇒ Object

Raises:



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/availity_client.rb', line 38

def issue_request(method, url, params)
  api_key = ENV['AVAILITY_API_KEY']
  raise MissingApiKeyError, "AVAILITY_API_KEY Environment Variable must be set" unless api_key

  uri = URI.parse(url)
  conn = Faraday.new(url: uri) do |faraday|
    faraday.response :logger
    faraday.adapter  Faraday.default_adapter
  end

  response = conn.send(method.to_sym) do |req|
    if premium_key?
      req.headers['Authorization'] = "Bearer #{generate_token}"
    else
      req.headers['x-api-key'] = api_key
    end

    if params.any?
      params.each { |key, value| req.params[key.to_s] = value }
    end
  end

  response_body = begin
                    JSON.parse(response.body)
                  rescue JSON::ParserError => e
                    response.body
                  end
  {
    headers: response.headers,
    status: response.status,
    body: response_body
  }
end

.premium_key?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/availity_client.rb', line 16

def premium_key?
  !!ENV['AVAILITY_API_KEY'] && !!ENV['AVAILITY_API_SECRET']
end