change_health 6.1.1 → 6.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/Gemfile +12 -0
  4. data/Rakefile +2 -0
  5. data/change_health.gemspec +8 -9
  6. data/lib/change_health/authentication.rb +20 -16
  7. data/lib/change_health/change_health_exception.rb +15 -12
  8. data/lib/change_health/connection.rb +5 -1
  9. data/lib/change_health/extensions.rb +5 -3
  10. data/lib/change_health/models/claim/submission/address.rb +2 -0
  11. data/lib/change_health/models/claim/submission/billing_pay_to_address_name.rb +2 -0
  12. data/lib/change_health/models/claim/submission/claim_code_information.rb +2 -0
  13. data/lib/change_health/models/claim/submission/claim_date_information.rb +2 -0
  14. data/lib/change_health/models/claim/submission/claim_information.rb +2 -0
  15. data/lib/change_health/models/claim/submission/claim_supplemental_information.rb +2 -0
  16. data/lib/change_health/models/claim/submission/contact_information.rb +2 -0
  17. data/lib/change_health/models/claim/submission/dependent.rb +2 -0
  18. data/lib/change_health/models/claim/submission/diagnosis.rb +2 -0
  19. data/lib/change_health/models/claim/submission/drug_identification.rb +2 -0
  20. data/lib/change_health/models/claim/submission/institutional_service.rb +2 -0
  21. data/lib/change_health/models/claim/submission/line_adjudication_information.rb +2 -0
  22. data/lib/change_health/models/claim/submission/other_payer_name.rb +2 -0
  23. data/lib/change_health/models/claim/submission/other_subscriber_information.rb +2 -0
  24. data/lib/change_health/models/claim/submission/other_subscriber_name.rb +2 -0
  25. data/lib/change_health/models/claim/submission/professional_service.rb +2 -0
  26. data/lib/change_health/models/claim/submission/provider.rb +2 -0
  27. data/lib/change_health/models/claim/submission/receiver.rb +2 -0
  28. data/lib/change_health/models/claim/submission/report_information.rb +2 -0
  29. data/lib/change_health/models/claim/submission/service_facility_location.rb +2 -0
  30. data/lib/change_health/models/claim/submission/service_line.rb +2 -0
  31. data/lib/change_health/models/claim/submission/submitter.rb +2 -0
  32. data/lib/change_health/models/claim/submission/subscriber.rb +2 -0
  33. data/lib/change_health/models/eligibility/encounter.rb +5 -3
  34. data/lib/change_health/models/eligibility/provider.rb +3 -1
  35. data/lib/change_health/models/eligibility/subscriber.rb +4 -1
  36. data/lib/change_health/models/model.rb +20 -8
  37. data/lib/change_health/models/trading_partner/trading_partner.rb +2 -0
  38. data/lib/change_health/request/eligibility.rb +9 -6
  39. data/lib/change_health/request/report.rb +12 -2
  40. data/lib/change_health/request/submission.rb +10 -8
  41. data/lib/change_health/request/trading_partner.rb +4 -2
  42. data/lib/change_health/response/claim/report/report_277_claim.rb +2 -0
  43. data/lib/change_health/response/claim/report/report_277_data.rb +87 -48
  44. data/lib/change_health/response/claim/report/report_277_info_claim_status.rb +2 -0
  45. data/lib/change_health/response/claim/report/report_277_info_status.rb +2 -0
  46. data/lib/change_health/response/claim/report/report_835_claim.rb +2 -0
  47. data/lib/change_health/response/claim/report/report_835_data.rb +31 -14
  48. data/lib/change_health/response/claim/report/report_835_health_care_check_remark_code.rb +2 -0
  49. data/lib/change_health/response/claim/report/report_835_payment.rb +2 -0
  50. data/lib/change_health/response/claim/report/report_835_provider_adjustment.rb +2 -0
  51. data/lib/change_health/response/claim/report/report_835_service_adjustment.rb +2 -0
  52. data/lib/change_health/response/claim/report/report_835_service_line.rb +2 -0
  53. data/lib/change_health/response/claim/report/report_claim.rb +2 -0
  54. data/lib/change_health/response/claim/report/report_data.rb +4 -1
  55. data/lib/change_health/response/claim/report/report_list_data.rb +3 -3
  56. data/lib/change_health/response/claim/submission/submission_data.rb +8 -8
  57. data/lib/change_health/response/eligibility/eligibility_benefit.rb +38 -35
  58. data/lib/change_health/response/eligibility/eligibility_benefits.rb +66 -47
  59. data/lib/change_health/response/eligibility/eligibility_data.rb +33 -30
  60. data/lib/change_health/response/error.rb +5 -3
  61. data/lib/change_health/response/response_data.rb +6 -2
  62. data/lib/change_health/response/trading_partner/trading_partner_data.rb +2 -0
  63. data/lib/change_health/response/trading_partner/trading_partners_data.rb +5 -1
  64. data/lib/change_health/version.rb +3 -1
  65. data/lib/change_health.rb +9 -7
  66. metadata +8 -97
