minfraud 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +46 -0
  3. data/.rubocop.yml +127 -0
  4. data/CHANGELOG.md +14 -0
  5. data/Gemfile +4 -2
  6. data/README.md +1 -1
  7. data/Rakefile +18 -3
  8. data/bin/console +4 -3
  9. data/lib/maxmind/geoip2/model/city.rb +3 -3
  10. data/lib/maxmind/geoip2/model/country.rb +5 -5
  11. data/lib/maxmind/geoip2/record/traits.rb +1 -1
  12. data/lib/minfraud.rb +29 -6
  13. data/lib/minfraud/assessments.rb +6 -2
  14. data/lib/minfraud/components/account.rb +2 -0
  15. data/lib/minfraud/components/addressable.rb +9 -7
  16. data/lib/minfraud/components/base.rb +6 -4
  17. data/lib/minfraud/components/billing.rb +2 -0
  18. data/lib/minfraud/components/credit_card.rb +4 -2
  19. data/lib/minfraud/components/custom_inputs.rb +2 -0
  20. data/lib/minfraud/components/device.rb +4 -2
  21. data/lib/minfraud/components/email.rb +2 -0
  22. data/lib/minfraud/components/event.rb +13 -11
  23. data/lib/minfraud/components/order.rb +3 -1
  24. data/lib/minfraud/components/payment.rb +14 -2
  25. data/lib/minfraud/components/report/transaction.rb +6 -6
  26. data/lib/minfraud/components/shipping.rb +2 -0
  27. data/lib/minfraud/components/shopping_cart.rb +4 -1
  28. data/lib/minfraud/components/shopping_cart_item.rb +2 -2
  29. data/lib/minfraud/enum.rb +6 -3
  30. data/lib/minfraud/error_handler.rb +15 -15
  31. data/lib/minfraud/errors.rb +2 -0
  32. data/lib/minfraud/http_service.rb +14 -4
  33. data/lib/minfraud/http_service/request.rb +3 -0
  34. data/lib/minfraud/http_service/response.rb +4 -2
  35. data/lib/minfraud/model/address.rb +4 -4
  36. data/lib/minfraud/model/credit_card.rb +7 -7
  37. data/lib/minfraud/model/device.rb +2 -2
  38. data/lib/minfraud/model/email.rb +4 -4
  39. data/lib/minfraud/model/error.rb +1 -1
  40. data/lib/minfraud/model/insights.rb +5 -5
  41. data/lib/minfraud/model/issuer.rb +3 -3
  42. data/lib/minfraud/model/score.rb +6 -6
  43. data/lib/minfraud/model/shipping_address.rb +1 -1
  44. data/lib/minfraud/model/subscores.rb +35 -16
  45. data/lib/minfraud/model/warning.rb +2 -2
  46. data/lib/minfraud/report.rb +5 -3
  47. data/lib/minfraud/resolver.rb +14 -12
  48. data/lib/minfraud/version.rb +3 -1
  49. data/minfraud.gemspec +4 -1
  50. metadata +18 -2
@@ -42,10 +42,10 @@ module Minfraud
42
42
  super(record)
43
43
 
44
44
  @distance_to_ip_location = get('distance_to_ip_location')
45
- @is_in_ip_country = get('is_in_ip_country')
46
- @is_postal_in_city = get('is_postal_in_city')
47
- @latitude = get('latitude')
48
- @longitude = get('longitude')
45
+ @is_in_ip_country = get('is_in_ip_country')
46
+ @is_postal_in_city = get('is_postal_in_city')
47
+ @latitude = get('latitude')
48
+ @longitude = get('longitude')
49
49
  end
50
50
  end
51
51
  end
@@ -59,16 +59,16 @@ module Minfraud
59
59
  def initialize(record)
60
60
  super(record)
61
61
 
62
- @brand = get('brand')
63
- @country = get('country')
64
- @is_business = get('is_business')
62
+ @brand = get('brand')
63
+ @country = get('country')
64
+ @is_business = get('is_business')
65
65
  @is_issued_in_billing_address_country = get(
66
66
  'is_issued_in_billing_address_country'
67
67
  )
68
- @is_prepaid = get('is_prepaid')
69
- @is_virtual = get('is_virtual')
70
- @issuer = Minfraud::Model::Issuer.new(get('issuer'))
71
- @type = get('type')
68
+ @is_prepaid = get('is_prepaid')
69
+ @is_virtual = get('is_virtual')
70
+ @issuer = Minfraud::Model::Issuer.new(get('issuer'))
71
+ @type = get('type')
72
72
  end
73
73
  end
74
74
  end
@@ -45,8 +45,8 @@ module Minfraud
45
45
  super(record)
46
46
 
47
47
  @confidence = get('confidence')
48
- @id = get('id')
49
- @last_seen = get('last_seen')
48
+ @id = get('id')
49
+ @last_seen = get('last_seen')
50
50
  @local_time = get('local_time')
