minfraud 1.6.0 → 2.0.0
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/.rubocop.yml +1 -20
- data/CHANGELOG.md +48 -1
- data/Gemfile +0 -9
- data/README.md +2 -2
- data/lib/minfraud/assessments.rb +21 -16
- data/lib/minfraud/components/account.rb +1 -1
- data/lib/minfraud/components/billing.rb +1 -1
- data/lib/minfraud/components/credit_card.rb +1 -1
- data/lib/minfraud/components/custom_inputs.rb +1 -1
- data/lib/minfraud/components/device.rb +1 -1
- data/lib/minfraud/components/email.rb +1 -1
- data/lib/minfraud/components/event.rb +11 -11
- data/lib/minfraud/components/order.rb +1 -1
- data/lib/minfraud/components/payment.rb +152 -142
- data/lib/minfraud/components/report/transaction.rb +2 -2
- data/lib/minfraud/components/shipping.rb +2 -2
- data/lib/minfraud/components/shopping_cart.rb +1 -1
- data/lib/minfraud/components/shopping_cart_item.rb +3 -3
- data/lib/minfraud/http_service/response.rb +28 -21
- data/lib/minfraud/model/device.rb +1 -1
- data/lib/minfraud/model/disposition.rb +3 -3
- data/lib/minfraud/model/ip_address.rb +4 -47
- data/lib/minfraud/model/score.rb +1 -1
- data/lib/minfraud/model/subscores.rb +0 -22
- data/lib/minfraud/report.rb +19 -11
- data/lib/minfraud/validates.rb +2 -2
- data/lib/minfraud/version.rb +1 -1
- data/lib/minfraud.rb +18 -24
- data/minfraud.gemspec +8 -5
- metadata +21 -47
- data/lib/maxmind/geoip2/model/city.rb +0 -99
- data/lib/maxmind/geoip2/model/country.rb +0 -94
- data/lib/maxmind/geoip2/model/insights.rb +0 -38
- data/lib/maxmind/geoip2/record/abstract.rb +0 -46
- data/lib/maxmind/geoip2/record/city.rb +0 -62
- data/lib/maxmind/geoip2/record/continent.rb +0 -61
- data/lib/maxmind/geoip2/record/country.rb +0 -78
- data/lib/maxmind/geoip2/record/location.rb +0 -97
- data/lib/maxmind/geoip2/record/maxmind.rb +0 -41
- data/lib/maxmind/geoip2/record/place.rb +0 -52
- data/lib/maxmind/geoip2/record/postal.rb +0 -54
- data/lib/maxmind/geoip2/record/represented_country.rb +0 -47
- data/lib/maxmind/geoip2/record/subdivision.rb +0 -72
- data/lib/maxmind/geoip2/record/traits.rb +0 -233
- data/lib/minfraud/http_service/request.rb +0 -38
- 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
|
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, [
|
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
|
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
|
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
|
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
|
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
|
13
|
+
# Response HTTP status code.
|
13
14
|
#
|
14
|
-
# @return [
|
15
|
+
# @return [Fixnum, nil]
|
15
16
|
attr_reader :status
|
16
17
|
|
17
|
-
#
|
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
|
-
#
|
24
|
+
# @param endpoint [Symbol, nil] endpoint name, like :score.
|
24
25
|
#
|
25
|
-
# @
|
26
|
-
|
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
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
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,
|
52
|
-
if
|
53
|
-
|
54
|
-
|
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
|
-
|
62
|
+
if @status != 200
|
63
|
+
return Minfraud::Model::Error.new(h)
|
57
64
|
end
|
58
65
|
|
59
|
-
ENDPOINT_TO_CLASS[endpoint].new(
|
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/
|
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".
|
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"
|
21
|
-
#
|
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
|
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
|
-
#
|
51
|
-
#
|
52
|
-
#
|
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
|
data/lib/minfraud/model/score.rb
CHANGED
@@ -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
|
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')
|
data/lib/minfraud/report.rb
CHANGED
@@ -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
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|
-
|
43
|
-
|
44
|
-
|
49
|
+
endpoint,
|
50
|
+
locales,
|
51
|
+
response,
|
52
|
+
body,
|
45
53
|
)
|
46
54
|
|
47
55
|
::Minfraud::ErrorHandler.examine(response)
|
data/lib/minfraud/validates.rb
CHANGED
@@ -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
|
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
|
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
|
data/lib/minfraud/version.rb
CHANGED
data/lib/minfraud.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
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 :
|
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
|
-
|
74
|
-
@
|
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
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
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',
|
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 '
|
26
|
-
spec.add_runtime_dependency '
|
27
|
-
spec.add_runtime_dependency '
|
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:
|
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-
|
12
|
+
date: 2021-12-06 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
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.
|
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.
|
27
|
+
version: '2.2'
|
33
28
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
29
|
+
name: http
|
35
30
|
requirement: !ruby/object:Gem::Requirement
|
36
31
|
requirements:
|
37
32
|
- - ">="
|
38
33
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
34
|
+
version: '4.3'
|
40
35
|
- - "<"
|
41
36
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
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:
|
44
|
+
version: '4.3'
|
50
45
|
- - "<"
|
51
46
|
- !ruby/object:Gem::Version
|
52
|
-
version: '
|
47
|
+
version: '6.0'
|
53
48
|
- !ruby/object:Gem::Dependency
|
54
|
-
name:
|
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: '
|
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: '
|
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.
|
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
|