@@ -1,111 +1,130 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ChangeHealth
2
4
  module Response
3
5
  class EligibilityBenefits < Array
4
6
  def initialize(benefits)
5
- super(benefits.map {|benefit| ChangeHealth::Response::EligibilityBenefit.new(benefit) })
7
+ super(benefits.map { |benefit| ChangeHealth::Response::EligibilityBenefit.new(benefit) })
6
8
  end
7
9
 
8
10
  def where(**kwargs)
9
- self.class.new(self.select {|benefit| kwargs.all? {|k,v| benefit_matches?(benefit, k, v) } })
11
+ self.class.new(self.select { |benefit| kwargs.all? { |k, v| benefit_matches?(benefit, k, v) } })
10
12
  end
11
13
 
12
14
  def where_not(**kwargs)
13
- self.class.new(self.reject {|benefit| kwargs.all? {|k,v| benefit_matches?(benefit, k, v) } })
15
+ self.class.new(reject { |benefit| kwargs.all? { |k, v| benefit_matches?(benefit, k, v) } })
14
16
  end
15
17
 
16
- def +(other_obj)
17
- self.class.new(self.to_a + other_obj.to_a)
18
+ def +(other)
19
+ self.class.new(to_a + other.to_a)
18
20
  end
19
21
 
20
22
  def find_by(**kwargs)
21
- self.find {|benefit| kwargs.all? {|k,v| benefit[k].is_a?(Array) ? benefit[k].include?(v) : v == benefit[k] } }
23
+ find { |benefit| kwargs.all? { |k, v| benefit[k].is_a?(Array) ? benefit[k].include?(v) : v == benefit[k] } }
22
24
  end
23
25
 
24
26
  def in_network
25
- self.where(inPlanNetworkIndicatorCode: 'Y')
27
+ where(inPlanNetworkIndicatorCode: 'Y')
26
28
  end
27
29
 
28
30
  ChangeHealth::Response::EligibilityBenefit::HELPERS.each do |key, types|
29
31
  types.each do |method, value|
30
32
  define_method("#{method}s") do
31
- self.where(key => value)
33
+ where(key => value)
32
34
  end
33
35
  end
34
36
  end
35
37
 
36
- %w(family individual employee child employee_and_child).each do |method|
38
+ # rubocop:disable Metrics/BlockLength
39
+ %w[family individual employee child employee_and_child].each do |method|
37
40
  define_method(method) do
38
- self.send("#{method}s")
41
+ send("#{method}s")
39
42
  end
40
43
 
41
- %w(copayment coinsurance).each do |type_mod|
44
+ co_types = %w[copayment coinsurance]
45
+ remaining_types = %w[deductible out_of_pocket]
46
+ date_types = %w[year remaining]
47
+
48
+ co_types.each do |type_mod|
42
49
  method_name = "#{method}_#{type_mod}"
43
50
 
44
51
  define_method(method_name) do |**kwargs|
45
- self.send(method).send("#{type_mod}s").where(**kwargs).first
52
+ send(method).send("#{type_mod}s").where(**kwargs).first
46
53
  end
47
54
 
48
- if ('copayment' == type_mod)
49
- define_method(method_name.gsub('copayment', 'copay')) do |**kwargs|
50
- self.send(method_name, **kwargs)
51
- end
55
+ next unless 'copayment' == type_mod
56
+
57
+ define_method(method_name.gsub('copayment', 'copay')) do |**kwargs|
58
+ send(method_name, **kwargs)
52
59
  end
