minfraud 1.0.1 → 1.2.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 +5 -5
- data/.github/workflows/test.yml +46 -0
- data/.gitignore +2 -0
- data/.rubocop.yml +127 -0
- data/.travis.yml +20 -3
- data/CHANGELOG.md +56 -0
- data/CODE_OF_CONDUCT.md +4 -4
- data/Gemfile +11 -2
- data/LICENSE.txt +2 -1
- data/README.dev.md +4 -0
- data/README.md +107 -36
- data/Rakefile +18 -3
- data/bin/console +4 -3
- data/lib/maxmind/geoip2/model/city.rb +99 -0
- data/lib/maxmind/geoip2/model/country.rb +94 -0
- data/lib/maxmind/geoip2/model/insights.rb +38 -0
- data/lib/maxmind/geoip2/record/abstract.rb +46 -0
- data/lib/maxmind/geoip2/record/city.rb +62 -0
- data/lib/maxmind/geoip2/record/continent.rb +61 -0
- data/lib/maxmind/geoip2/record/country.rb +78 -0
- data/lib/maxmind/geoip2/record/location.rb +97 -0
- data/lib/maxmind/geoip2/record/maxmind.rb +41 -0
- data/lib/maxmind/geoip2/record/place.rb +52 -0
- data/lib/maxmind/geoip2/record/postal.rb +54 -0
- data/lib/maxmind/geoip2/record/represented_country.rb +47 -0
- data/lib/maxmind/geoip2/record/subdivision.rb +72 -0
- data/lib/maxmind/geoip2/record/traits.rb +224 -0
- data/lib/minfraud.rb +33 -8
- data/lib/minfraud/assessments.rb +25 -10
- data/lib/minfraud/components/account.rb +3 -1
- data/lib/minfraud/components/addressable.rb +11 -9
- data/lib/minfraud/components/base.rb +29 -5
- data/lib/minfraud/components/billing.rb +2 -0
- data/lib/minfraud/components/credit_card.rb +8 -1
- data/lib/minfraud/components/custom_inputs.rb +16 -0
- data/lib/minfraud/components/device.rb +13 -0
- data/lib/minfraud/components/email.rb +2 -0
- data/lib/minfraud/components/event.rb +15 -8
- data/lib/minfraud/components/order.rb +4 -1
- data/lib/minfraud/components/payment.rb +138 -14
- data/lib/minfraud/components/report/transaction.rb +69 -0
- data/lib/minfraud/components/shipping.rb +2 -4
- data/lib/minfraud/components/shopping_cart.rb +4 -1
- data/lib/minfraud/components/shopping_cart_item.rb +2 -2
- data/lib/minfraud/enum.rb +7 -4
- data/lib/minfraud/error_handler.rb +29 -9
- data/lib/minfraud/errors.rb +2 -0
- data/lib/minfraud/http_service.rb +13 -4
- data/lib/minfraud/http_service/request.rb +4 -1
- data/lib/minfraud/http_service/response.rb +40 -6
- data/lib/minfraud/model/abstract.rb +20 -0
- data/lib/minfraud/model/address.rb +52 -0
- data/lib/minfraud/model/billing_address.rb +11 -0
- data/lib/minfraud/model/credit_card.rb +75 -0
- data/lib/minfraud/model/device.rb +54 -0
- data/lib/minfraud/model/disposition.rb +35 -0
- data/lib/minfraud/model/email.rb +54 -0
- data/lib/minfraud/model/email_domain.rb +24 -0
- data/lib/minfraud/model/error.rb +28 -0
- data/lib/minfraud/model/factors.rb +24 -0
- data/lib/minfraud/model/geoip2_location.rb +25 -0
- data/lib/minfraud/model/insights.rb +68 -0
- data/lib/minfraud/model/ip_address.rb +82 -0
- data/lib/minfraud/model/issuer.rb +49 -0
- data/lib/minfraud/model/score.rb +76 -0
- data/lib/minfraud/model/score_ip_address.rb +23 -0
- data/lib/minfraud/model/shipping_address.rb +30 -0
- data/lib/minfraud/model/subscores.rb +175 -0
- data/lib/minfraud/model/warning.rb +63 -0
- data/lib/minfraud/report.rb +40 -0
- data/lib/minfraud/resolver.rb +16 -13
- data/lib/minfraud/version.rb +3 -1
- data/minfraud.gemspec +21 -15
- metadata +84 -19
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'minfraud/model/address'
|
4
|
+
|
5
|
+
module Minfraud
|
6
|
+
module Model
|
7
|
+
# Model containing information about the shipping address.
|
8
|
+
class ShippingAddress < Address
|
9
|
+
# The distance in kilometers from the shipping address to billing
|
10
|
+
# address.
|
11
|
+
#
|
12
|
+
# @return [Integer, nil]
|
13
|
+
attr_reader :distance_to_billing_address
|
14
|
+
|
15
|
+
# This field is true if the shipping address is an address associated
|
16
|
+
# with fraudulent transactions. The field is false when the address is
|
17
|
+
# not associated with increased risk. The key will only be present when a
|
18
|
+
# shipping address is provided.
|
19
|
+
attr_reader :is_high_risk
|
20
|
+
|
21
|
+
# @!visibility private
|
22
|
+
def initialize(record)
|
23
|
+
super(record)
|
24
|
+
|
25
|
+
@distance_to_billing_address = get('distance_to_billing_address')
|
26
|
+
@is_high_risk = get('is_high_risk')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,175 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'minfraud/model/abstract'
|
4
|
+
|
5
|
+
module Minfraud
|
6
|
+
module Model
|
7
|
+
# Subscores for components that are used in calculating the riskScore.
|
8
|
+
class Subscores < Abstract
|
9
|
+
# The risk associated with the AVS result. If present, this is a value in
|
10
|
+
# the range 0.01 to 99.
|
11
|
+
#
|
12
|
+
# @return [Float, nil]
|
13
|
+
attr_reader :avs_result
|
14
|
+
|
15
|
+
# The risk associated with the billing address. If present, this is a
|
16
|
+
# value in the range 0.01 to 99.
|
17
|
+
#
|
18
|
+
# @return [Float, nil]
|
19
|
+
attr_reader :billing_address
|
20
|
+
|
21
|
+
# The risk associated with the distance between the billing address and
|
22
|
+
# the location for the given IP address. If present, this is a value in
|
23
|
+
# the range 0.01 to 99.
|
24
|
+
#
|
25
|
+
# @return [Float, nil]
|
26
|
+
attr_reader :billing_address_distance_to_ip_location
|
27
|
+
|
28
|
+
# The risk associated with the browser attributes such as the User-Agent
|
29
|
+
# and Accept-Language. If present, this is a value in the range 0.01 to
|
30
|
+
# 99.
|
31
|
+
#
|
32
|
+
# @return [Float, nil]
|
33
|
+
attr_reader :browser
|
34
|
+
|
35
|
+
# Individualized risk of chargeback for the given IP address given for
|
36
|
+
# your account and any shop ID passed. This is only available to users
|
37
|
+
# sending chargeback data to MaxMind. If present, this is a value in the
|
38
|
+
# range 0.01 to 99.
|
39
|
+
#
|
40
|
+
# @return [Float, nil]
|
41
|
+
attr_reader :chargeback
|
42
|
+
|
43
|
+
# The risk associated with the country the transaction originated from.
|
44
|
+
# If present, this is a value in the range 0.01 to 99.
|
45
|
+
#
|
46
|
+
# @return [Float, nil]
|
47
|
+
attr_reader :country
|
48
|
+
|
49
|
+
# The risk associated with the combination of IP country, card issuer
|
50
|
+
# country, billing country, and shipping country. If present, this is a
|
51
|
+
# value in the range 0.01 to 99.
|
52
|
+
#
|
53
|
+
# @return [Float, nil]
|
54
|
+
attr_reader :country_mismatch
|
55
|
+
|
56
|
+
# The risk associated with the CVV result. If present, this is a value in
|
57
|
+
# the range 0.01 to 99.
|
58
|
+
#
|
59
|
+
# @return [Float, nil]
|
60
|
+
attr_reader :cvv_result
|
61
|
+
|
62
|
+
# The risk associated with the device. If present, this is a value in the
|
63
|
+
# range of 0.01 to 99.
|
64
|
+
# @return [Float, nil]
|
65
|
+
attr_reader :device
|
66
|
+
|
67
|
+
# The risk associated with the particular email address. If present, this
|
68
|
+
# is a value in the range 0.01 to 99.
|
69
|
+
#
|
70
|
+
# @return [Float, nil]
|
71
|
+
attr_reader :email_address
|
72
|
+
|
73
|
+
# The general risk associated with the email domain. If present, this is
|
74
|
+
# a value in the range 0.01 to 99.
|
75
|
+
#
|
76
|
+
# @return [Float, nil]
|
77
|
+
attr_reader :email_domain
|
78
|
+
|
79
|
+
# The risk associated with the email address local part (the part of
|
80
|
+
# the email address before the @ symbol). If present, this is a value
|
81
|
+
# in the range 0.01 to 99.
|
82
|
+
# @return [Float, nil]
|
83
|
+
attr_reader :email_local_part
|
84
|
+
|
85
|
+
# The risk associated with the issuer ID number on the email domain. If
|
86
|
+
# present, this is a value in the range 0.01 to 99.
|
87
|
+
#
|
88
|
+
# Deprecated effective August 29, 2019. This subscore will default to 1
|
89
|
+
# and will be removed in a future release. The user tenure on email is
|
90
|
+
# reflected in the /subscores/email_address output.
|
91
|
+
#
|
92
|
+
# @return [Float, nil]
|
93
|
+
attr_reader :email_tenure
|
94
|
+
|
95
|
+
# The risk associated with the issuer ID number on the IP address. If
|
96
|
+
# present, this is a value in the range 0.01 to 99.
|
97
|
+
#
|
98
|
+
# Deprecated effective August 29, 2019. This subscore will default to 1
|
99
|
+
# and will be removed in a future release. The IP tenure is reflected in
|
100
|
+
# the overall risk score.
|
101
|
+
#
|
102
|
+
# @return [Float, nil]
|
103
|
+
attr_reader :ip_tenure
|
104
|
+
|
105
|
+
# The risk associated with the particular issuer ID number (IIN) given
|
106
|
+
# the billing location and the history of usage of the IIN on your
|
107
|
+
# account and shop ID. If present, this is a value in the range 0.01 to
|
108
|
+
# 99.
|
109
|
+
#
|
110
|
+
# @return [Float, nil]
|
111
|
+
attr_reader :issuer_id_number
|
112
|
+
|
113
|
+
# The risk associated with the particular order amount for your account
|
114
|
+
# and shop ID. If present, this is a value in the range 0.01 to 99.
|
115
|
+
#
|
116
|
+
# @return [Float, nil]
|
117
|
+
attr_reader :order_amount
|
118
|
+
|
119
|
+
# The risk associated with the particular phone number. If present, this
|
120
|
+
# is a value in the range 0.01 to 99.
|
121
|
+
#
|
122
|
+
# @return [Float, nil]
|
123
|
+
attr_reader :phone_number
|
124
|
+
|
125
|
+
# The risk associated with the shipping address. If present, this is a
|
126
|
+
# value in the range 0.01 to 99.
|
127
|
+
# @return [Float, nil]
|
128
|
+
attr_reader :shipping_address
|
129
|
+
|
130
|
+
# The risk associated with the distance between the shipping address and
|
131
|
+
# the IP location for the given IP address. If present, this is a value
|
132
|
+
# in the range 0.01 to 99.
|
133
|
+
#
|
134
|
+
# @return [Float, nil]
|
135
|
+
attr_reader :shipping_address_distance_to_ip_location
|
136
|
+
|
137
|
+
# The risk associated with the local time of day of the transaction in
|
138
|
+
# the IP address location. If present, this is a value in the range 0.01
|
139
|
+
# to 99.
|
140
|
+
#
|
141
|
+
# @return [Float, nil]
|
142
|
+
attr_reader :time_of_day
|
143
|
+
|
144
|
+
# @!visibility private
|
145
|
+
def initialize(record)
|
146
|
+
super(record)
|
147
|
+
|
148
|
+
@avs_result = get('avs_result')
|
149
|
+
@billing_address = get('billing_address')
|
150
|
+
@billing_address_distance_to_ip_location = get(
|
151
|
+
'billing_address_distance_to_ip_location'
|
152
|
+
)
|
153
|
+
@browser = get('browser')
|
154
|
+
@chargeback = get('chargeback')
|
155
|
+
@country = get('country')
|
156
|
+
@country_mismatch = get('country_mismatch')
|
157
|
+
@cvv_result = get('cvv_result')
|
158
|
+
@device = get('device')
|
159
|
+
@email_address = get('email_address')
|
160
|
+
@email_domain = get('email_domain')
|
161
|
+
@email_local_part = get('email_local_part')
|
162
|
+
@email_tenure = get('email_tenure')
|
163
|
+
@ip_tenure = get('ip_tenure')
|
164
|
+
@issuer_id_number = get('issuer_id_number')
|
165
|
+
@order_amount = get('order_amount')
|
166
|
+
@phone_number = get('phone_number')
|
167
|
+
@shipping_address = get('shipping_address')
|
168
|
+
@shipping_address_distance_to_ip_location = get(
|
169
|
+
'shipping_address_distance_to_ip_location'
|
170
|
+
)
|
171
|
+
@time_of_day = get('time_of_day')
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'minfraud/model/abstract'
|
4
|
+
|
5
|
+
module Minfraud
|
6
|
+
module Model
|
7
|
+
# Warning about the minFraud request.
|
8
|
+
#
|
9
|
+
# Although more codes may be added in the future, the current warning codes
|
10
|
+
# are:
|
11
|
+
#
|
12
|
+
# * BILLING_CITY_NOT_FOUND - the billing city could not be found in our
|
13
|
+
# database.
|
14
|
+
# * BILLING_COUNTRY_MISSING - billing address information was provided
|
15
|
+
# without providing a billing country.
|
16
|
+
# * BILLING_COUNTRY_NOT_FOUND - the billing country could not be found in
|
17
|
+
# our database.
|
18
|
+
# * BILLING_POSTAL_NOT_FOUND - the billing postal could not be found in our
|
19
|
+
# database.
|
20
|
+
# * INPUT_INVALID - the value associated with the key does not meet the
|
21
|
+
# required constraints, e.g., "United States" in a field that requires a
|
22
|
+
# two-letter country code.
|
23
|
+
# * INPUT_UNKNOWN - an unknown key was encountered in the request body.
|
24
|
+
# * IP_ADDRESS_NOT_FOUND - the IP address could not be geolocated.
|
25
|
+
# * SHIPPING_COUNTRY_MISSING - shipping address information was provided
|
26
|
+
# without providing a shipping country.
|
27
|
+
# * SHIPPING_CITY_NOT_FOUND - the shipping city could not be found in our
|
28
|
+
# database.
|
29
|
+
# * SHIPPING_COUNTRY_NOT_FOUND - the shipping country could not be found in
|
30
|
+
# our database.
|
31
|
+
# * SHIPPING_POSTAL_NOT_FOUND - the shipping postal could not be found in
|
32
|
+
# our database.
|
33
|
+
class Warning < Abstract
|
34
|
+
# This value is a machine-readable code identifying the warning.
|
35
|
+
#
|
36
|
+
# @return [String]
|
37
|
+
attr_reader :code
|
38
|
+
|
39
|
+
# This property provides a human-readable explanation of the warning. The
|
40
|
+
# description may change at any time and should not be matched against.
|
41
|
+
#
|
42
|
+
# @return [String]
|
43
|
+
attr_reader :warning
|
44
|
+
|
45
|
+
# A JSON Pointer to the input field that the warning is associated with.
|
46
|
+
# For instance, if the warning was about the billing city, this would be
|
47
|
+
# '/billing/city'. If it was for the price in the second shopping cart
|
48
|
+
# item, it would be '/shopping_cart/1/price'.
|
49
|
+
#
|
50
|
+
# @return [String, nil]
|
51
|
+
attr_reader :input_pointer
|
52
|
+
|
53
|
+
# @!visibility private
|
54
|
+
def initialize(record)
|
55
|
+
super(record)
|
56
|
+
|
57
|
+
@code = get('code')
|
58
|
+
@warning = get('warning')
|
59
|
+
@input_pointer = get('input_pointer')
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Minfraud
|
4
|
+
class Report
|
5
|
+
include ::Minfraud::HTTPService
|
6
|
+
|
7
|
+
# @!attribute transaction
|
8
|
+
# @return [Minfraud::Components::Report::Transaction] Report::Transaction component
|
9
|
+
attr_accessor :transaction
|
10
|
+
|
11
|
+
# @param [Hash] params hash of parameters
|
12
|
+
# @return [Minfraud::ReportTransaction] ReportTransaction instance
|
13
|
+
def initialize(params = {})
|
14
|
+
@transaction = params[:transaction]
|
15
|
+
end
|
16
|
+
|
17
|
+
# @method report_transaction
|
18
|
+
# Makes a request to the minFraud report transactions API.
|
19
|
+
# Raises an error in case of invalid response.
|
20
|
+
# @return [nil]
|
21
|
+
def report_transaction
|
22
|
+
raw = request.perform(verb: :post, endpoint: 'transactions/report', body: @transaction.to_json)
|
23
|
+
|
24
|
+
response = ::Minfraud::HTTPService::Response.new(
|
25
|
+
status: raw.status.to_i,
|
26
|
+
body: raw.body,
|
27
|
+
headers: raw.headers
|
28
|
+
)
|
29
|
+
::Minfraud::ErrorHandler.examine(response)
|
30
|
+
|
31
|
+
nil
|
32
|
+
end
|
33
|
+
|
34
|
+
# Creates memoized Minfraud::HTTPService::Request instance
|
35
|
+
# @return [Minfraud::HTTPService::Request] Request instance based on configuration params
|
36
|
+
def request
|
37
|
+
@request ||= Request.new(::Minfraud::HTTPService.configuration)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/minfraud/resolver.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Minfraud
|
2
4
|
module Resolver
|
3
5
|
class << self
|
4
6
|
# @param [Object] context an object for variable assignment
|
5
7
|
# @param [Hash] params a hash of parameters
|
6
8
|
# @return [Array] a list of supplied params
|
7
|
-
#
|
8
|
-
def assign(context
|
9
|
+
# @note Raises RequestFormatError once unpermitted key is met
|
10
|
+
def assign(context, params)
|
9
11
|
Array(params).each do |key, value|
|
10
12
|
raise RequestFormatError, "#{key} does not belong to request document format" unless MAPPING[key]
|
11
13
|
|
@@ -17,16 +19,17 @@ module Minfraud
|
|
17
19
|
|
18
20
|
# Mapping between components & minFraud request keys
|
19
21
|
MAPPING = {
|
20
|
-
account:
|
21
|
-
billing:
|
22
|
-
credit_card:
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
22
|
+
account: ::Minfraud::Components::Account,
|
23
|
+
billing: ::Minfraud::Components::Billing,
|
24
|
+
credit_card: ::Minfraud::Components::CreditCard,
|
25
|
+
custom_inputs: ::Minfraud::Components::CustomInputs,
|
26
|
+
device: ::Minfraud::Components::Device,
|
27
|
+
email: ::Minfraud::Components::Email,
|
28
|
+
event: ::Minfraud::Components::Event,
|
29
|
+
order: ::Minfraud::Components::Order,
|
30
|
+
payment: ::Minfraud::Components::Payment,
|
31
|
+
shipping: ::Minfraud::Components::Shipping,
|
32
|
+
shopping_cart: ::Minfraud::Components::ShoppingCart,
|
33
|
+
}.freeze
|
31
34
|
end
|
32
35
|
end
|
data/lib/minfraud/version.rb
CHANGED
data/minfraud.gemspec
CHANGED
@@ -1,26 +1,32 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', File.dirname(File.realpath(__FILE__)))
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
|
4
6
|
require 'minfraud/version'
|
5
7
|
|
6
8
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
9
|
+
spec.name = 'minfraud'
|
8
10
|
spec.version = Minfraud::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
+
spec.authors = ['kushnir.yb']
|
12
|
+
spec.email = ['support@maxmind.com']
|
11
13
|
|
12
|
-
spec.summary =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
14
|
+
spec.summary = 'Ruby interface to the MaxMind minFraud v2.0 API services'
|
15
|
+
spec.homepage = 'https://github.com/maxmind/minfraud-api-ruby'
|
16
|
+
spec.license = 'MIT'
|
17
|
+
|
18
|
+
spec.required_ruby_version = '>= 1.9'
|
15
19
|
|
16
20
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
|
-
spec.bindir =
|
21
|
+
spec.bindir = 'exe'
|
18
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
|
-
spec.require_paths = [
|
23
|
+
spec.require_paths = ['lib']
|
24
|
+
|
25
|
+
spec.add_runtime_dependency 'faraday', '>= 0.9.1', '< 2.0'
|
26
|
+
spec.add_runtime_dependency 'faraday_middleware', '>= 0.9.1', '< 2.0'
|
20
27
|
|
21
|
-
spec.
|
22
|
-
spec.
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
28
|
+
spec.add_development_dependency 'bundler', '>= 1.16'
|
29
|
+
spec.add_development_dependency 'rake'
|
30
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
31
|
+
spec.add_development_dependency 'rubocop'
|
26
32
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minfraud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kushnir.yb
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -16,56 +16,68 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.9.1
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
27
|
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
29
|
+
version: 0.9.1
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: faraday_middleware
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - ">="
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
39
|
+
version: 0.9.1
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '2.0'
|
34
43
|
type: :runtime
|
35
44
|
prerelease: false
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
37
46
|
requirements:
|
38
47
|
- - ">="
|
39
48
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
49
|
+
version: 0.9.1
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '2.0'
|
41
53
|
- !ruby/object:Gem::Dependency
|
42
54
|
name: bundler
|
43
55
|
requirement: !ruby/object:Gem::Requirement
|
44
56
|
requirements:
|
45
|
-
- - "
|
57
|
+
- - ">="
|
46
58
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
59
|
+
version: '1.16'
|
48
60
|
type: :development
|
49
61
|
prerelease: false
|
50
62
|
version_requirements: !ruby/object:Gem::Requirement
|
51
63
|
requirements:
|
52
|
-
- - "
|
64
|
+
- - ">="
|
53
65
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
66
|
+
version: '1.16'
|
55
67
|
- !ruby/object:Gem::Dependency
|
56
68
|
name: rake
|
57
69
|
requirement: !ruby/object:Gem::Requirement
|
58
70
|
requirements:
|
59
|
-
- - "
|
71
|
+
- - ">="
|
60
72
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
73
|
+
version: '0'
|
62
74
|
type: :development
|
63
75
|
prerelease: false
|
64
76
|
version_requirements: !ruby/object:Gem::Requirement
|
65
77
|
requirements:
|
66
|
-
- - "
|
78
|
+
- - ">="
|
67
79
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
80
|
+
version: '0'
|
69
81
|
- !ruby/object:Gem::Dependency
|
70
82
|
name: rspec
|
71
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,23 +92,55 @@ dependencies:
|
|
80
92
|
- - "~>"
|
81
93
|
- !ruby/object:Gem::Version
|
82
94
|
version: '3.0'
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: rubocop
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '0'
|
83
109
|
description:
|
84
110
|
email:
|
85
|
-
-
|
111
|
+
- support@maxmind.com
|
86
112
|
executables: []
|
87
113
|
extensions: []
|
88
114
|
extra_rdoc_files: []
|
89
115
|
files:
|
116
|
+
- ".github/workflows/test.yml"
|
90
117
|
- ".gitignore"
|
91
118
|
- ".rspec"
|
119
|
+
- ".rubocop.yml"
|
92
120
|
- ".travis.yml"
|
121
|
+
- CHANGELOG.md
|
93
122
|
- CODE_OF_CONDUCT.md
|
94
123
|
- Gemfile
|
95
124
|
- LICENSE.txt
|
125
|
+
- README.dev.md
|
96
126
|
- README.md
|
97
127
|
- Rakefile
|
98
128
|
- bin/console
|
99
129
|
- bin/setup
|
130
|
+
- lib/maxmind/geoip2/model/city.rb
|
131
|
+
- lib/maxmind/geoip2/model/country.rb
|
132
|
+
- lib/maxmind/geoip2/model/insights.rb
|
133
|
+
- lib/maxmind/geoip2/record/abstract.rb
|
134
|
+
- lib/maxmind/geoip2/record/city.rb
|
135
|
+
- lib/maxmind/geoip2/record/continent.rb
|
136
|
+
- lib/maxmind/geoip2/record/country.rb
|
137
|
+
- lib/maxmind/geoip2/record/location.rb
|
138
|
+
- lib/maxmind/geoip2/record/maxmind.rb
|
139
|
+
- lib/maxmind/geoip2/record/place.rb
|
140
|
+
- lib/maxmind/geoip2/record/postal.rb
|
141
|
+
- lib/maxmind/geoip2/record/represented_country.rb
|
142
|
+
- lib/maxmind/geoip2/record/subdivision.rb
|
143
|
+
- lib/maxmind/geoip2/record/traits.rb
|
100
144
|
- lib/minfraud.rb
|
101
145
|
- lib/minfraud/assessments.rb
|
102
146
|
- lib/minfraud/components/account.rb
|
@@ -104,11 +148,13 @@ files:
|
|
104
148
|
- lib/minfraud/components/base.rb
|
105
149
|
- lib/minfraud/components/billing.rb
|
106
150
|
- lib/minfraud/components/credit_card.rb
|
151
|
+
- lib/minfraud/components/custom_inputs.rb
|
107
152
|
- lib/minfraud/components/device.rb
|
108
153
|
- lib/minfraud/components/email.rb
|
109
154
|
- lib/minfraud/components/event.rb
|
110
155
|
- lib/minfraud/components/order.rb
|
111
156
|
- lib/minfraud/components/payment.rb
|
157
|
+
- lib/minfraud/components/report/transaction.rb
|
112
158
|
- lib/minfraud/components/shipping.rb
|
113
159
|
- lib/minfraud/components/shopping_cart.rb
|
114
160
|
- lib/minfraud/components/shopping_cart_item.rb
|
@@ -118,10 +164,30 @@ files:
|
|
118
164
|
- lib/minfraud/http_service.rb
|
119
165
|
- lib/minfraud/http_service/request.rb
|
120
166
|
- lib/minfraud/http_service/response.rb
|
167
|
+
- lib/minfraud/model/abstract.rb
|
168
|
+
- lib/minfraud/model/address.rb
|
169
|
+
- lib/minfraud/model/billing_address.rb
|
170
|
+
- lib/minfraud/model/credit_card.rb
|
171
|
+
- lib/minfraud/model/device.rb
|
172
|
+
- lib/minfraud/model/disposition.rb
|
173
|
+
- lib/minfraud/model/email.rb
|
174
|
+
- lib/minfraud/model/email_domain.rb
|
175
|
+
- lib/minfraud/model/error.rb
|
176
|
+
- lib/minfraud/model/factors.rb
|
177
|
+
- lib/minfraud/model/geoip2_location.rb
|
178
|
+
- lib/minfraud/model/insights.rb
|
179
|
+
- lib/minfraud/model/ip_address.rb
|
180
|
+
- lib/minfraud/model/issuer.rb
|
181
|
+
- lib/minfraud/model/score.rb
|
182
|
+
- lib/minfraud/model/score_ip_address.rb
|
183
|
+
- lib/minfraud/model/shipping_address.rb
|
184
|
+
- lib/minfraud/model/subscores.rb
|
185
|
+
- lib/minfraud/model/warning.rb
|
186
|
+
- lib/minfraud/report.rb
|
121
187
|
- lib/minfraud/resolver.rb
|
122
188
|
- lib/minfraud/version.rb
|
123
189
|
- minfraud.gemspec
|
124
|
-
homepage: https://github.com/
|
190
|
+
homepage: https://github.com/maxmind/minfraud-api-ruby
|
125
191
|
licenses:
|
126
192
|
- MIT
|
127
193
|
metadata: {}
|
@@ -133,7 +199,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
133
199
|
requirements:
|
134
200
|
- - ">="
|
135
201
|
- !ruby/object:Gem::Version
|
136
|
-
version: '
|
202
|
+
version: '1.9'
|
137
203
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
204
|
requirements:
|
139
205
|
- - ">="
|
@@ -141,9 +207,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
141
207
|
version: '0'
|
142
208
|
requirements: []
|
143
209
|
rubyforge_project:
|
144
|
-
rubygems_version: 2.6.
|
210
|
+
rubygems_version: 2.7.6.2
|
145
211
|
signing_key:
|
146
212
|
specification_version: 4
|
147
213
|
summary: Ruby interface to the MaxMind minFraud v2.0 API services
|
148
214
|
test_files: []
|
149
|
-
has_rdoc:
|