trustev 0.3.2 → 0.4.0.pre.alpha
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/README.md +3 -329
- data/Rakefile +1 -2
- data/lib/trustev.rb +20 -68
- data/lib/trustev/{authenticate.rb → 1.2/authenticate.rb} +0 -0
- data/lib/trustev/{digital_signature.rb → 1.2/digital_signature.rb} +0 -0
- data/lib/trustev/{profile.rb → 1.2/profile.rb} +1 -1
- data/lib/trustev/{social.rb → 1.2/social.rb} +0 -0
- data/lib/trustev/{transaction.rb → 1.2/transaction.rb} +0 -0
- data/lib/trustev/1.2/trustev.rb +66 -0
- data/lib/trustev/2.0/address.rb +41 -0
- data/lib/trustev/2.0/authenticate.rb +40 -0
- data/lib/trustev/2.0/case.rb +45 -0
- data/lib/trustev/2.0/case_attribute.rb +24 -0
- data/lib/trustev/2.0/customer.rb +32 -0
- data/lib/trustev/2.0/customer_address.rb +5 -0
- data/lib/trustev/2.0/decision.rb +17 -0
- data/lib/trustev/2.0/email.rb +35 -0
- data/lib/trustev/2.0/item.rb +34 -0
- data/lib/trustev/2.0/payment.rb +33 -0
- data/lib/trustev/2.0/social.rb +38 -0
- data/lib/trustev/2.0/status.rb +34 -0
- data/lib/trustev/2.0/timestamp.rb +17 -0
- data/lib/trustev/2.0/transaction.rb +30 -0
- data/lib/trustev/2.0/transaction_address.rb +5 -0
- data/lib/trustev/2.0/trustev.rb +51 -0
- data/lib/trustev/error.rb +5 -6
- data/lib/trustev/version.rb +1 -1
- data/test/{authenticate_test.rb → 1.2/authenticate_test.rb} +0 -0
- data/test/{digital_signature_test.rb → 1.2/digital_signature_test.rb} +0 -0
- data/test/{error_test.rb → 1.2/error_test.rb} +3 -3
- data/test/{profile_test.rb → 1.2/profile_test.rb} +0 -0
- data/test/{social_test.rb → 1.2/social_test.rb} +0 -0
- data/test/{test_helper.rb → 1.2/test_helper.rb} +3 -2
- data/test/{transaction_test.rb → 1.2/transaction_test.rb} +0 -0
- data/test/2.0/authenticate_test.rb +13 -0
- data/test/2.0/case_test.rb +31 -0
- data/test/2.0/customer_address_test.rb +35 -0
- data/test/2.0/customer_test.rb +31 -0
- data/test/2.0/decision_test.rb +13 -0
- data/test/2.0/email_test.rb +33 -0
- data/test/2.0/error_test.rb +18 -0
- data/test/2.0/item_test.rb +33 -0
- data/test/2.0/payment_test.rb +33 -0
- data/test/2.0/social_test.rb +33 -0
- data/test/2.0/status_test.rb +27 -0
- data/test/2.0/test_helper.rb +165 -0
- data/test/2.0/transaction_address_Test.rb +35 -0
- data/test/2.0/transaction_test.rb +31 -0
- data/trustev.gemspec +3 -0
- metadata +111 -24
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'trustev/error'
|
2
|
+
|
3
|
+
module Trustev
|
4
|
+
|
5
|
+
@@api_base = 'https://api.trustev.com/v'
|
6
|
+
|
7
|
+
STATUS_TYPES = {
|
8
|
+
init: 0,
|
9
|
+
placed: 1,
|
10
|
+
refunded: 2,
|
11
|
+
rejected: 3,
|
12
|
+
completed: 5,
|
13
|
+
chargeback: 8
|
14
|
+
}
|
15
|
+
|
16
|
+
REASON_TYPES = {
|
17
|
+
system: 0,
|
18
|
+
fraud: 1,
|
19
|
+
complaint: 2,
|
20
|
+
remorse: 3,
|
21
|
+
other: 4
|
22
|
+
}
|
23
|
+
|
24
|
+
SCORE_SOURCES = {
|
25
|
+
address: 0,
|
26
|
+
behaviour: 1,
|
27
|
+
device: 2,
|
28
|
+
email: 3,
|
29
|
+
facebook: 4,
|
30
|
+
IP: 5,
|
31
|
+
transaction: 6,
|
32
|
+
trustev: 7,
|
33
|
+
velocity: 8
|
34
|
+
}
|
35
|
+
|
36
|
+
SCORE_PARAMETERS = {
|
37
|
+
overall: 0,
|
38
|
+
billing: 1,
|
39
|
+
delivery: 2,
|
40
|
+
input: 3,
|
41
|
+
domain: 4,
|
42
|
+
address: 5,
|
43
|
+
IP: 6,
|
44
|
+
proxy: 7,
|
45
|
+
VPN: 8,
|
46
|
+
value: 9,
|
47
|
+
velocity: 10,
|
48
|
+
legitimacy: 11,
|
49
|
+
pattern: 12,
|
50
|
+
hustle: 13
|
51
|
+
}
|
52
|
+
|
53
|
+
def self.raise_error(response)
|
54
|
+
raise Error.new('Bad API response', response.code, response.body.message) if response.code != 200
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.invalid_token?
|
58
|
+
now = Time.now.to_i
|
59
|
+
timestamp = @@token_expire
|
60
|
+
@@token.nil? || timestamp-600 <= now
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.send_request(path, body, method, expect_json=false, requires_token=true)
|
64
|
+
Trustev.do_send_request(path, { request: body }, method, expect_json, requires_token)
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Trustev
|
2
|
+
class Address < CaseAttribute
|
3
|
+
def create
|
4
|
+
super(Trustev.send_request url, build, 'POST')
|
5
|
+
end
|
6
|
+
|
7
|
+
def retrieve
|
8
|
+
raise Error.new('ID is required') if @opts[:id].nil?
|
9
|
+
Trustev.send_request url(true), {}, 'GET'
|
10
|
+
end
|
11
|
+
|
12
|
+
def retrieve_all
|
13
|
+
Trustev.send_request url, {}, 'GET'
|
14
|
+
end
|
15
|
+
|
16
|
+
def update
|
17
|
+
raise Error.new('ID is required') if @opts[:id].nil?
|
18
|
+
Trustev.send_request url(true), build, 'PUT'
|
19
|
+
end
|
20
|
+
|
21
|
+
def build
|
22
|
+
address = {
|
23
|
+
FirstName: @opts[:first_name],
|
24
|
+
LastName: @opts[:last_name],
|
25
|
+
Address1: @opts[:address1],
|
26
|
+
Address2: @opts[:address2],
|
27
|
+
Address3: @opts[:address3],
|
28
|
+
City: @opts[:city],
|
29
|
+
State: @opts[:state],
|
30
|
+
PostalCode: @opts[:postal_code],
|
31
|
+
Type: @opts[:type],
|
32
|
+
CountryCode: @opts[:country_code],
|
33
|
+
Timestamp: @opts[:timestamp],
|
34
|
+
IsDefault: @opts[:is_default]
|
35
|
+
}
|
36
|
+
address[:id] = @opts[:id] unless @opts[:id].nil?
|
37
|
+
|
38
|
+
address
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'openssl'
|
2
|
+
require 'time'
|
3
|
+
|
4
|
+
module Trustev
|
5
|
+
class Authenticate
|
6
|
+
|
7
|
+
SERVICE_URL = 'Token'
|
8
|
+
|
9
|
+
def self.retrieve_token
|
10
|
+
|
11
|
+
raise Error.new('No Username provided.') unless Trustev.username
|
12
|
+
raise Error.new('No Password provided.') unless Trustev.password
|
13
|
+
raise Error.new('No Shared Secret provided.') unless Trustev.shared_secret
|
14
|
+
|
15
|
+
time = Trustev::Timestamp.new
|
16
|
+
|
17
|
+
body = {
|
18
|
+
UserName: Trustev.username,
|
19
|
+
Timestamp: time.to_s,
|
20
|
+
PasswordHash: sha256hash(Trustev.password, time),
|
21
|
+
UserNameHash: sha256hash(Trustev.username, time),
|
22
|
+
}
|
23
|
+
|
24
|
+
response = Trustev.send_request SERVICE_URL, body, 'POST', true, false
|
25
|
+
Trustev.token = response[:APIToken]
|
26
|
+
Trustev.token_expire = Trustev::Timestamp.new(Time.parse response[:ExpireAt])
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def self.sha256hash(to_hash, time)
|
32
|
+
sha256 = OpenSSL::Digest::SHA256.new
|
33
|
+
sha256 << "#{time.to_s}.#{to_hash}"
|
34
|
+
hash_part_1 = sha256.hexdigest
|
35
|
+
sha256 = OpenSSL::Digest::SHA256.new
|
36
|
+
sha256 << "#{hash_part_1}.#{Trustev.shared_secret}"
|
37
|
+
sha256.hexdigest
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'digest'
|
2
|
+
require 'open-uri'
|
3
|
+
|
4
|
+
module Trustev
|
5
|
+
class Case
|
6
|
+
|
7
|
+
SERVICE_URL = 'Case'
|
8
|
+
|
9
|
+
def initialize(case_id=nil, opts={})
|
10
|
+
@case_id = case_id
|
11
|
+
@opts = opts
|
12
|
+
end
|
13
|
+
|
14
|
+
def create
|
15
|
+
response = Trustev.send_request SERVICE_URL, build, 'POST'
|
16
|
+
@case_id = response[:Id]
|
17
|
+
response
|
18
|
+
end
|
19
|
+
|
20
|
+
def update
|
21
|
+
raise Error.new('Case ID is required.') if @case_id.nil?
|
22
|
+
Trustev.send_request "#{SERVICE_URL}/#{URI::encode @case_id}", build, 'PUT'
|
23
|
+
end
|
24
|
+
|
25
|
+
def retrieve
|
26
|
+
raise Error.new('Case ID is required.') if @case_id.nil?
|
27
|
+
Trustev.send_request "#{SERVICE_URL}/#{URI::encode @case_id}", [], 'GET'
|
28
|
+
end
|
29
|
+
|
30
|
+
def build
|
31
|
+
keys = { session_id: :SessionID,
|
32
|
+
case_number: :CaseNumber,
|
33
|
+
transaction: :Transaction,
|
34
|
+
customer: :Customer,
|
35
|
+
statuses: :Statuses,
|
36
|
+
payments: :Payments,
|
37
|
+
timestamp: :Timestamp }
|
38
|
+
trustev_case = {}
|
39
|
+
@opts.each do |key, value|
|
40
|
+
trustev_case[keys[key]] = value
|
41
|
+
end
|
42
|
+
trustev_case
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
3
|
+
module Trustev
|
4
|
+
class CaseAttribute
|
5
|
+
def initialize(opts)
|
6
|
+
@opts = opts
|
7
|
+
end
|
8
|
+
|
9
|
+
def create(response)
|
10
|
+
@opts[:id] = response[:Id]
|
11
|
+
response
|
12
|
+
end
|
13
|
+
|
14
|
+
def url(with_identifier=false)
|
15
|
+
raise Error.new('Case ID is required') if @opts[:case_id].nil?
|
16
|
+
url = "case/#{URI::encode @opts[:case_id]}/#{self.class::SERVICE_URL}"
|
17
|
+
if with_identifier
|
18
|
+
raise Error.new('ID is required') if @opts[:id].nil?
|
19
|
+
url = "#{url}/#{@opts[:id]}"
|
20
|
+
end
|
21
|
+
url
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Trustev
|
2
|
+
class Customer < CaseAttribute
|
3
|
+
|
4
|
+
SERVICE_URL = 'customer'
|
5
|
+
|
6
|
+
def create
|
7
|
+
Trustev.send_request url, build, 'POST'
|
8
|
+
end
|
9
|
+
|
10
|
+
def retrieve
|
11
|
+
Trustev.send_request url, {}, 'GET'
|
12
|
+
end
|
13
|
+
|
14
|
+
def update
|
15
|
+
Trustev.send_request url, build, 'PUT'
|
16
|
+
end
|
17
|
+
|
18
|
+
def build
|
19
|
+
customer = {
|
20
|
+
FirstName: @opts[:first_name],
|
21
|
+
LastName: @opts[:last_name],
|
22
|
+
Emails: @opts[:emails],
|
23
|
+
PhoneNumber: @opts[:phone_number],
|
24
|
+
DateOfBirth: @opts[:dob],
|
25
|
+
Addresses: @opts[:addresses],
|
26
|
+
SocialAccounts: @opts[:social_accounts]
|
27
|
+
}
|
28
|
+
customer[:id] = @opts[:id] unless @opts[:id].nil?
|
29
|
+
customer
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
3
|
+
module Trustev
|
4
|
+
class Decision
|
5
|
+
|
6
|
+
SERVICE_URL = 'Decision'
|
7
|
+
|
8
|
+
def initialize(case_id)
|
9
|
+
raise Error.new('Case ID is required') if case_id.nil?
|
10
|
+
@case_id = case_id
|
11
|
+
end
|
12
|
+
|
13
|
+
def retrieve
|
14
|
+
Trustev.send_request "#{SERVICE_URL}/#{URI::encode @case_id}", [], 'GET'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Trustev
|
2
|
+
class Email < CaseAttribute
|
3
|
+
|
4
|
+
SERVICE_URL = 'customer/email'
|
5
|
+
|
6
|
+
def create
|
7
|
+
raise Error.new('Email is required') if @opts[:email].nil?
|
8
|
+
Trustev.send_request url, build, 'POST'
|
9
|
+
end
|
10
|
+
|
11
|
+
def retrieve
|
12
|
+
raise Error.new('ID is required') if @opts[:id].nil?
|
13
|
+
Trustev.send_request url(true), {}, 'GET'
|
14
|
+
end
|
15
|
+
|
16
|
+
def retrieve_all
|
17
|
+
Trustev.send_request url, {}, 'GET'
|
18
|
+
end
|
19
|
+
|
20
|
+
def update
|
21
|
+
raise Error.new('Email is required') if @opts[:email].nil?
|
22
|
+
raise Error.new('ID is required') if @opts[:id].nil?
|
23
|
+
Trustev.send_request url(true), build, 'PUT'
|
24
|
+
end
|
25
|
+
|
26
|
+
def build
|
27
|
+
email = {
|
28
|
+
EmailAddress: @opts[:email],
|
29
|
+
IsDefault: @opts[:is_default]
|
30
|
+
}
|
31
|
+
email[:id] = @opts[:id] unless @opts[:id].nil?
|
32
|
+
email
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Trustev
|
2
|
+
class Item < CaseAttribute
|
3
|
+
|
4
|
+
SERVICE_URL = 'transaction/item'
|
5
|
+
|
6
|
+
def create
|
7
|
+
Trustev.send_request url, build, 'POST'
|
8
|
+
end
|
9
|
+
|
10
|
+
def retrieve
|
11
|
+
raise Error.new('ID is required') if @opts[:id].nil?
|
12
|
+
Trustev.send_request url(true), {}, 'GET'
|
13
|
+
end
|
14
|
+
|
15
|
+
def retrieve_all
|
16
|
+
Trustev.send_request url, {}, 'GET'
|
17
|
+
end
|
18
|
+
|
19
|
+
def update
|
20
|
+
raise Error.new('ID is required') if @opts[:id].nil?
|
21
|
+
Trustev.send_request url(true), build, 'PUT'
|
22
|
+
end
|
23
|
+
|
24
|
+
def build
|
25
|
+
item = {
|
26
|
+
Name: @opts[:name],
|
27
|
+
Quantity: @opts[:quantity],
|
28
|
+
ItemValue: @opts[:item_value]
|
29
|
+
}
|
30
|
+
item[:id] = @opts[:id] unless @opts[:id].nil?
|
31
|
+
item
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Trustev
|
2
|
+
class Payment < CaseAttribute
|
3
|
+
|
4
|
+
SERVICE_URL = 'payment'
|
5
|
+
|
6
|
+
def create
|
7
|
+
Trustev.send_request url, build, 'POST'
|
8
|
+
end
|
9
|
+
|
10
|
+
def retrieve
|
11
|
+
raise Error.new('ID is required') if @opts[:id].nil?
|
12
|
+
Trustev.send_request url(true), {}, 'GET'
|
13
|
+
end
|
14
|
+
|
15
|
+
def retrieve_all
|
16
|
+
Trustev.send_request url, {}, 'GET'
|
17
|
+
end
|
18
|
+
|
19
|
+
def update
|
20
|
+
raise Error.new('ID is required') if @opts[:id].nil?
|
21
|
+
Trustev.send_request url(true), build, 'PUT'
|
22
|
+
end
|
23
|
+
|
24
|
+
def build
|
25
|
+
payment = {
|
26
|
+
PaymentType: @opts[:payment_type],
|
27
|
+
BINNumber: @opts[:bin_number]
|
28
|
+
}
|
29
|
+
payment[:id] = @opts[:id] unless @opts[:id].nil?
|
30
|
+
payment
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Trustev
|
2
|
+
class Social < CaseAttribute
|
3
|
+
|
4
|
+
SERVICE_URL = 'customer/socialaccount'
|
5
|
+
|
6
|
+
def create
|
7
|
+
Trustev.send_request url, build, 'POST'
|
8
|
+
end
|
9
|
+
|
10
|
+
def retrieve
|
11
|
+
raise Error.new('ID is required') if @opts[:id].nil?
|
12
|
+
Trustev.send_request url(true), {}, 'GET'
|
13
|
+
end
|
14
|
+
|
15
|
+
def retrieve_all
|
16
|
+
Trustev.send_request url, {}, 'GET'
|
17
|
+
end
|
18
|
+
|
19
|
+
def update
|
20
|
+
raise Error.new('ID is required') if @opts[:id].nil?
|
21
|
+
Trustev.send_request url(true), build, 'PUT'
|
22
|
+
end
|
23
|
+
|
24
|
+
def build
|
25
|
+
social = {
|
26
|
+
SocialId: @opts[:social_id],
|
27
|
+
ShortTermAccessToken: @opts[:short_term_access_token],
|
28
|
+
LongTermAccessToken: @opts[:long_term_access_token],
|
29
|
+
ShortTermAccessTokenExpiry: @opts[:short_term_access_token_expiry],
|
30
|
+
LongTermAccessTokenExpiry: @opts[:long_term_access_token_expiry],
|
31
|
+
Secret: @opts[:secret],
|
32
|
+
Timestamp: @opts[:timestamp]
|
33
|
+
}
|
34
|
+
social[:id] = @opts[:id] unless @opts[:id].nil?
|
35
|
+
social
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Trustev
|
2
|
+
class Status < CaseAttribute
|
3
|
+
|
4
|
+
SERVICE_URL = 'status'
|
5
|
+
|
6
|
+
def create
|
7
|
+
Trustev.send_request url, build, 'POST'
|
8
|
+
end
|
9
|
+
|
10
|
+
def retrieve
|
11
|
+
raise Error.new('ID is required') if @opts[:id].nil?
|
12
|
+
Trustev.send_request url(true), {}, 'GET'
|
13
|
+
end
|
14
|
+
|
15
|
+
def retrieve_all
|
16
|
+
Trustev.send_request url, {}, 'GET'
|
17
|
+
end
|
18
|
+
|
19
|
+
def update
|
20
|
+
raise Error.new('ID is required') if @opts[:id].nil?
|
21
|
+
Trustev.send_request url(true), build, 'PUT'
|
22
|
+
end
|
23
|
+
|
24
|
+
def build
|
25
|
+
status = {
|
26
|
+
Status: @opts[:status],
|
27
|
+
Comment: @opts[:comment],
|
28
|
+
Timestamp: @opts[:timestamp]
|
29
|
+
}
|
30
|
+
status[:id] = @opts[:id] unless @opts[:id].nil?
|
31
|
+
status
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|