53
60
  end
54
61
 
55
- %w(deductible out_of_pocket).each do |type_mod|
56
- %w(year remaining).each do |time_mod|
62
+ remaining_types.each do |type_mod|
63
+ date_types.each do |time_mod|
57
64
  method_name = "#{method}_#{type_mod}_#{time_mod}"
58
65
 
66
+ # rubocop:disable Layout/LineLength
59
67
  define_method(method_name) do |**kwargs|
60
- self.send(method).send("#{type_mod}s").send("#{time_mod}s").where(**kwargs).first || self.send(method).send("#{type_mod}s").where(**kwargs).first
68
+ send(method).send("#{type_mod}s").send("#{time_mod}s").where(**kwargs).first || send(method).send("#{type_mod}s").where(**kwargs).first
61
69
  end
70
+ # rubocop:enable Layout/LineLength
62
71
 
63
- if ('out_of_pocket' == type_mod)
72
+ if 'out_of_pocket' == type_mod
64
73
  define_method(method_name.gsub('out_of_pocket', 'oop')) do |**kwargs|
65
- self.send(method_name, **kwargs)
74
+ send(method_name, **kwargs)
66
75
  end
67
76
 
68
- if ('year' == time_mod)
77
+ if 'year' == time_mod
69
78
  define_method(method_name.gsub('out_of_pocket', 'oop').gsub('year', 'total')) do |**kwargs|
70
- self.send(method_name, **kwargs)
79
+ send(method_name, **kwargs)
71
80
  end
72
81
  end
73
82
  end
74
83
 
75
- if ('year' == time_mod)
76
- define_method(method_name.gsub('year', 'total')) do |**kwargs|
77
- self.send(method_name, **kwargs)
78
- end
84
+ next unless 'year' == time_mod
85
+
86
+ define_method(method_name.gsub('year', 'total')) do |**kwargs|
87
+ send(method_name, **kwargs)
79
88
  end
80
89
  end
81
90
  end
82
91
  end
92
+ # rubocop:enable Metrics/BlockLength
83
93
 
84
- alias_method :oops, :out_of_pockets
85
- alias_method :copays, :copayments
94
+ alias oops out_of_pockets
95
+ alias copays copayments
86
96
 
87
97
  private
88
- def benefit_matches?(benefit, k, v)
89
- if benefit[k].is_a?(Array)
90
- if v.is_a?(Array)
91
- return v.any? {|possible_v| benefit[k].include?(possible_v) }
92
- else
93
- return benefit[k].include?(v)
98
+
99
+ def benefit_matches?(benefit, key, value)
100
+ return benefit_array_matches?(benefit[key], value) if benefit[key].is_a?(Array)
101
+
102
+ return value.include?(benefit[key]) if value.is_a?(Array)
103
+
104
+ medicare_benefit = benefit_medicare?(benefit, key, value) if benefit.medicare?
105
+
106
+ medicare_benefit.nil? ? value == benefit[key] : medicare_benefit
107
+ end
108
+
109
+ def benefit_array_matches?(benefit_array, value)
110
+ if value.is_a?(Array)
111
+ value.any? do |possible_v|
112
+ benefit_array.include?(possible_v)
94
113
  end
95
114
  else
96
- if v.is_a?(Array)
97
- return v.include?(benefit[k])
98
- elsif benefit.medicare?
99
- if :inPlanNetworkIndicatorCode == k.to_sym
100
- return false == benefit.in_plan_network? if 'N' == v
101
- return benefit.in_plan_network? if 'Y' == v
102
- elsif :coverageLevelCode == k.to_sym
103
- return false == benefit.individual? if EligibilityBenefit::INDIVIDUAL != v
104
- return benefit.individual? if EligibilityBenefit::INDIVIDUAL == v
105
- end
106
- end
115
+ benefit_array.include?(value)
116
+ end
117
+ end
118
+
119
+ def benefit_medicare?(benefit, key, value)
120
+ if :inPlanNetworkIndicatorCode == key.to_sym
121
+ return false == benefit.in_plan_network? if 'N' == value
122
+
123
+ benefit.in_plan_network? if 'Y' == value
124
+ elsif :coverageLevelCode == key.to_sym
125
+ return false == benefit.individual? if EligibilityBenefit::INDIVIDUAL != value
107
126
 
