minfraud 1.6.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -20
  3. data/CHANGELOG.md +48 -1
  4. data/Gemfile +0 -9
  5. data/README.md +2 -2
  6. data/lib/minfraud/assessments.rb +21 -16
  7. data/lib/minfraud/components/account.rb +1 -1
  8. data/lib/minfraud/components/billing.rb +1 -1
  9. data/lib/minfraud/components/credit_card.rb +1 -1
  10. data/lib/minfraud/components/custom_inputs.rb +1 -1
  11. data/lib/minfraud/components/device.rb +1 -1
  12. data/lib/minfraud/components/email.rb +1 -1
  13. data/lib/minfraud/components/event.rb +11 -11
  14. data/lib/minfraud/components/order.rb +1 -1
  15. data/lib/minfraud/components/payment.rb +152 -142
  16. data/lib/minfraud/components/report/transaction.rb +2 -2
  17. data/lib/minfraud/components/shipping.rb +2 -2
  18. data/lib/minfraud/components/shopping_cart.rb +1 -1
  19. data/lib/minfraud/components/shopping_cart_item.rb +3 -3
  20. data/lib/minfraud/http_service/response.rb +28 -21
  21. data/lib/minfraud/model/device.rb +1 -1
  22. data/lib/minfraud/model/disposition.rb +3 -3
  23. data/lib/minfraud/model/ip_address.rb +4 -47
  24. data/lib/minfraud/model/score.rb +1 -1
  25. data/lib/minfraud/model/subscores.rb +0 -22
  26. data/lib/minfraud/report.rb +19 -11
  27. data/lib/minfraud/validates.rb +2 -2
  28. data/lib/minfraud/version.rb +1 -1
  29. data/lib/minfraud.rb +18 -24
  30. data/minfraud.gemspec +8 -5
  31. metadata +21 -47
  32. data/lib/maxmind/geoip2/model/city.rb +0 -99
  33. data/lib/maxmind/geoip2/model/country.rb +0 -94
  34. data/lib/maxmind/geoip2/model/insights.rb +0 -38
  35. data/lib/maxmind/geoip2/record/abstract.rb +0 -46
  36. data/lib/maxmind/geoip2/record/city.rb +0 -62
  37. data/lib/maxmind/geoip2/record/continent.rb +0 -61
  38. data/lib/maxmind/geoip2/record/country.rb +0 -78
  39. data/lib/maxmind/geoip2/record/location.rb +0 -97
  40. data/lib/maxmind/geoip2/record/maxmind.rb +0 -41
  41. data/lib/maxmind/geoip2/record/place.rb +0 -52
  42. data/lib/maxmind/geoip2/record/postal.rb +0 -54
  43. data/lib/maxmind/geoip2/record/represented_country.rb +0 -47
  44. data/lib/maxmind/geoip2/record/subdivision.rb +0 -72
  45. data/lib/maxmind/geoip2/record/traits.rb +0 -233
  46. data/lib/minfraud/http_service/request.rb +0 -38
  47. data/lib/minfraud/http_service.rb +0 -45
@@ -4,7 +4,7 @@ module Minfraud
4
4
  module Components
5
5
  # Shipping corresponds to the shipping object of a minFraud request.
6
6
  #
7
- # @see https://dev.maxmind.com/minfraud/#Shipping_(/shipping)
7
+ # @see https://dev.maxmind.com/minfraud/api-documentation/requests?lang=en#schema--request--shipping
8
8
  class Shipping < Addressable
9
9
  include ::Minfraud::Enum
10
10
 
@@ -14,7 +14,7 @@ module Minfraud
14
14
  # @!attribute delivery_speed
15
15
  #
16
16
  # @return [Symbol, nil]
17
- enum_accessor :delivery_speed, [:same_day, :overnight, :expedited, :standard]
17
+ enum_accessor :delivery_speed, %i[same_day overnight expedited standard]
18
18
 
19
19
  # @param params [Hash] Hash of parameters. Each key/value should
