eligible 2.8.2 → 2.9.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 12277e8af0e82975de94997f83c564f3cf6ecbff
4
- data.tar.gz: c9ae1c944a99d84bcaf590114e63c985d505d703
3
+ metadata.gz: a2a50028978ef5f3a39e998f84ac1e7a80d45696
4
+ data.tar.gz: 7296fa9ff2ca890a1e3f5464fe190285d0a2f2df
5
5
  SHA512:
6
- metadata.gz: 03a4e1ac8dd8ab78947b921d7bba440368b5a777e3f745ce9bf2d99e8d9c170677576cad63f85406d8cc1a866966b085ad6d2a98245751a3b5591aafb14863bd
7
- data.tar.gz: deb0e71d15b54b1c9a56097d67646dffbf07ca296bc7290c71bc9c95a1311cf936241883a860eaad160633ab53dada5ad4f6c713be1c269c284ca7bacbddf891
6
+ metadata.gz: 6376bc0fa92857b043ac2da25a9897a34dd5fc51252a980f667277d4226dfe2b51032673fa2261de3c564d78951ce97be213b2916e97027d6742c6894a70947b
7
+ data.tar.gz: 41c0a0339c6781b82f23f94df810e5fbb159fadece8f3c5beb2d49edfbc36b58a229a571e8b442cd926e616ac13b115d1868482a7651a93a033f4825bfb2b01b
data/.codeclimate.yml CHANGED
@@ -4,9 +4,6 @@ engines:
4
4
  config:
5
5
  languages:
6
6
  - ruby
7
- - javascript
8
- - python
9
- - php
10
7
 
11
8
  fixme:
12
9
  enabled: true
@@ -16,12 +13,9 @@ engines:
16
13
 
17
14
  ratings:
18
15
  paths:
19
- - "**.inc"
20
- - "**.js"
21
- - "**.jsx"
22
- - "**.module"
23
- - "**.php"
24
- - "**.py"
16
+ - Gemfile.lock
17
+ - Rakefile
18
+ - "**.rake"
25
19
  - "**.rb"
26
20
 
27
21
  exclude_paths:
data/.gitignore CHANGED
@@ -3,6 +3,7 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
+ .ruby-gemset
6
7
  Gemfile.lock
7
8
  InstalledFiles
8
9
  _yardoc
data/ChangeLog CHANGED
@@ -1,3 +1,8 @@
1
+ 2017-10-04 Eligible <support@eligible.com>
2
+
3
+ * 2.9.0
4
+ - Adding revoke functionality for session tokens
5
+
1
6
  2017-03-24 Eligible <support@eligible.com>
2
7
 
3
8
  * 2.8.2
data/README.md CHANGED
@@ -90,7 +90,7 @@ the parameter `service_type`, required on the api calls, is provided
90
90
  by Eligible from its website, in xml and json format, which you can
91
91
  embed into your applications.
92
92
 