108
- return v == benefit[k]
127
+ benefit.individual? if EligibilityBenefit::INDIVIDUAL == value
109
128
  end
110
129
  end
111
130
  end
@@ -1,94 +1,97 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ChangeHealth
2
4
  module Response
3
5
  class EligibilityData < ChangeHealth::Response::ResponseData
4
-
5
6
  ACTIVE = '1'
6
7
  INACTIVE = '6'
7
8
 
8
9
  def active?(service_code: '30')
9
- plan_status(service_code: service_code, single: false).any? {|status| ACTIVE == status['statusCode'] }
10
+ plan_status(service_code: service_code, single: false).any? { |status| ACTIVE == status['statusCode'] }
10
11
  end
11
12
 
12
13
  def inactive?(service_code: '30')
13
- plan_status(service_code: service_code, single: false).any? {|status| INACTIVE == status['statusCode'] }
14
+ plan_status(service_code: service_code, single: false).any? { |status| INACTIVE == status['statusCode'] }
14
15
  end
15
16
 
16
17
  def dependents?
17
- true == self.dependents&.any?
18
+ true == dependents&.any?
18
19
  end
19
20
 
20
- %w(planStatus benefitsInformation controlNumber planDateInformation dependents).each do |v|
21
+ %w[planStatus benefitsInformation controlNumber planDateInformation dependents].each do |v|
21
22
  define_method(v) do
22
- @raw.dig(v)
23
+ @raw[v]
23
24
  end
24
25
  end
25
26
 
26
- %w(eligibilityBegin planBegin service).each do |f|
27
+ %w[eligibilityBegin planBegin service].each do |f|
27
28
  define_method(f) do
28
- return ChangeHealth::Models::PARSE_DATE.call(self.date_info&.dig(f))
29
+ ChangeHealth::Models::PARSE_DATE.call(date_info&.dig(f))
29
30
  end
30
31
  end
31
- alias_method :eligibility_begin_date, :eligibilityBegin
32
- alias_method :plan_begin_date, :planBegin
33
- alias_method :service_date, :service
32
+ alias eligibility_begin_date eligibilityBegin
33
+ alias plan_begin_date planBegin
34
+ alias service_date service
34
35
 
35
36
  def plan_date_range
36
- pd = self.date_info&.dig('plan') || ''
37
+ pd = date_info&.dig('plan') || ''
37
38
  pd.split('-')
38
39
  end
39
40
 
40
41
  def plan_date_range_start
41
- ChangeHealth::Models::PARSE_DATE.call(self.plan_date_range[0])
42
+ ChangeHealth::Models::PARSE_DATE.call(plan_date_range[0])
42
43
  end
43
44
 
44
45
  def plan_date_range_end
45
- ChangeHealth::Models::PARSE_DATE.call(self.plan_date_range[1])
46
+ ChangeHealth::Models::PARSE_DATE.call(plan_date_range[1])
46
47
  end
47
48
 
48
- def plan_status(service_code: , single: true)
49
+ # rubocop:disable Metrics/CyclomaticComplexity
50
+ # rubocop:disable Metrics/PerceivedComplexity
51
+ def plan_status(service_code:, single: true)
49
52
  if true == single
50
- self.planStatus&.find {|plan| plan.dig('serviceTypeCodes')&.include?(service_code) } || {}
53
+ planStatus&.find { |plan| plan['serviceTypeCodes']&.include?(service_code) } || {}
51
54
  else
52
- self.planStatus&.select {|plan| plan.dig('serviceTypeCodes')&.include?(service_code) } || []
55
+ planStatus&.select { |plan| plan['serviceTypeCodes']&.include?(service_code) } || []
53
56
  end
54
57
  end
58
+ # rubocop:enable Metrics/CyclomaticComplexity
59
+ # rubocop:enable Metrics/PerceivedComplexity
55
60
 
56
61
  def benefits
57
- kname = "ChangeHealth::Response::EligibilityBenefits#{self.trading_partner_id&.upcase}"
62
+ kname = "ChangeHealth::Response::EligibilityBenefits#{trading_partner_id&.upcase}"
58
63
  klazz = Object.const_get(kname) if Module.const_defined?(kname)
59
64
  klazz ||= ChangeHealth::Response::EligibilityBenefits
60
65
 
61
- if klazz.respond_to?(:factory)
62
- klazz = klazz.factory(self)
63
- end
66
+ klazz = klazz.factory(self) if klazz.respond_to?(:factory)
64
67
 
65
- klazz.new(self.benefitsInformation || [])
68
+ klazz.new(benefitsInformation || [])
66
69
  end
67
70
 
68
71
  def medicare?(**kwargs)
69
- false == benefits.empty? && benefits.where(**kwargs).all? {|b| b.medicare? }
72
+ false == benefits.empty? && benefits.where(**kwargs).all?(&:medicare?)
70
73
  end
71
74
 
72
75
  def plan?(name)
73
- self.plan_names.any? {|pname| name == pname }
76
+ plan_names.any?(name)
74
77
  end
75
78
 
76
79
  def plan_names
77
- self.planStatus&.map {|plan_status| plan_status['planDetails'] }&.compact || []
80
+ planStatus&.filter_map { |plan_status| plan_status['planDetails'] } || []
78
81
  end
79
82
 
80
83
  def trading_partner?(name)
81
- self.trading_partner_id == name
84
+ trading_partner_id == name
82
85
  end
83
86
 
84
87
  def trading_partner_id
85
88
  @raw['tradingPartnerServiceId']
86
89
  end
87
90
 
88
- alias_method :control_number, :controlNumber
89
- alias_method :benefits_information, :benefitsInformation
90
- alias_method :plan_statuses, :planStatus
91
- alias_method :date_info, :planDateInformation
91
+ alias control_number controlNumber
92
+ alias benefits_information benefitsInformation
93
+ alias plan_statuses planStatus
94
+ alias date_info planDateInformation
92
95
  end
93
96
  end
94
97
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ChangeHealth
2
4
  module Response
3
5
  class Error
@@ -13,16 +15,16 @@ module ChangeHealth
13
15
  'do not resubmit'
14
16
  ].freeze
15
17
 
16
- DOWN_FIELD = 'Http Header'.freeze
18
+ DOWN_FIELD = 'Http Header'
17
19
 
18
- DOWN_MESSAGE = 'Please review http headers for this API, please contact support if you are unsure how to resolve.'.freeze
20
+ DOWN_MESSAGE = 'Please review http headers for this API, please contact support if you are unsure how to resolve.'
19
21
 
20
22
  def initialize(data)
21
23
  @data = data
22
24
  end
23
25
 
24
26
  def message
25
- field_message || code_message || @data.to_s
27
+ field_message || code_message || description || @data.to_s
26
28
  end
27
29
 
28
30
  def field_message
@@ -1,8 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ChangeHealth
2
4
  module Response
3
5
  class ResponseData
4
6
  attr_reader :response, :raw
5
7
 
8
+ # rubocop:disable Lint/SuppressedException
6
9
  def initialize(data: nil, response: nil)
7
10
  @response = response
8
11
  @raw = data
@@ -14,6 +17,7 @@ module ChangeHealth
14
17
 
15
18
  @raw ||= {}
16
19
  end
20
+ # rubocop:enable Lint/SuppressedException
17
21
 
18
22
  def errors?
19
23
  field_error = errors.is_a?(Array) && false == errors.empty?
@@ -22,13 +26,13 @@ module ChangeHealth
22
26
  end
23
27
 
24
28
  def errors
25
- errors = @raw.dig('errors') || []
29
+ errors = @raw['errors'] || []
26
30
 
27
31
  errors.flatten.map { |error| ChangeHealth::Response::Error.new(error) }
28
32
  end
29
33
 
30
34
  def server_error
31
- ChangeHealthException.from_response(@response, msg: 'Request') if @raw.dig('error')
35
+ ChangeHealthException.from_response(@response, msg: 'Request') if @raw['error']
32
36
  end
33
37
 