20
20
  # correspond to one of the available attributes.
@@ -5,7 +5,7 @@ module Minfraud
5
5
  # ShoppingCart corresponds to the shopping_cart object of a minFraud
6
6
  # request.
7
7
  #
8
- # @see https://dev.maxmind.com/minfraud/#Shopping_Cart_(/shoppingcart)
8
+ # @see https://dev.maxmind.com/minfraud/api-documentation/requests?lang=en#schema--request--shopping-cart
9
9
  class ShoppingCart < Base
10
10
  # An array of Minfraud::Components::ShoppingCartItem instances.
11
11
  #
@@ -5,20 +5,20 @@ module Minfraud
5
5
  # ShoppingCartItem corresponds to objects in the shopping_cart object
6
6
  # of a minFraud request.
7
7
  #
8
- # @see https://dev.maxmind.com/minfraud/#Shopping_Cart_Item
8
+ # @see https://dev.maxmind.com/minfraud/api-documentation/requests?lang=en#schema--request--shopping-cart--item
9
9
  class ShoppingCartItem < Base
10
10
  include Minfraud::Validates
11
11
 
12
12
  # The category of the item. This can also be a hashed value; see link.
13
13
  #
14
- # @see https://dev.maxmind.com/minfraud/#cart-hashing
14
+ # @see https://dev.maxmind.com/minfraud/api-documentation/requests?lang=en#schema--request--shopping-cart--item__category
15
15
  #
16
16
  # @return [String, nil]
17
17
  attr_accessor :category
18
18
 
19
19
  # The internal ID of the item. This can also be a hashed value; see link.
20
20
  #
21
- # @see https://dev.maxmind.com/minfraud/#cart-hashing
21
+ # @see https://dev.maxmind.com/minfraud/api-documentation/requests?lang=en#schema--request--shopping-cart--item__item_id
22
22
  #
23
23
  # @return [String, nil]
24
24
  attr_accessor :item_id
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'json'
3
4
  require 'minfraud/model/error'
4
5
  require 'minfraud/model/factors'
5
6
  require 'minfraud/model/insights'
@@ -9,32 +10,35 @@ module Minfraud
9
10
  module HTTPService
10
11
  # Response class for HTTP requests.
11
12
  class Response
12
- # HTTP response status.
13
+ # Response HTTP status code.
13
14
  #
14
- # @return [Integer, nil]
15
+ # @return [Fixnum, nil]
15
16
  attr_reader :status
16
17
 
17
- # HTTP response model.
18
+ # Response model.
18
19
  #
19
20
  # @return [Minfraud::Model::Score, Minfraud::Model::Insights,
20
21
  # Minfraud::Model::Factors, nil]
21
22
  attr_reader :body
22
23
 
23
- # HTTP response headers.
24
+ # @param endpoint [Symbol, nil] endpoint name, like :score.
24
25
  #
25
- # @return [Hash, nil]
26
- attr_reader :headers
26
+ # @param locales [Array<String>, nil] locales, like ["en"].
27
+ #
28
+ # @param response [HTTP::Response] the response object.
29
+ #
30
+ # @param body [String] the response body.
31
+ #
32
+ # @raise [JSON::ParserError] if there was invalid JSON in the response.
33
+ def initialize(endpoint, locales, response, body)
34
+ @status = response.code
27
35
 