51
51
  end
52
52
  end
@@ -43,11 +43,11 @@ module Minfraud
43
43
  def initialize(record)
44
44
  super(record)
45
45
 
46
- @domain = Minfraud::Model::EmailDomain.new(get('domain'))
47
- @first_seen = get('first_seen')
46
+ @domain = Minfraud::Model::EmailDomain.new(get('domain'))
47
+ @first_seen = get('first_seen')
48
48
  @is_disposable = get('is_disposable')
49
- @is_free = get('is_free')
50
- @is_high_risk = get('is_high_risk')
49
+ @is_free = get('is_free')
50
+ @is_high_risk = get('is_high_risk')
51
51
  end
52
52
  end
53
53
  end
@@ -20,7 +20,7 @@ module Minfraud
20
20
  def initialize(record)
21
21
  super(record)
22
22
 
23
- @code = get('code')
23
+ @code = get('code')
24
24
  @error = get('error')
25
25
  end
26
26
  end
@@ -52,13 +52,13 @@ module Minfraud
52
52
  def initialize(record, locales)
53
53
  super(record, locales)
54
54
 
55
- @billing_address = Minfraud::Model::BillingAddress.new(
55
+ @billing_address = Minfraud::Model::BillingAddress.new(
56
56
  get('billing_address')
57
57
  )
58
- @credit_card = Minfraud::Model::CreditCard.new(get('credit_card'))
59
- @device = Minfraud::Model::Device.new(get('device'))
60
- @email = Minfraud::Model::Email.new(get('email'))
61
- @ip_address = Minfraud::Model::IPAddress.new(get('ip_address'), locales)
58
+ @credit_card = Minfraud::Model::CreditCard.new(get('credit_card'))
59
+ @device = Minfraud::Model::Device.new(get('device'))
60
+ @email = Minfraud::Model::Email.new(get('email'))
61
+ @ip_address = Minfraud::Model::IPAddress.new(get('ip_address'), locales)
62
62
  @shipping_address = Minfraud::Model::ShippingAddress.new(
63
63
  get('shipping_address')
64
64
  )
@@ -39,9 +39,9 @@ module Minfraud
39
39
  def initialize(record)
40
40
  super(record)
41
41
 
42
- @name = get('name')
43
- @phone_number = get('phone_number')
44
- @matches_provided_name = get('matches_provided_name')
42
+ @name = get('name')
43
+ @phone_number = get('phone_number')
44
+ @matches_provided_name = get('matches_provided_name')
45
45
  @matches_provided_phone_number = get('matches_provided_phone_number')
46
46
  end
47
47
  end
@@ -58,13 +58,13 @@ module Minfraud
58
58
  def initialize(record, _locales)
59
59
  super(record)
60
60
 
61
- @disposition = Minfraud::Model::Disposition.new(get('disposition'))
62
- @funds_remaining = get('funds_remaining')
63
- @id = get('id')
64
- @ip_address = Minfraud::Model::ScoreIPAddress.new(get('ip_address'))
61
+ @disposition = Minfraud::Model::Disposition.new(get('disposition'))
62
+ @funds_remaining = get('funds_remaining')
63
+ @id = get('id')
64
+ @ip_address = Minfraud::Model::ScoreIPAddress.new(get('ip_address'))
65
65
  @queries_remaining = get('queries_remaining')
66
- @risk_score = get('risk_score')
67
- @warnings = []
66
+ @risk_score = get('risk_score')
67
+ @warnings = []
68
68
  if record && record.key?('warnings')
69
69
  record['warnings'].each do |w|
70
70
  @warnings << Minfraud::Model::Warning.new(w)
@@ -23,7 +23,7 @@ module Minfraud
23
23
  super(record)
24
24
 
25
25
  @distance_to_billing_address = get('distance_to_billing_address')
26
- @is_high_risk = get('is_high_risk')
26
+ @is_high_risk = get('is_high_risk')
27
27
  end
28
28
  end
29
29
  end
@@ -59,6 +59,11 @@ module Minfraud
59
59
  # @return [Float, nil]
60
60
  attr_reader :cvv_result
61
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
+
62
67
  # The risk associated with the particular email address. If present, this
63
68
  # is a value in the range 0.01 to 99.
64
69
  #
@@ -71,6 +76,12 @@ module Minfraud
71
76
  # @return [Float, nil]
72
77
  attr_reader :email_domain
73
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
+
74
85
  # The risk associated with the issuer ID number on the email domain. If
75
86
  # present, this is a value in the range 0.01 to 99.
76
87
  #
@@ -111,6 +122,11 @@ module Minfraud
111
122
  # @return [Float, nil]
112
123
  attr_reader :phone_number
113
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
+
114
130
  # The risk associated with the distance between the shipping address and
115
131
  # the IP location for the given IP address. If present, this is a value
116
132
  # in the range 0.01 to 99.
@@ -129,27 +145,30 @@ module Minfraud
129
145
  def initialize(record)
130
146
  super(record)
131
147
 
132
- @avs_result = get('avs_result')
133
- @billing_address = get('billing_address')
134
- @billing_address_distance_to_ip_location = get(
148
+ @avs_result = get('avs_result')
149
+ @billing_address = get('billing_address')
150
+ @billing_address_distance_to_ip_location = get(
135
151
  'billing_address_distance_to_ip_location'
136
152
  )
137
- @browser = get('browser')
138
- @chargeback = get('chargeback')
139
- @country = get('country')
140
- @country_mismatch = get('country_mismatch')
141
- @cvv_result = get('cvv_result')
142
- @email_address = get('email_address')
143
- @email_domain = get('email_domain')
144
- @email_tenure = get('email_tenure')
145
- @ip_tenure = get('ip_tenure')
146
- @issuer_id_number = get('issuer_id_number')
147
- @order_amount = get('order_amount')
148
- @phone_number = get('phone_number')
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')
149
168
  @shipping_address_distance_to_ip_location = get(
150
169
  'shipping_address_distance_to_ip_location'
151
170
  )
152
- @time_of_day = get('time_of_day')
171
+ @time_of_day = get('time_of_day')
153
172
  end
154
173
  end
155
174
  end
@@ -54,8 +54,8 @@ module Minfraud
54
54
  def initialize(record)
55
55
  super(record)
56
56
 
57
- @code = get('code')
58
- @warning = get('warning')
57
+ @code = get('code')
58
+ @warning = get('warning')
59
59
  @input_pointer = get('input_pointer')
60
60
  end
61
61
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Minfraud
2
4
  class Report
3
5
  include ::Minfraud::HTTPService
@@ -20,13 +22,13 @@ module Minfraud
20
22
  raw = request.perform(verb: :post, endpoint: 'transactions/report', body: @transaction.to_json)
21
23
 
22
24
  response = ::Minfraud::HTTPService::Response.new(
23
- status: raw.status.to_i,
24
- body: raw.body,
25
+ status: raw.status.to_i,
26
+ body: raw.body,
25
27
  headers: raw.headers
26
28
  )
27
29
  ::Minfraud::ErrorHandler.examine(response)
28
30
 
29
- return nil
31
+ nil
30
32
  end
31
33
 
32
34
  # Creates memoized Minfraud::HTTPService::Request instance
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Minfraud
2
4
  module Resolver
3
5
  class << self
@@ -17,17 +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
- custom_inputs: ::Minfraud::Components::CustomInputs,
24
- device: ::Minfraud::Components::Device,
25
- email: ::Minfraud::Components::Email,
26
- event: ::Minfraud::Components::Event,
27
- order: ::Minfraud::Components::Order,
28
- payment: ::Minfraud::Components::Payment,
29
- shipping: ::Minfraud::Components::Shipping,
30
- shopping_cart: ::Minfraud::Components::ShoppingCart,
31
- }
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
32
34
  end
33
35
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Minfraud
2
- VERSION = '1.1.0'
4
+ VERSION = '1.2.0'
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  lib = File.expand_path('lib', File.dirname(File.realpath(__FILE__)))
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
 
@@ -9,7 +11,7 @@ Gem::Specification.new do |spec|
9
11
  spec.authors = ['kushnir.yb']
10
12
  spec.email = ['support@maxmind.com']
11
13
 
12
- spec.summary = %q(Ruby interface to the MaxMind minFraud v2.0 API services)
14
+ spec.summary = 'Ruby interface to the MaxMind minFraud v2.0 API services'
13
15
  spec.homepage = 'https://github.com/maxmind/minfraud-api-ruby'
14
16
  spec.license = 'MIT'
15
17
 
@@ -26,4 +28,5 @@ Gem::Specification.new do |spec|
26
28
  spec.add_development_dependency 'bundler', '>= 1.16'
27
29
  spec.add_development_dependency 'rake'
28
30
  spec.add_development_dependency 'rspec', '~> 3.0'
31
+ spec.add_development_dependency 'rubocop'
29
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.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: 2020-06-19 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
@@ -92,6 +92,20 @@ dependencies:
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
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'
95
109
  description:
96
110
  email:
97
111
  - support@maxmind.com
@@ -99,8 +113,10 @@ executables: []
99
113
  extensions: []
100
114
  extra_rdoc_files: []
101
115
  files:
116
+ - ".github/workflows/test.yml"
102
117
  - ".gitignore"
103
118
  - ".rspec"
119
+ - ".rubocop.yml"
104
120
  - ".travis.yml"
105
121
  - CHANGELOG.md
106
122
  - CODE_OF_CONDUCT.md