34
38
  def recommend_retry?
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ChangeHealth
2
4
  module Response
3
5
  class TradingPartnerData
@@ -1,8 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ChangeHealth
2
4
  module Response
3
5
  class TradingPartnersData < Array
4
6
  def initialize(trading_partners)
5
- super(trading_partners.map { |trading_partner| ChangeHealth::Response::TradingPartnerData.new(trading_partner) })
7
+ super(trading_partners.map do |trading_partner|
8
+ ChangeHealth::Response::TradingPartnerData.new(trading_partner)
9
+ end)
6
10
  end
7
11
  end
8
12
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ChangeHealth
2
- VERSION = '6.1.1'.freeze
4
+ VERSION = '6.1.2'
3
5
  end
data/lib/change_health.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'httparty'
2
4
  require 'hashie'
3
5
  require 'change_health/version'
@@ -91,13 +93,13 @@ module ChangeHealth
91
93
  }
92
94
  end
93
95
 
94
- def from_h(h)
95
- self.auth_headers = h[:auth_headers]
96
- self.client_id = h[:client_id]
97
- self.client_secret = h[:client_secret]
98
- self.endpoints = h[:endpoints]
99
- self.grant_type = h[:grant_type]
100
- self.api_endpoint = h[:api_endpoint]
96
+ def from_h(other_hash)
97
+ self.auth_headers = other_hash[:auth_headers]
98
+ self.client_id = other_hash[:client_id]
99
+ self.client_secret = other_hash[:client_secret]
100
+ self.endpoints = other_hash[:endpoints]
101
+ self.grant_type = other_hash[:grant_type]
102
+ self.api_endpoint = other_hash[:api_endpoint]
101
103
 
102
104
  self
103
105
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: change_health
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.1
4
+ version: 6.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Crockett
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-01-30 00:00:00.000000000 Z
11
+ date: 2025-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: httparty
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '0.17'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '0.17'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: hashie
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -39,95 +25,19 @@ dependencies:
39
25
  - !ruby/object:Gem::Version
40
26
  version: '3.5'
41
27
  - !ruby/object:Gem::Dependency
42
- name: bundler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '1'
48
- - - "<"
49
- - !ruby/object:Gem::Version
50
- version: '3'
51
- type: :development
52
- prerelease: false
53
- version_requirements: !ruby/object:Gem::Requirement
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- version: '1'
58
- - - "<"
59
- - !ruby/object:Gem::Version
60
- version: '3'
61
- - !ruby/object:Gem::Dependency
62
- name: byebug
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '11'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '11'
75
- - !ruby/object:Gem::Dependency
76
- name: minitest
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '5.0'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '5.0'
89
- - !ruby/object:Gem::Dependency
90
- name: rake
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '13.0'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '13.0'
103
- - !ruby/object:Gem::Dependency
104
- name: webmock
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '3.1'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: '3.1'
117
- - !ruby/object:Gem::Dependency
118
- name: yard
28
+ name: httparty
119
29
  requirement: !ruby/object:Gem::Requirement
120
30
  requirements:
121
31
  - - "~>"
122
32
  - !ruby/object:Gem::Version
123
- version: '0.9'
124
- type: :development
33
+ version: '0.17'
34
+ type: :runtime
125
35
  prerelease: false
126
36
  version_requirements: !ruby/object:Gem::Requirement
127
37
  requirements:
128
38
  - - "~>"
129
39
  - !ruby/object:Gem::Version
130
- version: '0.9'
40
+ version: '0.17'
131
41
  description:
132
42
  email:
133
43
  - mike.crockett@weinfuse.com
@@ -207,6 +117,7 @@ licenses:
207
117
  - MIT
208
118
  metadata:
209
119
  allowed_push_host: https://rubygems.org
120
+ rubygems_mfa_required: 'true'
210
121
  post_install_message:
211
122
  rdoc_options: []
212
123
  require_paths:
@@ -215,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
215
126
  requirements:
216
127
  - - ">="
217
128
  - !ruby/object:Gem::Version
218
- version: '0'
129
+ version: 2.7.8
219
130
  required_rubygems_version: !ruby/object:Gem::Requirement
220
131
  requirements:
221
132
  - - ">="