amex_tokenization_client 0.1.1 → 0.3.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 +4 -4
- data/.github/workflows/ci.yaml +30 -0
- data/CONTRIBUTING.md +12 -0
- data/Gemfile +0 -2
- data/README.md +13 -11
- data/amex_tokenization_client.gemspec +3 -4
- data/lib/amex_tokenization_client/provisioning_payload.rb +4 -2
- data/lib/amex_tokenization_client/request.rb +4 -1
- data/lib/amex_tokenization_client/version.rb +1 -1
- data/lib/amex_tokenization_client.rb +11 -2
- metadata +14 -28
- data/.travis.yml +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24251fb3b1e03df879a5b952e1b06e3da4172cae6a9de57cb23245141720987d
|
4
|
+
data.tar.gz: 8db1b2120594ec3b79326ec9370ce78afc7c0b3c424d27e61421290c28626d3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eed0f967cef118de7a0e4498e694a7c9086f949488d5ffca4826fd2783dc13e634dbe91e142dcadee5ad5acc12d2ba497391b544ceeb1b7c9601c99c3e7ce57b
|
7
|
+
data.tar.gz: 0fd116927a10484ea29290c320ac815716ad337f731dc2f0d382939e3715e1c65093ce2b01b58fa842e1fdb8f8265c1325565bf359f4957bbfeaac1de1d74e86
|
@@ -0,0 +1,30 @@
|
|
1
|
+
---
|
2
|
+
|
3
|
+
name: ci
|
4
|
+
|
5
|
+
on: [push]
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
test:
|
9
|
+
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
strategy:
|
12
|
+
matrix:
|
13
|
+
ruby-version: ['2.7', '3.0']
|
14
|
+
|
15
|
+
steps:
|
16
|
+
- uses: actions/checkout@v2
|
17
|
+
- name: Set up Ruby
|
18
|
+
uses: ruby/setup-ruby@v1
|
19
|
+
with:
|
20
|
+
ruby-version: ${{ matrix.ruby-version }}
|
21
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
22
|
+
- name: Run tests
|
23
|
+
env:
|
24
|
+
AETS_TOKEN_REQUESTER_ID: ${{ secrets.AETS_TOKEN_REQUESTER_ID }}
|
25
|
+
AETS_CLIENT_ID: ${{ secrets.AETS_CLIENT_ID }}
|
26
|
+
AETS_CLIENT_SECRET: ${{ secrets.AETS_CLIENT_SECRET }}
|
27
|
+
AETS_ENC_KEY_ID: ${{ secrets.AETS_ENC_KEY_ID }}
|
28
|
+
AETS_ENC_KEY: ${{ secrets.AETS_ENC_KEY }}
|
29
|
+
|
30
|
+
run: bundle exec rake
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
Bug reports and pull requests are [welcome on GitHub](https://github.com/varyonic/amex_enhanced_authorization).
|
4
|
+
|
5
|
+
## Development
|
6
|
+
|
7
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests.
|
8
|
+
|
9
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
10
|
+
|
11
|
+
To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`,
|
12
|
+
which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
# AmexTokenizationClient
|
2
2
|
|
3
3
|
[](https://badge.fury.io/rb/amex_tokenization_client)
|
4
|
-
[![
|
4
|
+
[![Github Actions ][actions_badge]][actions]
|
5
5
|
|
6
|
-
Unofficial Ruby wrapper for the American Express Tokenization Service (AETS)
|
6
|
+
Unofficial Ruby wrapper for the American Express Tokenization Service (AETS)
|
7
|
+
published via the [amex developer portal](https://developer.americanexpress.com/products/amex-token-service/overview),
|
8
|
+
see also [amex-api-java-client-core](https://github.com/americanexpress/amex-api-java-client-core).
|
7
9
|
|
8
10
|
## Installation
|
9
11
|
|
@@ -11,7 +13,6 @@ Add to your application's Gemfile:
|
|
11
13
|
|
12
14
|
```ruby
|
13
15
|
gem 'amex_tokenization_client'
|
14
|
-
gem 'jwe', git: 'https://github.com/varyonic/ruby-jwe', branch: 'PR18' # A256KW fix
|
15
16
|
```
|
16
17
|
|
17
18
|
And then execute:
|
@@ -20,18 +21,19 @@ And then execute:
|
|
20
21
|
|
21
22
|
## Usage
|
22
23
|
|
23
|
-
|
24
|
+
See [specs](https://github.com/varyonic/amex_enhanced_authorization/blob/master/spec/amex_tokenization_client_spec.rb) for sample usage.
|
24
25
|
|
25
|
-
##
|
26
|
+
## Contributions
|
26
27
|
|
27
|
-
|
28
|
+
Read [CONTRIBUTING](CONTRIBUTING.md) for details.
|
28
29
|
|
29
|
-
|
30
|
+
## License
|
30
31
|
|
31
|
-
|
32
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
32
33
|
|
33
|
-
|
34
|
+
Read the [LICENSE](LICENSE.md) for details.
|
34
35
|
|
35
|
-
|
36
|
+
Copyright (c) 2018-2021 [Varyonic](https://www.varyonic.com).
|
36
37
|
|
37
|
-
|
38
|
+
[actions_badge]: https://github.com/varyonic/amex_tokenization_client/workflows/ci/badge.svg
|
39
|
+
[actions]: https://github.com/varyonic/amex_tokenization_client/actions
|
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["piers@varyonic.com"]
|
11
11
|
|
12
12
|
spec.summary = "Unofficial Ruby wrapper for the American Express Tokenization Service (AETS)."
|
13
|
-
spec.homepage = "https://github.com/varyonic/
|
13
|
+
spec.homepage = "https://github.com/varyonic/amex_enhanced_authorization"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
# Specify which files should be added to the gem when it is released.
|
@@ -22,9 +22,8 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
23
|
spec.require_paths = ["lib"]
|
24
24
|
|
25
|
-
spec.add_dependency "jwe"
|
25
|
+
spec.add_dependency "jwe", ">= 0.4.0"
|
26
26
|
|
27
|
-
spec.add_development_dependency "
|
28
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
27
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
29
28
|
spec.add_development_dependency "rspec", "~> 3.0"
|
30
29
|
end
|
@@ -4,16 +4,18 @@ class AmexTokenizationClient
|
|
4
4
|
class ProvisioningPayload
|
5
5
|
attr_reader :account_number, :expiry_month, :expiry_year
|
6
6
|
attr_reader :name, :email, :is_on_file, :ip_address
|
7
|
+
attr_reader :user_id
|
7
8
|
|
8
|
-
def initialize(account_number:, name:, expiry_month:, expiry_year:, email:, is_on_file:, ip_address: nil)
|
9
|
+
def initialize(account_number:, name:, expiry_month:, expiry_year:, email:, is_on_file:, user_id: nil, ip_address: nil)
|
9
10
|
@account_number, @expiry_month, @expiry_year = account_number, expiry_month, expiry_year
|
10
11
|
@name, @email, @is_on_file, @ip_address = name, email, is_on_file, ip_address
|
12
|
+
@user_id = user_id
|
11
13
|
end
|
12
14
|
|
13
15
|
def to_json(encryption_key_id, encryption_key)
|
14
16
|
Hash[
|
15
17
|
account_data: account_data(encryption_key_id, encryption_key),
|
16
|
-
user_data: { name: name, email: email },
|
18
|
+
user_data: { user_id: user_id, name: name, email: email }.compact,
|
17
19
|
risk_assessment_data: risk_assessment_data
|
18
20
|
].to_json
|
19
21
|
end
|
@@ -53,8 +53,11 @@ class AmexTokenizationClient
|
|
53
53
|
end
|
54
54
|
|
55
55
|
class UnexpectedHttpResponse < StandardError
|
56
|
+
attr_reader :response
|
57
|
+
|
56
58
|
def initialize(response)
|
57
|
-
|
59
|
+
@response = response
|
60
|
+
super "#{response.message} (#{response.code}): #{response.body}"
|
58
61
|
end
|
59
62
|
end
|
60
63
|
|
@@ -8,6 +8,7 @@ require "amex_tokenization_client/provisioning_payload"
|
|
8
8
|
require "amex_tokenization_client/request"
|
9
9
|
require "amex_tokenization_client/version"
|
10
10
|
|
11
|
+
# https://developer.americanexpress.com/products/amex-token-service/resources
|
11
12
|
class AmexTokenizationClient
|
12
13
|
attr_reader :host
|
13
14
|
attr_reader :base_path
|
@@ -36,6 +37,13 @@ class AmexTokenizationClient
|
|
36
37
|
response
|
37
38
|
end
|
38
39
|
|
40
|
+
# @return [Hash] token_ref_id and other values.
|
41
|
+
def provisionings(kargs)
|
42
|
+
response = JSON.parse send_authorized_request('POST', 'provisionings', provisioning_payload(kargs))
|
43
|
+
response.merge! JSON.parse jwe_decrypt response.delete('secure_token_data')
|
44
|
+
response
|
45
|
+
end
|
46
|
+
|
39
47
|
def notifications(kargs)
|
40
48
|
send_authorized_request('POST', 'notifications', notifications_payload(kargs))
|
41
49
|
end
|
@@ -49,11 +57,11 @@ class AmexTokenizationClient
|
|
49
57
|
end
|
50
58
|
|
51
59
|
def provisioning_payload(kargs)
|
52
|
-
ProvisioningPayload.new(kargs).to_json(encryption_key_id, encryption_key)
|
60
|
+
ProvisioningPayload.new(**kargs).to_json(encryption_key_id, encryption_key)
|
53
61
|
end
|
54
62
|
|
55
63
|
def notifications_payload(kargs)
|
56
|
-
NotificationsPayload.new(kargs).to_json(encryption_key_id, encryption_key)
|
64
|
+
NotificationsPayload.new(**kargs).to_json(encryption_key_id, encryption_key)
|
57
65
|
end
|
58
66
|
|
59
67
|
def jwe_decrypt(data)
|
@@ -88,6 +96,7 @@ class AmexTokenizationClient
|
|
88
96
|
Hash[
|
89
97
|
'Content-Type' => 'application/json',
|
90
98
|
'Content-Language' => 'en-US',
|
99
|
+
'Accept-Language' => 'en',
|
91
100
|
'x-amex-token-requester-id' => token_requester_id,
|
92
101
|
'x-amex-api-key' => client_id,
|
93
102
|
'x-amex-request-id' => SecureRandom.uuid,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amex_tokenization_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piers Chambers
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jwe
|
@@ -16,42 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.4.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.16'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '1.16'
|
26
|
+
version: 0.4.0
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rake
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
31
|
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
33
|
+
version: '13.0'
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
38
|
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
40
|
+
version: '13.0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: rspec
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,16 +52,17 @@ dependencies:
|
|
66
52
|
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: '3.0'
|
69
|
-
description:
|
55
|
+
description:
|
70
56
|
email:
|
71
57
|
- piers@varyonic.com
|
72
58
|
executables: []
|
73
59
|
extensions: []
|
74
60
|
extra_rdoc_files: []
|
75
61
|
files:
|
62
|
+
- ".github/workflows/ci.yaml"
|
76
63
|
- ".gitignore"
|
77
64
|
- ".rspec"
|
78
|
-
-
|
65
|
+
- CONTRIBUTING.md
|
79
66
|
- Gemfile
|
80
67
|
- LICENSE.txt
|
81
68
|
- README.md
|
@@ -88,11 +75,11 @@ files:
|
|
88
75
|
- lib/amex_tokenization_client/provisioning_payload.rb
|
89
76
|
- lib/amex_tokenization_client/request.rb
|
90
77
|
- lib/amex_tokenization_client/version.rb
|
91
|
-
homepage: https://github.com/varyonic/
|
78
|
+
homepage: https://github.com/varyonic/amex_enhanced_authorization
|
92
79
|
licenses:
|
93
80
|
- MIT
|
94
81
|
metadata: {}
|
95
|
-
post_install_message:
|
82
|
+
post_install_message:
|
96
83
|
rdoc_options: []
|
97
84
|
require_paths:
|
98
85
|
- lib
|
@@ -107,9 +94,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
94
|
- !ruby/object:Gem::Version
|
108
95
|
version: '0'
|
109
96
|
requirements: []
|
110
|
-
|
111
|
-
|
112
|
-
signing_key:
|
97
|
+
rubygems_version: 3.2.15
|
98
|
+
signing_key:
|
113
99
|
specification_version: 4
|
114
100
|
summary: Unofficial Ruby wrapper for the American Express Tokenization Service (AETS).
|
115
101
|
test_files: []
|