93
- [https://eligible.com/resources/service-codes.xml](https://eligible.com/resources/service-codes.xml)
93
+ [https://eligible.com/resources/service-codes.xml](https://eligible.com/resources/service-codes.xml)
94
94
  [https://eligible.com/resources/service-codes.json](ttps://eligible.com/resources/service-codes.json)
95
95
 
96
96
  ## Place of Service
@@ -450,7 +450,7 @@ Eligible::Ticket.all
450
450
  ### Create a customer
451
451
 
452
452
  ```ruby
453
- customer_params = { customer: { name: "ABC company",
453
+ customer_params = { customer: { name: "ABC company",
454
454
  site_name: "ABC site name"
455
455
  }
456
456
  }
@@ -579,7 +579,7 @@ response.to_hash
579
579
  params = { payer_id: '12345' }
580
580
  response = Eligible::Payer.search_options(params)
581
581
  response.to_hash
582
- ```
582
+ ```
583
583
 
584
584
  ### Search options for all payers
585
585
 
@@ -648,6 +648,33 @@ response = Eligible::Referral.create(params)
648
648
  response.to_hash
649
649
  ```
650
650
 
651
+ ## Session Tokens
652
+
653
+ ### Reference
654
+ [https://account.eligible.com/docs/account#session-tokens](https://account.eligible.com/docs/account#session-tokens)
655
+
656
+ ### Retrieve session token
657
+
658
+ ```ruby
659
+ params = { endpoints: 'coverage, cost_estimates, visit_types, payer_list',
660
+ ttl_seconds: 300,
661
+ max_calls: 50
662
+ }
663
+ result = Eligible::SessionToken.create(params)
664
+ result.to_hash # returns all session token info for the request
665
+ result.error # returns error, if any
666
+ ```
667
+
668
+ ### Revoke session token
669
+
670
+ ```ruby
671
+ params = { session_token: 'session-token-to-revoke' }
672
+ result = Eligible::SessionToken.revoke(params)
673
+ result.to_hash # returns all session token info for the request
674
+ result.error # returns error, if any
675
+ ```
676
+
677
+
651
678
  ## Errors
652
679
 
653
680
  This is the list of errors thrown from the eligible ruby gem.
@@ -660,6 +687,28 @@ This is the list of errors thrown from the eligible ruby gem.
660
687
  6. NotImplementedError - Raised when the functionality you are trying to use doesn't exist.
661
688
  7. ArgumentError - Raised when all the required params are not provided.
662
689
 
690
+ ### Error Handling
691
+
692
+ Raised errors have details in `message`, `http_code`, `http_body`, `json_body`, and `errors` attributes:
693
+
694
+ ```ruby
695
+ def call_eligible(request_params)
696
+ Eligible::Coverage.cost_estimate request_params
697
+ rescue Eligible::AuthenticationError => auth_error # handle any specific error
698
+ auth_error.message # readable message
699
+ auth_error.http_status # HTTP Status Code
700
+ auth_error.http_body # HTTP Response body
701
+ auth_error.json_body # HTTP Response body as Hash
702
+ auth_error.errors # Errors from Response Hash
703
+ rescue Eligible::EligibleError => error # handle generic error
704
+ ## Similar format
705
+ error.message
706
+ error.http_status
707
+ error.http_body
708
+ error.json_body
709
+ error.errors
710
+ end
711
+ ```
663
712
 
664
713
  ## Contributing
665
714
 
data/Rakefile CHANGED
@@ -5,13 +5,7 @@ require 'rspec/core/rake_task'
5
5
 
6
6
  RSpec::Core::RakeTask.new(:spec)
7
7
 
8
- desc 'Run RuboCop on the lib directory'
9
- RuboCop::RakeTask.new(:rubocop) do |task|
10
- task.patterns = ['lib/**/*.rb']
11
- task.fail_on_error = false
12
- end
13
-
14
- task default: [:rubocop, :spec]
8
+ task default: [:spec]
15
9
 
16
10
  desc 'Runs code coverage'
17
11
  task :rcov do
data/circle.yml ADDED
@@ -0,0 +1,15 @@
1
+ machine:
2
+ environment:
3
+ CC_TEST_REPORTER_ID: 1a814ffba15f437df919868f6c26f3c6ac111338b88f9a9d7e2b3030598bccdd
4
+
5
+ dependencies:
6
+ post:
7
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
8
+ - chmod +x ./cc-test-reporter
9
+
10
+ test:
11
+ pre:
12
+ - ./cc-test-reporter before-build
13
+
14
+ post:
15
+ - ./cc-test-reporter after-build --exit-code $EXIT_CODE --coverage-input-type simplecov
data/eligible.gemspec CHANGED
@@ -19,8 +19,7 @@ Gem::Specification.new do |gem|
19
19
  gem.add_dependency('rest-client', '~> 2.0.0')
20
20
  gem.add_dependency('multi_json', '~> 1.7')
21
21
 
22
- gem.add_development_dependency('rake', '~> 10.5')
22
+ gem.add_development_dependency('rake', '~> 12.0')
23
23
  gem.add_development_dependency('rspec', '~> 3.4')
24
- gem.add_development_dependency('rubocop', '= 0.35.0')
25
24
  gem.add_development_dependency('simplecov', '~> 0.11')
26
25
  end
data/lib/eligible.rb CHANGED
@@ -45,9 +45,8 @@ module Eligible
45
45
  @@test = false
46
46
  @@api_version = '1.5'
47
47
  @@api_base = "https://gds.eligibleapi.com/v#{@@api_version}"
48
- @@fingerprints = %w(79d62e8a9d59ae687372f8e71345c76d92527fac
49
- 4b2c6888ede79d0ee47339dc6fab5a6d0dc3cb0e
50
- de4cdd0aae26df71290f0373af18e9ee7ecff18c)
48
+ @@fingerprints = %w(de4cdd0aae26df71290f0373af18e9ee7ecff18c
49
+ 9df5f186fb20ad25ffd864942a6394840b02a480)
51
50
 
52
51
  def self.api_url(url = '')
53
52
  @@api_base + url.to_s
@@ -235,7 +234,21 @@ module Eligible
235
234
  RestClient::Request.execute(opts)
236
235
  end
237
236
 
238
- def self.error_message(error)
237
+ def self.error_message(error, errors)
238
+ message = compose_message_from_errors(errors)
239
+ return message if message
240
+
241
+ return compose_message_from_error(error)
242
+ end
243
+
244
+ def self.compose_message_from_errors(errors)
245
+ return unless errors.is_a?(Array)
246
+
247
+ return errors.first[:message] if errors.size == 1
248
+ return errors.each_with_index.map { |error, index| "#{index + 1}. #{error[:message]}" }.join("\n")
249
+ end
250
+
251
+ def self.compose_message_from_error(error)
239
252
  return error.to_s unless error.is_a?(Hash)
240
253
  result = error[:details] || error[:reject_reason_description] || error
241
254
  return result.to_s
@@ -243,15 +256,16 @@ module Eligible
243
256
 
244
257
  def self.handle_api_error(rcode, rbody)
245
258
  begin
246
- error_obj = Eligible::JSON.load(rbody)
247
- error_obj = Util.symbolize_names(error_obj)
248
- fail EligibleError unless error_obj.key?(:error)
259
+ error_obj = Util.symbolize_names(Eligible::JSON.load(rbody))
260
+ fail EligibleError unless error_obj.keys.any? { |k| [:error, :errors].include? k }
249
261
  error = error_obj[:error]
262
+ errors = error_obj[:errors]
263
+
250
264
  rescue MultiJson::DecodeError, EligibleError
251
265
  raise APIError.new("Invalid response object from API: #{rbody.inspect} (HTTP response code was #{rcode})", rcode, rbody)
252
266
  end
253
267
 
254
- error_msg = error_message(error)
268
+ error_msg = error_message(error, errors)
255
269
 
256
270
  case rcode
257
271
  when 400, 404 then
@@ -21,7 +21,7 @@ module Eligible
21
21
  end
22
22
 
23
23
  def self.require_param(value, name)
24
- fail ArgumentError, "#{name} of the claim is required" if value.nil? || (value.is_a?(String) && value.empty?)
24
+ fail ArgumentError, "#{name} of the #{class_name} is required" if value.nil? || (value.is_a?(String) && value.empty?)
25
25
  end
26
26
 
27
27
  def self.send_request(method, url, api_key, params, required_param_name = nil)
@@ -4,17 +4,19 @@ module Eligible
4
4
  attr_reader :http_status
5
5
  attr_reader :http_body
6
6
  attr_reader :json_body
7
+ attr_reader :errors
7
8
 
8
9
  def initialize(message = nil, http_status = nil, http_body = nil, json_body = nil)
9
10
  @message = message
10
11
  @http_status = http_status
11
12
  @http_body = http_body
12
13
  @json_body = json_body
14
+ @errors = (@json_body || {}).fetch(:errors, [])
13
15
  end
14
16
 
15
17
  def to_s
16
18
  status_string = @http_status.nil? ? '' : "(Status #{@http_status}) "
17
- "#{status_string}#{@message}"
19
+ "#{status_string}#{@message}: #{@errors.to_json}"
18
20
  end
19
21
  end
20
22
  end
@@ -3,5 +3,9 @@ module Eligible
3
3
  def self.create(params, api_key = nil)
4
4
  send_request(:post, '/session_tokens/create.json', api_key, params)
5
5
  end
6
+
7
+ def self.revoke(params, api_key = nil)
8
+ send_request(:post, '/session_tokens/revoke.json', api_key, params)
9
+ end
6
10
  end
7
11
  end
@@ -1,3 +1,3 @@
1
1
  module Eligible
2
- VERSION = '2.8.2'.freeze
2
+ VERSION = '2.9.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eligible
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.2
4
+ version: 2.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katelyn Gleaon
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-03-24 00:00:00.000000000 Z
13
+ date: 2018-01-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rest-client
@@ -46,14 +46,14 @@ dependencies:
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '10.5'
49
+ version: '12.0'
50
50
  type: :development
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: '10.5'
56
+ version: '12.0'
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: rspec
59
59
  requirement: !ruby/object:Gem::Requirement
@@ -68,20 +68,6 @@ dependencies:
68
68
  - - "~>"
69
69
  - !ruby/object:Gem::Version
70
70
  version: '3.4'
71
- - !ruby/object:Gem::Dependency
72
- name: rubocop
73
- requirement: !ruby/object:Gem::Requirement
74
- requirements:
75
- - - '='
76
- - !ruby/object:Gem::Version
77
- version: 0.35.0
78
- type: :development
79
- prerelease: false
80
- version_requirements: !ruby/object:Gem::Requirement
81
- requirements:
82
- - - '='
83
- - !ruby/object:Gem::Version
84
- version: 0.35.0
85
71
  - !ruby/object:Gem::Dependency
86
72
  name: simplecov
87
73
  requirement: !ruby/object:Gem::Requirement
@@ -116,6 +102,7 @@ files:
116
102
  - LICENSE
117
103
  - README.md
118
104
  - Rakefile
105
+ - circle.yml
119
106
  - eligible.gemspec
120
107
  - lib/eligible.rb
121
108
  - lib/eligible/api_resource.rb
@@ -168,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
155
  version: '0'
169
156
  requirements: []
170
157
  rubyforge_project:
171
- rubygems_version: 2.4.5.1
158
+ rubygems_version: 2.6.14
172
159
  signing_key:
173
160
  specification_version: 4
174
161
  summary: Ruby wrapper for the Eligible API