28
- # @param params [Hash] Hash of parameters. +:status+, +:endpoint+,
29
- # +:body+, +:locales+, and +:headers+ are used.
30
- def initialize(params = {})
31
- @status = params[:status]
32
- @body = make_body(
33
- params[:endpoint],
34
- params[:body],
35
- params[:locales]
36
+ @body = make_body(
37
+ endpoint,
38
+ locales,
39
+ response,
40
+ body,
36
41
  )
37
- @headers = params[:headers]
38
42
  end
39
43
 
40
44
  # Return the minFraud-specific response code.
@@ -48,15 +52,18 @@ module Minfraud
48
52
 
49
53
  private
50
54
 
51
- def make_body(endpoint, body, locales)
52
- if @status != 200
53
- # Won't be a Hash when the body is not JSON.
54
- return nil unless body.is_a?(Hash)
55
+ def make_body(endpoint, locales, response, body)
56
+ if !response.mime_type || !response.mime_type.match(/json/i)
57
+ return nil
58
+ end
59
+
60
+ h = JSON.parse(body)
55
61
 
56
- return Minfraud::Model::Error.new(body)
62
+ if @status != 200
63
+ return Minfraud::Model::Error.new(h)
57
64
  end
58
65
 
59
- ENDPOINT_TO_CLASS[endpoint].new(body, locales)
66
+ ENDPOINT_TO_CLASS[endpoint].new(h, locales)
60
67
  end
61
68
 
62
69
  ENDPOINT_TO_CLASS = {
@@ -8,7 +8,7 @@ module Minfraud
8
8
  #
9
9
  # In order to receive device output from minFraud Insights or minFraud
10
10
  # Factors, you must be using the Device Tracking Add-on
11
- # (https://dev.maxmind.com/minfraud/device/).
11
+ # (https://dev.maxmind.com/minfraud/track-devices?lang=en).
12
12
  class Device < Abstract
13
13
  # This number represents our confidence that the device_id refers to a
14
14
  # unique device as opposed to a cluster of similar devices. A confidence
@@ -11,14 +11,14 @@ module Minfraud
11
11
  class Disposition < Abstract
12
12
  # The action to take on the transaction as defined by your custom rules.
13
13
  # The current set of values are "accept", "manual_review", "reject", and
14
- # "test". If you do not have custom rules set up, this will be nil.
14
+ # "test". If you do not have custom rules set up, this will be nil.
15
15
  #
16
16
  # @return [String, nil]
17
17
  attr_reader :action
18
18
 
19
19
  # The reason for the action. The current possible values are
20
- # "custom_rule", "block_list", and "default". If you do not have custom
21
- # rules set up, this will be nil.
20
+ # "custom_rule" and "default". If you do not have custom rules set up,
21
+ # this will be nil.
22
22
  #
23
23
  # @return [String, nil]
24
24
  attr_reader :reason
@@ -41,61 +41,18 @@ module Minfraud
41
41
  end
42
42
 
43
43
  @risk_reasons = []
44
- if record && record.key?('risk_reasons')
44
+ if record&.key?('risk_reasons')
45
45
  record['risk_reasons'].each do |r|
46
46
  @risk_reasons << Minfraud::Model::IPRiskReason.new(r)
47
47
  end
48
48
  end
49
49
 
50
- # Decorate objects with deprecated attributes and names for backwards
51
- # compatibility. Do this here rather than with the overhead of
52
- # subclasses/modules for them in the hope that one day we can delete
53
- # them.
54
-
55
- # These are named differently in maxmind-geoip2.
56
- @country.define_singleton_method(:is_in_european_union) { in_european_union? }
57
- @registered_country.define_singleton_method(:is_in_european_union) { in_european_union? }
58
- @represented_country.define_singleton_method(:is_in_european_union) { in_european_union? }
59
- @traits.define_singleton_method(:is_anonymous) { anonymous? }
60
- @traits.define_singleton_method(:is_anonymous_vpn) { anonymous_vpn? }
61
- @traits.define_singleton_method(:is_hosting_provider) { hosting_provider? }
62
- @traits.define_singleton_method(:is_public_proxy) { public_proxy? }
63
- @traits.define_singleton_method(:is_tor_exit_node) { tor_exit_node? }
64
-
65
- # Mashify turned each language code into an attribute, but
66
- # maxmind-geoip2 exposes the names as a hash.
67
- LANGUAGE_CODES.each do |c|
68
- if @city.names
69
- @city.names.define_singleton_method(c) { fetch(c.to_s, nil) }
70
- end
71
- if @continent.names
72
- @continent.names.define_singleton_method(c) { fetch(c.to_s, nil) }
73
- end
74
- if @country.names
75
- @country.names.define_singleton_method(c) { fetch(c.to_s, nil) }
76
- end
77
- if @registered_country.names
78
- @registered_country.names.define_singleton_method(c) { fetch(c.to_s, nil) }
79
- end
80
- if @represented_country.names
81
- @represented_country.names.define_singleton_method(c) { fetch(c.to_s, nil) }
82
- end
83
- @subdivisions.each do |s|
84
- if s.names
85
- s.names.define_singleton_method(c) { fetch(c.to_s, nil) }
86
- end
87
- end
88
- end
89
-
90
- # This attribute is deprecated.
91
- @country.define_singleton_method(:is_high_risk) { get('is_high_risk') }
92
-
93
- # These attributes are deprecated and aren't in maxmind-geoip2.
50
+ # These attributes are deprecated and aren't in maxmind-geoip2. The
51
+ # webservice still sends them as of writing, so we'd like to keep them
52
+ # for now as they could still be providing value.
94
53
  @traits.define_singleton_method(:is_anonymous_proxy) { get('is_anonymous_proxy') }
95
54
  @traits.define_singleton_method(:is_satellite_provider) { get('is_satellite_provider') }
96
55
  end
97
-
98
- LANGUAGE_CODES = [:de, :en, :es, :fr, :ja, :'pt-BR', :ru, :'zh-CN'].freeze
99
56
  end
100
57
  end
101
58
  end
@@ -65,7 +65,7 @@ module Minfraud
65
65
  @queries_remaining = get('queries_remaining')
66
66
  @risk_score = get('risk_score')
67
67
  @warnings = []
68
- if record && record.key?('warnings')
68
+ if record&.key?('warnings')
69
69
  record['warnings'].each do |w|
70
70
  @warnings << Minfraud::Model::Warning.new(w)
71
71
  end
@@ -84,26 +84,6 @@ module Minfraud
84
84
  # @return [Float, nil]
85
85
  attr_reader :email_local_part
86
86
 
87
- # The risk associated with the issuer ID number on the email domain. If
88
- # present, this is a value in the range 0.01 to 99.
89
- #
90
- # Deprecated effective August 29, 2019. This subscore will default to 1
91
- # and will be removed in a future release. The user tenure on email is
92
- # reflected in the /subscores/email_address output.
93
- #
94
- # @return [Float, nil]
95
- attr_reader :email_tenure
96
-
97
- # The risk associated with the issuer ID number on the IP address. If
98
- # present, this is a value in the range 0.01 to 99.
99
- #
100
- # Deprecated effective August 29, 2019. This subscore will default to 1
101
- # and will be removed in a future release. The IP tenure is reflected in
102
- # the overall risk score.
103
- #
104
- # @return [Float, nil]
105
- attr_reader :ip_tenure
106
-
107
87
  # The risk associated with the particular issuer ID number (IIN) given
108
88
  # the billing location and the history of usage of the IIN on your
109
89
  # account and shop ID. If present, this is a value in the range 0.01 to
@@ -162,8 +142,6 @@ module Minfraud
162
142
  @email_address = get('email_address')
163
143
  @email_domain = get('email_domain')
164
144
  @email_local_part = get('email_local_part')
165
- @email_tenure = get('email_tenure')
166
- @ip_tenure = get('ip_tenure')
167
145
  @issuer_id_number = get('issuer_id_number')
168
146
  @order_amount = get('order_amount')
169
147
  @phone_number = get('phone_number')
@@ -3,10 +3,8 @@
3
3
  module Minfraud
4
4
  # Report is used to perform minFraud Report Transaction API requests.
5
5
  #
6
- # @see https://dev.maxmind.com/minfraud/report-transaction/
6
+ # @see https://dev.maxmind.com/minfraud/report-a-transaction?lang=en
7
7
  class Report
8
- include ::Minfraud::HTTPService
9
-
10
8
  # The Report::Transaction component.
11
9
  #
12
10
  # @return [Minfraud::Components::Report::Transaction, nil]
@@ -23,6 +21,8 @@ module Minfraud
23
21
  #
24
22
  # @return [nil]
25
23
  #
24
+ # @raise [JSON::ParserError] if there was invalid JSON in the response.
25
+ #
26
26
  # @raise [Minfraud::AuthorizationError] If there was an authentication
27
27
  # problem.
28
28
  #
@@ -32,16 +32,24 @@ module Minfraud
32
32
  # @raise [Minfraud::ServerError] If the server reported an error of some
33
33
  # kind.
34
34
  def report_transaction
35
- raw = request.perform(
36
- verb: :post,
37
- endpoint: 'transactions/report',
38
- body: @transaction.to_json,
39
- )
35
+ response = nil
36
+ body = nil
37
+ Minfraud.connection_pool.with do |client|
38
+ response = client.post(
39
+ '/minfraud/v2.0/transactions/report',
40
+ json: @transaction.to_json,
41
+ )
42
+
43
+ body = response.to_s
44
+ end
40
45
 
46
+ endpoint = nil
47
+ locales = nil
41
48
  response = ::Minfraud::HTTPService::Response.new(
42
- status: raw.status.to_i,
43
- body: raw.body,
44
- headers: raw.headers
49
+ endpoint,
50
+ locales,
51
+ response,
52
+ body,
45
53
  )
46
54
 
47
55
  ::Minfraud::ErrorHandler.examine(response)
@@ -114,7 +114,7 @@ module Minfraud
114
114
  raise InvalidInputError, "The #{field} value is not valid. It must be numeric."
115
115
  end
116
116
 
117
- if value < 0 || value > 1e13 - 1
117
+ if value.negative? || value > 1e13 - 1
118
118
  raise InvalidInputError, "The #{field} value is not valid. It must be at least 0 and at most 1e13 - 1."
119
119
  end
120
120
  end
@@ -126,7 +126,7 @@ module Minfraud
126
126
  raise InvalidInputError, "The #{field} is not valid. It must be an integer."
127
127
  end
128
128
 
129
- if value < 0 || value > 1e13 - 1
129
+ if value.negative? || value > 1e13 - 1
130
130
  raise InvalidInputError, "The #{field} is not valid. It must be at least 0 and at most 1e13 - 1."
131
131
  end
132
132
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Minfraud
4
4
  # The Gem version.
5
- VERSION = '1.6.0'
5
+ VERSION = '2.0.0'
6
6
  end
data/lib/minfraud.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'faraday'
3
+ require 'connection_pool'
4
+ require 'http'
4
5
  require 'minfraud'
5
6
  require 'minfraud/enum'
6
7
  require 'minfraud/validates'
@@ -22,8 +23,6 @@ require 'minfraud/components/shopping_cart_item'
22
23
  require 'minfraud/resolver'
23
24
  require 'minfraud/version'
24
25
  require 'minfraud/errors'
25
- require 'minfraud/http_service'
26
- require 'minfraud/http_service/request'
27
26
  require 'minfraud/http_service/response'
28
27
  require 'minfraud/error_handler'
29
28
  require 'minfraud/assessments'
@@ -48,21 +47,13 @@ module Minfraud
48
47
  # @return [String, nil]
49
48
  attr_accessor :host
50
49
 
51
- # The MaxMind account ID that is used for authorization.
52
- #
53
- # @deprecated Use {::account_id} instead. This will be removed in the next
54
- # major version.
55
- #
56
- # @return [Integer, nil]
57
- attr_accessor :user_id
58
-
59
50
  # The MaxMind license key that is used for authorization.
60
51
  #
61
52
  # @return [String, nil]
62
53
  attr_accessor :license_key
63
54
 
64
55
  # @!visibility private
65
- attr_reader :connection
56
+ attr_reader :connection_pool
66
57
 
67
58
  # Yield self to accept configuration settings.
68
59
  #
@@ -70,20 +61,23 @@ module Minfraud
70
61
  def configure
71
62
  yield self
72
63
 
73
- config = Minfraud::HTTPService.configuration
74
- @connection = Faraday.new(config[:server], {}, &config[:middleware])
64
+ pool_size = 5
65
+ host = @host.nil? ? 'minfraud.maxmind.com' : @host
66
+ @connection_pool = ConnectionPool.new(size: pool_size) do
67
+ make_http_client.persistent("https://#{host}")
68
+ end
75
69
  end
76
70
 
77
- # The current Minfraud configuration.
78
- #
79
- # @deprecated This will be removed in the next major version.
80
- #
81
- # @return [Hash]
82
- def configuration
83
- {
84
- user_id: @user_id,
85
- license_key: @license_key
86
- }
71
+ private
72
+
73
+ def make_http_client
74
+ HTTP.basic_auth(
75
+ user: @account_id,
76
+ pass: @license_key,
77
+ ).headers(
78
+ accept: 'application/json',
79
+ user_agent: "minfraud-api-ruby/#{Minfraud::VERSION}",
80
+ )
87
81
  end
88
82
  end
89
83
  end
data/minfraud.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('lib', File.dirname(File.realpath(__FILE__)))
3
+ lib = File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
6
  require 'minfraud/version'
@@ -8,7 +8,7 @@ require 'minfraud/version'
8
8
  Gem::Specification.new do |spec|
9
9
  spec.name = 'minfraud'
10
10
  spec.version = Minfraud::VERSION
11
- spec.authors = ['kushnir.yb']
11
+ spec.authors = ['kushnir.yb', 'William Storey']
12
12
  spec.email = ['support@maxmind.com']
13
13
 
14
14
  spec.summary = 'Ruby API for the minFraud Score, Insights, Factors, and Report Transactions services'
@@ -22,9 +22,9 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ['lib']
24
24
 
25
- spec.add_runtime_dependency 'faraday', '>= 0.9.1', '< 2.0'
26
- spec.add_runtime_dependency 'faraday_middleware', '>= 0.9.1', '< 2.0'
27
- spec.add_runtime_dependency 'net-http-persistent', '>= 2.0.0', '< 5.0'
25
+ spec.add_runtime_dependency 'connection_pool', '~> 2.2'
26
+ spec.add_runtime_dependency 'http', '>= 4.3', '< 6.0'
27
+ spec.add_runtime_dependency 'maxmind-geoip2', '~> 1.1'
28
28
  spec.add_runtime_dependency 'simpleidn', '>= 0.1.1'
29
29
 
30
30
  spec.add_development_dependency 'bundler', '>= 1.16'
@@ -32,4 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency 'rspec', '~> 3.0'
33
33
  spec.add_development_dependency 'rubocop'
34
34
  spec.add_development_dependency 'webmock'
35
+ spec.metadata = {
36
+ 'rubygems_mfa_required' => 'true'
37
+ }
35
38
  end
metadata CHANGED
@@ -1,75 +1,64 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minfraud
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - kushnir.yb
8
+ - William Storey
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2021-08-19 00:00:00.000000000 Z
12
+ date: 2021-12-06 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: faraday
15
+ name: connection_pool
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 0.9.1
20
- - - "<"
18
+ - - "~>"
21
19
  - !ruby/object:Gem::Version
22
- version: '2.0'
20
+ version: '2.2'
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
24
  requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 0.9.1
30
- - - "<"
25
+ - - "~>"
31
26
  - !ruby/object:Gem::Version
32
- version: '2.0'
27
+ version: '2.2'
33
28
  - !ruby/object:Gem::Dependency
34
- name: faraday_middleware
29
+ name: http
35
30
  requirement: !ruby/object:Gem::Requirement
36
31
  requirements:
37
32
  - - ">="
38
33
  - !ruby/object:Gem::Version
39
- version: 0.9.1
34
+ version: '4.3'
40
35
  - - "<"
41
36
  - !ruby/object:Gem::Version
42
- version: '2.0'
37
+ version: '6.0'
43
38
  type: :runtime
44
39
  prerelease: false
45
40
  version_requirements: !ruby/object:Gem::Requirement
46
41
  requirements:
47
42
  - - ">="
48
43
  - !ruby/object:Gem::Version
49
- version: 0.9.1
44
+ version: '4.3'
50
45
  - - "<"
51
46
  - !ruby/object:Gem::Version
52
- version: '2.0'
47
+ version: '6.0'
53
48
  - !ruby/object:Gem::Dependency
54
- name: net-http-persistent
49
+ name: maxmind-geoip2
55
50
  requirement: !ruby/object:Gem::Requirement
56
51
  requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- version: 2.0.0
60
- - - "<"
52
+ - - "~>"
61
53
  - !ruby/object:Gem::Version
62
- version: '5.0'
54
+ version: '1.1'
63
55
  type: :runtime
64
56
  prerelease: false
65
57
  version_requirements: !ruby/object:Gem::Requirement
66
58
  requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: 2.0.0
70
- - - "<"
59
+ - - "~>"
71
60
  - !ruby/object:Gem::Version
72
- version: '5.0'
61
+ version: '1.1'
73
62
  - !ruby/object:Gem::Dependency
74
63
  name: simpleidn
75
64
  requirement: !ruby/object:Gem::Requirement
@@ -176,20 +165,6 @@ files:
176
165
  - Rakefile
177
166
  - bin/console
178
167
  - bin/setup
179
- - lib/maxmind/geoip2/model/city.rb
180
- - lib/maxmind/geoip2/model/country.rb
181
- - lib/maxmind/geoip2/model/insights.rb
182
- - lib/maxmind/geoip2/record/abstract.rb
183
- - lib/maxmind/geoip2/record/city.rb
184
- - lib/maxmind/geoip2/record/continent.rb
185
- - lib/maxmind/geoip2/record/country.rb
186
- - lib/maxmind/geoip2/record/location.rb
187
- - lib/maxmind/geoip2/record/maxmind.rb
188
- - lib/maxmind/geoip2/record/place.rb
189
- - lib/maxmind/geoip2/record/postal.rb
190
- - lib/maxmind/geoip2/record/represented_country.rb
191
- - lib/maxmind/geoip2/record/subdivision.rb
192
- - lib/maxmind/geoip2/record/traits.rb
193
168
  - lib/minfraud.rb
194
169
  - lib/minfraud/assessments.rb
195
170
  - lib/minfraud/components/account.rb
@@ -210,8 +185,6 @@ files:
210
185
  - lib/minfraud/enum.rb
211
186
  - lib/minfraud/error_handler.rb
212
187
  - lib/minfraud/errors.rb
213
- - lib/minfraud/http_service.rb
214
- - lib/minfraud/http_service/request.rb
215
188
  - lib/minfraud/http_service/response.rb
216
189
  - lib/minfraud/model/abstract.rb
217
190
  - lib/minfraud/model/address.rb
@@ -241,7 +214,8 @@ files:
241
214
  homepage: https://github.com/maxmind/minfraud-api-ruby
242
215
  licenses:
243
216
  - MIT
244
- metadata: {}
217
+ metadata:
218
+ rubygems_mfa_required: 'true'
245
219
  post_install_message:
246
220
  rdoc_options: []
247
221
  require_paths:
@@ -257,7 +231,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
257
231
  - !ruby/object:Gem::Version
258
232
  version: '0'
259
233
  requirements: []
260
- rubygems_version: 3.1.2
234
+ rubygems_version: 3.2.22
261
235
  signing_key:
262
236
  specification_version: 4
263
237
  summary: Ruby API for the minFraud Score, Insights, Factors, and Report Transactions