availity_client 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c821ea05b606dd8da7d448abab27585d6a1e2b30
4
+ data.tar.gz: 628e4749ea7b7f4b93355f1c2b3cbf6372f62068
5
+ SHA512:
6
+ metadata.gz: cfcba6c7fa8d455ddb5a3c2a1982199c6d221d38b30b99139c47b6f044afad7662448a9b7ccc32696663f8e844eb266de40aba98980002a327fe263ae97af9fd
7
+ data.tar.gz: 1d131a94de5b666d2774285c8b41c98f21f99c5f060f87ccb8ad0afc2dfc5e48b63a9e7121ec8bdd40ec53ac66421cb6b9c447830fcfbbf92f5399928affd5f5
@@ -0,0 +1,71 @@
1
+ require 'availity_client/coverage'
2
+ require 'faraday'
3
+ require 'json'
4
+ require 'uri'
5
+ require 'base64'
6
+
7
+ module AvailityClient
8
+ class MissingApiKeyError < StandardError; end
9
+
10
+ class << self
11
+ def base_url
12
+ "https://api.availity.com/#{premium_key? ? '' : 'demo/'}v1/"
13
+ end
14
+
15
+ def premium_key?
16
+ !!ENV['AVAILITY_API_KEY'] && !!ENV['AVAILITY_API_SECRET']
17
+ end
18
+
19
+ def generate_token
20
+ raise MissingApiKeyError, "AVAILITY_API_KEY and AVAILITY_API_SECRET Environment Variables must be set" unless ENV['AVAILITY_API_KEY'] && ENV['AVAILITY_API_SECRET']
21
+
22
+ base_64_token = Base64.encode64(ENV['AVAILITY_API_KEY'] + ":" + ENV['AVAILITY_API_SECRET']).chomp
23
+ conn = Faraday.new(url: "https://api.availity.com") do |faraday|
24
+ faraday.response :logger
25
+ faraday.adapter Faraday.default_adapter
26
+ end
27
+
28
+ response = conn.post do |req|
29
+ req.url '/v1/token'
30
+ req.headers['Authorization'] = "Basic #{base_64_token}"
31
+ req.body = "grant_type=client_credentials"
32
+ end
33
+
34
+ JSON.parse(response.body)['access_token']
35
+ end
36
+
37
+ def issue_request(method, url, params)
38
+ api_key = ENV['AVAILITY_API_KEY']
39
+ raise MissingApiKeyError, "AVAILITY_API_KEY Environment Variable must be set" unless api_key
40
+
41
+ uri = URI.parse(url)
42
+ conn = Faraday.new(url: uri) do |faraday|
43
+ faraday.response :logger
44
+ faraday.adapter Faraday.default_adapter
45
+ end
46
+
47
+ response = conn.send(method.to_sym) do |req|
48
+ if premium_key?
49
+ req.headers['Authorization'] = "Bearer #{generate_token}"
50
+ else
51
+ req.headers['x-api-key'] = api_key
52
+ end
53
+
54
+ if params.any?
55
+ params.first.each { |key, value| req.params[key.to_s] = value }
56
+ end
57
+ end
58
+
59
+ response_body = begin
60
+ JSON.parse(response.body)
61
+ rescue JSON::ParserError => e
62
+ response.body
63
+ end
64
+ {
65
+ headers: response.headers,
66
+ status: response.status,
67
+ body: response_body
68
+ }
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,18 @@
1
+ module AvailityClient
2
+ class Coverage
3
+ class << self
4
+ def get(* args)
5
+ id = args.shift.to_s if args.first.kind_of?(Integer)
6
+ url = "#{AvailityClient.base_url}coverages#{"/" + id if id}"
7
+
8
+ AvailityClient.issue_request('get', url, args)
9
+ end
10
+
11
+ def delete(id)
12
+ url = "#{AvailityClient.base_url}coverages/#{id}"
13
+
14
+ AvailityClient.issue_request('delete', url, {})
15
+ end
16
+ end
17
+ end
18
+ end
metadata ADDED
@@ -0,0 +1,115 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: availity_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Nicholas Lee
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 0.9.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 0.9.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: HTTP wrapper for Availity API
84
+ email: nicholas.lee.3@gmail.com
85
+ executables: []
86
+ extensions: []
87
+ extra_rdoc_files: []
88
+ files:
89
+ - lib/availity_client.rb
90
+ - lib/availity_client/coverage.rb
91
+ homepage: https://github.com/leeacto/availity_client
92
+ licenses:
93
+ - MIT
94
+ metadata: {}
95
+ post_install_message:
96
+ rdoc_options: []
97
+ require_paths:
98
+ - lib
99
+ required_ruby_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ requirements: []
110
+ rubyforge_project:
111
+ rubygems_version: 2.5.0
112
+ signing_key:
113
+ specification_version: 4
114
+ summary: Availity API REST Client
115
+ test_files: []