minfraud 1.0.1 → 1.0.2
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 +13 -5
- data/CHANGELOG.md +5 -0
- data/lib/minfraud/assessments.rb +7 -5
- data/lib/minfraud/components/addressable.rb +1 -1
- data/lib/minfraud/components/base.rb +14 -4
- data/lib/minfraud/components/event.rb +1 -7
- data/lib/minfraud/components/shipping.rb +0 -4
- data/lib/minfraud/enum.rb +1 -1
- data/lib/minfraud/error_handler.rb +1 -1
- data/lib/minfraud/http_service/request.rb +1 -1
- data/lib/minfraud/http_service/response.rb +3 -3
- data/lib/minfraud/resolver.rb +2 -2
- data/lib/minfraud/version.rb +1 -1
- data/minfraud.gemspec +5 -2
- metadata +50 -24
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YThlNDg5YmIwNzY5NjIyZjEyMWE4ODQwNjY0NWQxMTZhOGI3ZTdiNQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZGZlMWUwYTI3ZGExNTk0MWVlMWUyNTI5Mzc0OTgwNGFkZWNmMTgyZQ==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YmY2ZWE4MTZkOTBkYTc3MjkyZjZjNTNiZjFlNmU0YWQ3YWY5Y2IwOGFlZDYx
|
10
|
+
ZDVjMzMwMjRkZjY5YjJjNmNmZTBmZjdmMTEwMjYzNWU4ZGI0ZjMyOGFlMjhk
|
11
|
+
NWI2NjFhMTRjMjdhMjQ5OWQxMzU5ZWMzMzU0M2FhMzg2ZTNhODI=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NGMzZGE3YTBlNjRhN2Y3ZTM1NGEzYmI0ZjI5YTU4ZGM4MjRhZDBjYjZkMmVj
|
14
|
+
MWVjMTQ1YmM0YzAzMjRjYThlYzgwYmIyYmI1MTRmMzg2YjQ2MTEwNzg0MDA4
|
15
|
+
YTg4N2U2NzYyYmIzMDQ5MWJkZGRlMWFiOGUxNjQ3Y2Q3ZGJiOWE=
|
data/CHANGELOG.md
ADDED
data/lib/minfraud/assessments.rb
CHANGED
@@ -45,11 +45,10 @@ module Minfraud
|
|
45
45
|
|
46
46
|
# @param [Hash] params hash of parameters
|
47
47
|
# @param [Minfraud::Resolver] resolver resolver that maps params to components
|
48
|
-
# In case
|
49
|
-
# instance variables
|
48
|
+
# @note In case when params is a Hash of components it just assigns them to the corresponding instance variables
|
50
49
|
# @return [Minfraud::Assessments] Assessments instance
|
51
50
|
def initialize(params = {}, resolver = ::Minfraud::Resolver)
|
52
|
-
resolver.assign(
|
51
|
+
resolver.assign(self, params)
|
53
52
|
end
|
54
53
|
|
55
54
|
# @!macro [attach] define
|
@@ -59,7 +58,7 @@ module Minfraud
|
|
59
58
|
# @return [Minfraud::HTTPService::Response] Wrapped minFraud response
|
60
59
|
def self.define(endpoint)
|
61
60
|
define_method(endpoint) do
|
62
|
-
raw = request.perform(verb: :post, endpoint: endpoint, body: request_body)
|
61
|
+
raw = request.perform(verb: :post, endpoint: endpoint.to_s, body: request_body)
|
63
62
|
response = ::Minfraud::HTTPService::Response.new(
|
64
63
|
status: raw.status.to_i,
|
65
64
|
body: raw.body,
|
@@ -78,7 +77,10 @@ module Minfraud
|
|
78
77
|
# Creates a unified request body from components converted to JSON
|
79
78
|
# @return [Hash] Request body
|
80
79
|
def request_body
|
81
|
-
MAPPING.keys.inject({})
|
80
|
+
MAPPING.keys.inject({}) do |mem, e|
|
81
|
+
next mem unless value = send(e)
|
82
|
+
mem.merge!(e.to_s => value.to_json)
|
83
|
+
end
|
82
84
|
end
|
83
85
|
|
84
86
|
# Creates memoized Minfraud::HTTPService::Request instance
|
@@ -46,7 +46,7 @@ module Minfraud
|
|
46
46
|
attr_accessor :phone_country_code
|
47
47
|
|
48
48
|
# Creates Minfraud::Components::Addressable instance
|
49
|
-
# This class is used as a parent class for Billing and Shipping components
|
49
|
+
# @note This class is used as a parent class for Billing and Shipping components
|
50
50
|
# @param [Hash] params hash of parameters
|
51
51
|
# @return [Minfraud::Components::Addressable] an Addressable instance
|
52
52
|
def initialize(params = {})
|
@@ -1,12 +1,22 @@
|
|
1
1
|
module Minfraud
|
2
2
|
module Components
|
3
|
-
#
|
4
|
-
# It defines a method which is used for basic JSON representation of PORO objects
|
3
|
+
# @note This class is used as a parent class for all other components
|
4
|
+
# @note It defines a method which is used for basic JSON representation of PORO objects
|
5
5
|
class Base
|
6
6
|
# @return [Hash] a JSON representation of component attributes
|
7
7
|
def to_json
|
8
|
-
instance_variables.inject({}) { |mem, e|
|
9
|
-
|
8
|
+
instance_variables.inject({}) { |mem, e| populate!(mem, e) }
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
# @note This method may modify passed hash. Non-existing instance variables are ignored
|
14
|
+
# @param [Hash] hash an accumulator
|
15
|
+
# @param [Symbol] v_sym an instance variable symbol
|
16
|
+
# @return [Hash] a hash containing a JSON representation of instance variable name and it's value
|
17
|
+
def populate!(hash, v_sym)
|
18
|
+
return hash unless value = instance_variable_get(v_sym)
|
19
|
+
hash.merge!(v_sym.to_s.gsub(/@/, '') => value.to_s)
|
10
20
|
end
|
11
21
|
end
|
12
22
|
end
|
@@ -16,13 +16,7 @@ module Minfraud
|
|
16
16
|
attr_accessor :time
|
17
17
|
|
18
18
|
# @attribute type
|
19
|
-
# @return [String] The type of event being scored
|
20
|
-
# => account_creation
|
21
|
-
# => account_login
|
22
|
-
# => purchase
|
23
|
-
# => recurring_purchase
|
24
|
-
# => referral
|
25
|
-
# => survey
|
19
|
+
# @return [String] The type of event being scored
|
26
20
|
enum_accessor :type, [:account_creation, :account_login, :purchase, :recurring_purchase, :referral, :survey]
|
27
21
|
|
28
22
|
# Creates Minfraud::Components::Event instance
|
@@ -4,10 +4,6 @@ module Minfraud
|
|
4
4
|
include ::Minfraud::Enum
|
5
5
|
# @attribute delivery_speed
|
6
6
|
# @return [String] The shipping delivery speed for the order. The valid values are:
|
7
|
-
# => same_day
|
8
|
-
# => overnight
|
9
|
-
# => expedited
|
10
|
-
# => standard
|
11
7
|
enum_accessor :delivery_speed, [:same_day, :overnight, :expedited, :standard]
|
12
8
|
|
13
9
|
# Creates Minfraud::Components::Shipping instance
|
data/lib/minfraud/enum.rb
CHANGED
@@ -25,7 +25,7 @@ module Minfraud
|
|
25
25
|
define_method("#{attribute}") { instance_variable_get("@#{attribute}") }
|
26
26
|
define_method "#{attribute}=" do |value|
|
27
27
|
raise NotEnumValueError, 'Value is not permitted' if value && !self.class.mapping[attribute].include?(value.intern)
|
28
|
-
instance_variable_set("@#{attribute}", value
|
28
|
+
instance_variable_set("@#{attribute}", value ? value.intern : nil)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -7,7 +7,7 @@ module Minfraud
|
|
7
7
|
def inspect(response)
|
8
8
|
return response if response.status == 200
|
9
9
|
|
10
|
-
raise *STATUS_CODES.fetch(response.code
|
10
|
+
raise *STATUS_CODES.fetch(response.code, [ServerError, 'Server error'])
|
11
11
|
end
|
12
12
|
|
13
13
|
# A hash that maps status codes returned by minFraud with errors & messages
|
@@ -14,7 +14,7 @@ module Minfraud
|
|
14
14
|
# Creates Minfraud::HTTPService::Request instance
|
15
15
|
# @param [Hash] params hash of parameters
|
16
16
|
# @return [Minfraud::HTTPService::Request] Request instance
|
17
|
-
def initialize(params)
|
17
|
+
def initialize(params = {})
|
18
18
|
@middleware = params[:middleware]
|
19
19
|
@server = params[:server]
|
20
20
|
end
|
@@ -16,16 +16,16 @@ module Minfraud
|
|
16
16
|
# Creates Minfraud::HTTPService::Response instance
|
17
17
|
# @param [Hash] params hash of parameters
|
18
18
|
# @return [Minfraud::HTTPService::Response] Response instance
|
19
|
-
def initialize(params)
|
19
|
+
def initialize(params = {})
|
20
20
|
@status = params[:status]
|
21
21
|
@body = params[:body]
|
22
22
|
@headers = params[:headers]
|
23
23
|
end
|
24
24
|
|
25
25
|
# Returns minFraud specific response code
|
26
|
-
# @return [
|
26
|
+
# @return [Symbol] minFraud specific request code
|
27
27
|
def code
|
28
|
-
body.code if body.respond_to?(:code)
|
28
|
+
body.code.intern if body.respond_to?(:code) && body.code
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
data/lib/minfraud/resolver.rb
CHANGED
@@ -4,8 +4,8 @@ module Minfraud
|
|
4
4
|
# @param [Object] context an object for variable assignment
|
5
5
|
# @param [Hash] params a hash of parameters
|
6
6
|
# @return [Array] a list of supplied params
|
7
|
-
#
|
8
|
-
def assign(context
|
7
|
+
# @note Raises RequestFormatError once unpermitted key is met
|
8
|
+
def assign(context, params)
|
9
9
|
Array(params).each do |key, value|
|
10
10
|
raise RequestFormatError, "#{key} does not belong to request document format" unless MAPPING[key]
|
11
11
|
|
data/lib/minfraud/version.rb
CHANGED
data/minfraud.gemspec
CHANGED
@@ -13,13 +13,16 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.homepage = "https://github.com/kushniryb/minfraud-api-v2"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
|
+
spec.required_ruby_version = '>= 1.9'
|
17
|
+
|
16
18
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
19
|
spec.bindir = "exe"
|
18
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
21
|
spec.require_paths = ["lib"]
|
20
22
|
|
21
|
-
spec.add_runtime_dependency 'faraday'
|
22
|
-
spec.add_runtime_dependency 'faraday_middleware'
|
23
|
+
spec.add_runtime_dependency 'faraday', '~> 0.9', '>= 0.9.1'
|
24
|
+
spec.add_runtime_dependency 'faraday_middleware', '~> 0.9', '>= 0.9.1'
|
25
|
+
spec.add_runtime_dependency 'hashie', '~> 3.0'
|
23
26
|
spec.add_development_dependency "bundler", "~> 1.12"
|
24
27
|
spec.add_development_dependency "rake", "~> 10.0"
|
25
28
|
spec.add_development_dependency "rspec", "~> 3.0"
|
metadata
CHANGED
@@ -1,83 +1,109 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minfraud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
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-
|
11
|
+
date: 2016-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '0.9'
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.9.1
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- -
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.9'
|
30
|
+
- - ! '>='
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
32
|
+
version: 0.9.1
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: faraday_middleware
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
|
-
- -
|
37
|
+
- - ~>
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0.9'
|
40
|
+
- - ! '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 0.9.1
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ~>
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0.9'
|
50
|
+
- - ! '>='
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 0.9.1
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: hashie
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ~>
|
32
58
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
59
|
+
version: '3.0'
|
34
60
|
type: :runtime
|
35
61
|
prerelease: false
|
36
62
|
version_requirements: !ruby/object:Gem::Requirement
|
37
63
|
requirements:
|
38
|
-
- -
|
64
|
+
- - ~>
|
39
65
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
66
|
+
version: '3.0'
|
41
67
|
- !ruby/object:Gem::Dependency
|
42
68
|
name: bundler
|
43
69
|
requirement: !ruby/object:Gem::Requirement
|
44
70
|
requirements:
|
45
|
-
- -
|
71
|
+
- - ~>
|
46
72
|
- !ruby/object:Gem::Version
|
47
73
|
version: '1.12'
|
48
74
|
type: :development
|
49
75
|
prerelease: false
|
50
76
|
version_requirements: !ruby/object:Gem::Requirement
|
51
77
|
requirements:
|
52
|
-
- -
|
78
|
+
- - ~>
|
53
79
|
- !ruby/object:Gem::Version
|
54
80
|
version: '1.12'
|
55
81
|
- !ruby/object:Gem::Dependency
|
56
82
|
name: rake
|
57
83
|
requirement: !ruby/object:Gem::Requirement
|
58
84
|
requirements:
|
59
|
-
- -
|
85
|
+
- - ~>
|
60
86
|
- !ruby/object:Gem::Version
|
61
87
|
version: '10.0'
|
62
88
|
type: :development
|
63
89
|
prerelease: false
|
64
90
|
version_requirements: !ruby/object:Gem::Requirement
|
65
91
|
requirements:
|
66
|
-
- -
|
92
|
+
- - ~>
|
67
93
|
- !ruby/object:Gem::Version
|
68
94
|
version: '10.0'
|
69
95
|
- !ruby/object:Gem::Dependency
|
70
96
|
name: rspec
|
71
97
|
requirement: !ruby/object:Gem::Requirement
|
72
98
|
requirements:
|
73
|
-
- -
|
99
|
+
- - ~>
|
74
100
|
- !ruby/object:Gem::Version
|
75
101
|
version: '3.0'
|
76
102
|
type: :development
|
77
103
|
prerelease: false
|
78
104
|
version_requirements: !ruby/object:Gem::Requirement
|
79
105
|
requirements:
|
80
|
-
- -
|
106
|
+
- - ~>
|
81
107
|
- !ruby/object:Gem::Version
|
82
108
|
version: '3.0'
|
83
109
|
description:
|
@@ -87,9 +113,10 @@ executables: []
|
|
87
113
|
extensions: []
|
88
114
|
extra_rdoc_files: []
|
89
115
|
files:
|
90
|
-
-
|
91
|
-
-
|
92
|
-
-
|
116
|
+
- .gitignore
|
117
|
+
- .rspec
|
118
|
+
- .travis.yml
|
119
|
+
- CHANGELOG.md
|
93
120
|
- CODE_OF_CONDUCT.md
|
94
121
|
- Gemfile
|
95
122
|
- LICENSE.txt
|
@@ -131,19 +158,18 @@ require_paths:
|
|
131
158
|
- lib
|
132
159
|
required_ruby_version: !ruby/object:Gem::Requirement
|
133
160
|
requirements:
|
134
|
-
- -
|
161
|
+
- - ! '>='
|
135
162
|
- !ruby/object:Gem::Version
|
136
|
-
version: '
|
163
|
+
version: '1.9'
|
137
164
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
165
|
requirements:
|
139
|
-
- -
|
166
|
+
- - ! '>='
|
140
167
|
- !ruby/object:Gem::Version
|
141
168
|
version: '0'
|
142
169
|
requirements: []
|
143
170
|
rubyforge_project:
|
144
|
-
rubygems_version: 2.
|
171
|
+
rubygems_version: 2.4.3
|
145
172
|
signing_key:
|
146
173
|
specification_version: 4
|
147
174
|
summary: Ruby interface to the MaxMind minFraud v2.0 API services
|
148
175
|
test_files: []
|
149
|
-
has_rdoc:
|