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.
Files changed (74) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/test.yml +46 -0
  3. data/.gitignore +2 -0
  4. data/.rubocop.yml +127 -0
  5. data/.travis.yml +20 -3
  6. data/CHANGELOG.md +56 -0
  7. data/CODE_OF_CONDUCT.md +4 -4
  8. data/Gemfile +11 -2
  9. data/LICENSE.txt +2 -1
  10. data/README.dev.md +4 -0
  11. data/README.md +107 -36
  12. data/Rakefile +18 -3
  13. data/bin/console +4 -3
  14. data/lib/maxmind/geoip2/model/city.rb +99 -0
  15. data/lib/maxmind/geoip2/model/country.rb +94 -0
  16. data/lib/maxmind/geoip2/model/insights.rb +38 -0
  17. data/lib/maxmind/geoip2/record/abstract.rb +46 -0
  18. data/lib/maxmind/geoip2/record/city.rb +62 -0
  19. data/lib/maxmind/geoip2/record/continent.rb +61 -0
  20. data/lib/maxmind/geoip2/record/country.rb +78 -0
  21. data/lib/maxmind/geoip2/record/location.rb +97 -0
  22. data/lib/maxmind/geoip2/record/maxmind.rb +41 -0
  23. data/lib/maxmind/geoip2/record/place.rb +52 -0
  24. data/lib/maxmind/geoip2/record/postal.rb +54 -0
  25. data/lib/maxmind/geoip2/record/represented_country.rb +47 -0
  26. data/lib/maxmind/geoip2/record/subdivision.rb +72 -0
  27. data/lib/maxmind/geoip2/record/traits.rb +224 -0
  28. data/lib/minfraud.rb +33 -8
  29. data/lib/minfraud/assessments.rb +25 -10
  30. data/lib/minfraud/components/account.rb +3 -1
  31. data/lib/minfraud/components/addressable.rb +11 -9
  32. data/lib/minfraud/components/base.rb +29 -5
  33. data/lib/minfraud/components/billing.rb +2 -0
  34. data/lib/minfraud/components/credit_card.rb +8 -1
  35. data/lib/minfraud/components/custom_inputs.rb +16 -0
  36. data/lib/minfraud/components/device.rb +13 -0
  37. data/lib/minfraud/components/email.rb +2 -0
  38. data/lib/minfraud/components/event.rb +15 -8
  39. data/lib/minfraud/components/order.rb +4 -1
  40. data/lib/minfraud/components/payment.rb +138 -14
  41. data/lib/minfraud/components/report/transaction.rb +69 -0
  42. data/lib/minfraud/components/shipping.rb +2 -4
  43. data/lib/minfraud/components/shopping_cart.rb +4 -1
  44. data/lib/minfraud/components/shopping_cart_item.rb +2 -2
  45. data/lib/minfraud/enum.rb +7 -4
  46. data/lib/minfraud/error_handler.rb +29 -9
  47. data/lib/minfraud/errors.rb +2 -0
  48. data/lib/minfraud/http_service.rb +13 -4
  49. data/lib/minfraud/http_service/request.rb +4 -1
  50. data/lib/minfraud/http_service/response.rb +40 -6
  51. data/lib/minfraud/model/abstract.rb +20 -0
  52. data/lib/minfraud/model/address.rb +52 -0
  53. data/lib/minfraud/model/billing_address.rb +11 -0
  54. data/lib/minfraud/model/credit_card.rb +75 -0
  55. data/lib/minfraud/model/device.rb +54 -0
  56. data/lib/minfraud/model/disposition.rb +35 -0
  57. data/lib/minfraud/model/email.rb +54 -0
  58. data/lib/minfraud/model/email_domain.rb +24 -0
  59. data/lib/minfraud/model/error.rb +28 -0
  60. data/lib/minfraud/model/factors.rb +24 -0
  61. data/lib/minfraud/model/geoip2_location.rb +25 -0
  62. data/lib/minfraud/model/insights.rb +68 -0
  63. data/lib/minfraud/model/ip_address.rb +82 -0
  64. data/lib/minfraud/model/issuer.rb +49 -0
  65. data/lib/minfraud/model/score.rb +76 -0
  66. data/lib/minfraud/model/score_ip_address.rb +23 -0
  67. data/lib/minfraud/model/shipping_address.rb +30 -0
  68. data/lib/minfraud/model/subscores.rb +175 -0
  69. data/lib/minfraud/model/warning.rb +63 -0
  70. data/lib/minfraud/report.rb +40 -0
  71. data/lib/minfraud/resolver.rb +16 -13
  72. data/lib/minfraud/version.rb +3 -1
  73. data/minfraud.gemspec +21 -15
  74. 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
@@ -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
- # Note: Raises RequestFormatError once unpermitted key is met
8
- def assign(context:, params:)
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: ::Minfraud::Components::Account,
21
- billing: ::Minfraud::Components::Billing,
22
- credit_card: ::Minfraud::Components::CreditCard,
23
- device: ::Minfraud::Components::Device,
24
- email: ::Minfraud::Components::Email,
25
- event: ::Minfraud::Components::Event,
26
- order: ::Minfraud::Components::Order,
27
- payment: ::Minfraud::Components::Payment,
28
- shipping: ::Minfraud::Components::Shipping,
29
- shopping_cart: ::Minfraud::Components::ShoppingCart
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Minfraud
2
- VERSION = "1.0.1"
4
+ VERSION = '1.2.0'
3
5
  end
@@ -1,26 +1,32 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
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 = "minfraud"
9
+ spec.name = 'minfraud'
8
10
  spec.version = Minfraud::VERSION
9
- spec.authors = ["kushnir.yb"]
10
- spec.email = ["kushnir.yb@gmail.com"]
11
+ spec.authors = ['kushnir.yb']
12
+ spec.email = ['support@maxmind.com']
11
13
 
12
- spec.summary = %q{Ruby interface to the MaxMind minFraud v2.0 API services}
13
- spec.homepage = "https://github.com/kushniryb/minfraud-api-v2"
14
- spec.license = "MIT"
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 = "exe"
21
+ spec.bindir = 'exe'
18
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
- spec.require_paths = ["lib"]
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.add_runtime_dependency 'faraday'
22
- spec.add_runtime_dependency 'faraday_middleware'
23
- spec.add_development_dependency "bundler", "~> 1.12"
24
- spec.add_development_dependency "rake", "~> 10.0"
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.1
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: 2016-10-05 00:00:00.000000000 Z
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: '0'
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: '0'
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: '0'
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: '0'
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.12'
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.12'
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: '10.0'
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: '10.0'
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
- - kushnir.yb@gmail.com
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/kushniryb/minfraud-api-v2
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: '0'
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.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: