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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile +12 -0
- data/Rakefile +2 -0
- data/change_health.gemspec +8 -9
- data/lib/change_health/authentication.rb +20 -16
- data/lib/change_health/change_health_exception.rb +15 -12
- data/lib/change_health/connection.rb +5 -1
- data/lib/change_health/extensions.rb +5 -3
- data/lib/change_health/models/claim/submission/address.rb +2 -0
- data/lib/change_health/models/claim/submission/billing_pay_to_address_name.rb +2 -0
- data/lib/change_health/models/claim/submission/claim_code_information.rb +2 -0
- data/lib/change_health/models/claim/submission/claim_date_information.rb +2 -0
- data/lib/change_health/models/claim/submission/claim_information.rb +2 -0
- data/lib/change_health/models/claim/submission/claim_supplemental_information.rb +2 -0
- data/lib/change_health/models/claim/submission/contact_information.rb +2 -0
- data/lib/change_health/models/claim/submission/dependent.rb +2 -0
- data/lib/change_health/models/claim/submission/diagnosis.rb +2 -0
- data/lib/change_health/models/claim/submission/drug_identification.rb +2 -0
- data/lib/change_health/models/claim/submission/institutional_service.rb +2 -0
- data/lib/change_health/models/claim/submission/line_adjudication_information.rb +2 -0
- data/lib/change_health/models/claim/submission/other_payer_name.rb +2 -0
- data/lib/change_health/models/claim/submission/other_subscriber_information.rb +2 -0
- data/lib/change_health/models/claim/submission/other_subscriber_name.rb +2 -0
- data/lib/change_health/models/claim/submission/professional_service.rb +2 -0
- data/lib/change_health/models/claim/submission/provider.rb +2 -0
- data/lib/change_health/models/claim/submission/receiver.rb +2 -0
- data/lib/change_health/models/claim/submission/report_information.rb +2 -0
- data/lib/change_health/models/claim/submission/service_facility_location.rb +2 -0
- data/lib/change_health/models/claim/submission/service_line.rb +2 -0
- data/lib/change_health/models/claim/submission/submitter.rb +2 -0
- data/lib/change_health/models/claim/submission/subscriber.rb +2 -0
- data/lib/change_health/models/eligibility/encounter.rb +5 -3
- data/lib/change_health/models/eligibility/provider.rb +3 -1
- data/lib/change_health/models/eligibility/subscriber.rb +4 -1
- data/lib/change_health/models/model.rb +20 -8
- data/lib/change_health/models/trading_partner/trading_partner.rb +2 -0
- data/lib/change_health/request/eligibility.rb +9 -6
- data/lib/change_health/request/report.rb +12 -2
- data/lib/change_health/request/submission.rb +10 -8
- data/lib/change_health/request/trading_partner.rb +4 -2
- data/lib/change_health/response/claim/report/report_277_claim.rb +2 -0
- data/lib/change_health/response/claim/report/report_277_data.rb +87 -48
- data/lib/change_health/response/claim/report/report_277_info_claim_status.rb +2 -0
- data/lib/change_health/response/claim/report/report_277_info_status.rb +2 -0
- data/lib/change_health/response/claim/report/report_835_claim.rb +2 -0
- data/lib/change_health/response/claim/report/report_835_data.rb +31 -14
- data/lib/change_health/response/claim/report/report_835_health_care_check_remark_code.rb +2 -0
- data/lib/change_health/response/claim/report/report_835_payment.rb +2 -0
- data/lib/change_health/response/claim/report/report_835_provider_adjustment.rb +2 -0
- data/lib/change_health/response/claim/report/report_835_service_adjustment.rb +2 -0
- data/lib/change_health/response/claim/report/report_835_service_line.rb +2 -0
- data/lib/change_health/response/claim/report/report_claim.rb +2 -0
- data/lib/change_health/response/claim/report/report_data.rb +4 -1
- data/lib/change_health/response/claim/report/report_list_data.rb +3 -3
- data/lib/change_health/response/claim/submission/submission_data.rb +8 -8
- data/lib/change_health/response/eligibility/eligibility_benefit.rb +38 -35
- data/lib/change_health/response/eligibility/eligibility_benefits.rb +66 -47
- data/lib/change_health/response/eligibility/eligibility_data.rb +33 -30
- data/lib/change_health/response/error.rb +5 -3
- data/lib/change_health/response/response_data.rb +6 -2
- data/lib/change_health/response/trading_partner/trading_partner_data.rb +2 -0
- data/lib/change_health/response/trading_partner/trading_partners_data.rb +5 -1
- data/lib/change_health/version.rb +3 -1
- data/lib/change_health.rb +9 -7
- 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(
|
15
|
+
self.class.new(reject { |benefit| kwargs.all? { |k, v| benefit_matches?(benefit, k, v) } })
|
14
16
|
end
|
15
17
|
|
16
|
-
def +(
|
17
|
-
self.class.new(
|
18
|
+
def +(other)
|
19
|
+
self.class.new(to_a + other.to_a)
|
18
20
|
end
|
19
21
|
|
20
22
|
def find_by(**kwargs)
|
21
|
-
|
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
|
-
|
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
|
-
|
33
|
+
where(key => value)
|
32
34
|
end
|
33
35
|
end
|
34
36
|
end
|
35
37
|
|
36
|
-
|
38
|
+
# rubocop:disable Metrics/BlockLength
|
39
|
+
%w[family individual employee child employee_and_child].each do |method|
|
37
40
|
define_method(method) do
|
38
|
-
|
41
|
+
send("#{method}s")
|
39
42
|
end
|
40
43
|
|
41
|
-
%w
|
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
|
-
|
52
|
+
send(method).send("#{type_mod}s").where(**kwargs).first
|
46
53
|
end
|
47
54
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
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
|
-
|
56
|
-
|
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
|
-
|
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
|
72
|
+
if 'out_of_pocket' == type_mod
|
64
73
|
define_method(method_name.gsub('out_of_pocket', 'oop')) do |**kwargs|
|
65
|
-
|
74
|
+
send(method_name, **kwargs)
|
66
75
|
end
|
67
76
|
|
68
|
-
if
|
77
|
+
if 'year' == time_mod
|
69
78
|
define_method(method_name.gsub('out_of_pocket', 'oop').gsub('year', 'total')) do |**kwargs|
|
70
|
-
|
79
|
+
send(method_name, **kwargs)
|
71
80
|
end
|
72
81
|
end
|
73
82
|
end
|
74
83
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
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
|
-
|
85
|
-
|
94
|
+
alias oops out_of_pockets
|
95
|
+
alias copays copayments
|
86
96
|
|
87
97
|
private
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
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
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
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
|
-
|
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 ==
|
18
|
+
true == dependents&.any?
|
18
19
|
end
|
19
20
|
|
20
|
-
%w
|
21
|
+
%w[planStatus benefitsInformation controlNumber planDateInformation dependents].each do |v|
|
21
22
|
define_method(v) do
|
22
|
-
@raw
|
23
|
+
@raw[v]
|
23
24
|
end
|
24
25
|
end
|
25
26
|
|
26
|
-
%w
|
27
|
+
%w[eligibilityBegin planBegin service].each do |f|
|
27
28
|
define_method(f) do
|
28
|
-
|
29
|
+
ChangeHealth::Models::PARSE_DATE.call(date_info&.dig(f))
|
29
30
|
end
|
30
31
|
end
|
31
|
-
|
32
|
-
|
33
|
-
|
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 =
|
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(
|
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(
|
46
|
+
ChangeHealth::Models::PARSE_DATE.call(plan_date_range[1])
|
46
47
|
end
|
47
48
|
|
48
|
-
|
49
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
50
|
+
# rubocop:disable Metrics/PerceivedComplexity
|
51
|
+
def plan_status(service_code:, single: true)
|
49
52
|
if true == single
|
50
|
-
|
53
|
+
planStatus&.find { |plan| plan['serviceTypeCodes']&.include?(service_code) } || {}
|
51
54
|
else
|
52
|
-
|
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#{
|
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(
|
68
|
+
klazz.new(benefitsInformation || [])
|
66
69
|
end
|
67
70
|
|
68
71
|
def medicare?(**kwargs)
|
69
|
-
false == benefits.empty? && benefits.where(**kwargs).all?
|
72
|
+
false == benefits.empty? && benefits.where(**kwargs).all?(&:medicare?)
|
70
73
|
end
|
71
74
|
|
72
75
|
def plan?(name)
|
73
|
-
|
76
|
+
plan_names.any?(name)
|
74
77
|
end
|
75
78
|
|
76
79
|
def plan_names
|
77
|
-
|
80
|
+
planStatus&.filter_map { |plan_status| plan_status['planDetails'] } || []
|
78
81
|
end
|
79
82
|
|
80
83
|
def trading_partner?(name)
|
81
|
-
|
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
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
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'
|
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.'
|
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
|
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
|
35
|
+
ChangeHealthException.from_response(@response, msg: 'Request') if @raw['error']
|
32
36
|
end
|
33
37
|
|
34
38
|
def recommend_retry?
|
@@ -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
|
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
|
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(
|
95
|
-
self.auth_headers =
|
96
|
-
self.client_id =
|
97
|
-
self.client_secret =
|
98
|
-
self.endpoints =
|
99
|
-
self.grant_type =
|
100
|
-
self.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.
|
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-
|
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:
|
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.
|
124
|
-
type: :
|
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.
|
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:
|
129
|
+
version: 2.7.8
|
219
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
220
131
|
requirements:
|
221
132
|
- - ">="
|