sumsub-ruby-sdk 0.1.1 → 0.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.
- checksums.yaml +4 -4
- data/.gitignore +24 -0
- data/CHANGELOG.md +12 -0
- data/Gemfile.lock +26 -26
- data/README.md +3 -3
- data/lib/sumsub/configuration.rb +2 -0
- data/lib/sumsub/message_signer.rb +2 -0
- data/lib/sumsub/parser.rb +2 -0
- data/lib/sumsub/request.rb +43 -17
- data/lib/sumsub/struct/address.rb +2 -2
- data/lib/sumsub/struct/applicant.rb +3 -2
- data/lib/sumsub/struct/applicant_update.rb +7 -4
- data/lib/sumsub/struct/base_struct.rb +4 -1
- data/lib/sumsub/struct/document_metadata.rb +3 -3
- data/lib/sumsub/struct/error_response.rb +2 -2
- data/lib/sumsub/struct/info.rb +2 -3
- data/lib/sumsub/struct/review_result.rb +14 -0
- data/lib/sumsub/struct/webhook_payload.rb +23 -0
- data/lib/sumsub/types.rb +137 -0
- data/lib/sumsub/version.rb +1 -1
- data/lib/sumsub/webhook_sender.rb +15 -0
- data/lib/sumsub.rb +27 -14
- data/sumsub-ruby-sdk.gemspec +8 -13
- metadata +34 -30
- data/lib/types.rb +0 -39
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9413196d575bbddc26d58047d48137b768f70aa7b257187073338b468c109068
|
|
4
|
+
data.tar.gz: 6a291133d2e3a5417ec4f83ca3f30f24130d2e2018f3d768e068345ecf20198d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bda4bb1f88238b57859559b6fcf740550b92225a0290b764a6c29560e6567da41fc5b994b9caac0ec5d273304108abc800d8da2fb5a4d536c2cf2553a75beebd
|
|
7
|
+
data.tar.gz: f36d963aae4ef9416227e85893fcb58369d40a9302916ddd74eeca8e2c532ada9608ac12296a7625525b8123f70f8607812ae8b54829ac9b63df63d08620bacc
|
data/.gitignore
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
# See https://help.github.com/articles/ignoring-files
|
|
2
|
+
# for more about ignoring files.
|
|
3
|
+
#
|
|
4
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
|
5
|
+
# or operating system, you probably want to add a global ignore instead:
|
|
6
|
+
# git config --global core.excludesfile '~/.gitignore_global'
|
|
7
|
+
|
|
8
|
+
*.gem
|
|
9
|
+
*.rbc
|
|
10
|
+
|
|
1
11
|
/.bundle/
|
|
2
12
|
/.yardoc
|
|
3
13
|
/_yardoc/
|
|
@@ -10,4 +20,18 @@
|
|
|
10
20
|
# rspec failure tracking
|
|
11
21
|
.rspec_status
|
|
12
22
|
|
|
23
|
+
# Other
|
|
13
24
|
test_script
|
|
25
|
+
|
|
26
|
+
# Environment normalization:
|
|
27
|
+
/.bundle/
|
|
28
|
+
/vendor/bundle/*
|
|
29
|
+
!/vendor/bundle/.keep
|
|
30
|
+
|
|
31
|
+
# For a library or gem, you might want to ignore these files since the code is
|
|
32
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
33
|
+
/.ruby-version
|
|
34
|
+
/.ruby-gemset
|
|
35
|
+
|
|
36
|
+
# Unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
|
37
|
+
/.rvmrc
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
### 0.1.2
|
|
2
|
+
- An instance of `Sumsub::Request` returns now only the url without `/resources` (e.g., `sumsub.url` was `https://api.sumsub.com/resources` and now it is `https://api.sumsub.com`).
|
|
3
|
+
|
|
4
|
+
### 0.1.3
|
|
5
|
+
- Require level name as argument in `get_access_token` of `Sumsub::Request`. This change makes the method compatible with the [recent updates in the Sumsub SDK](https://developers.sumsub.com/migrations/sdk.html#sdk-migration-guide).
|
|
6
|
+
|
|
7
|
+
### 0.2.0
|
|
8
|
+
- General minor fixes (don't require dev gems in the production build, add extra ignored files in `.gitignore`, etc);
|
|
9
|
+
- Move the `require 'dry-struct'` to the `lib/sumsub.rb`, so we don't need to always require it in our structs;
|
|
10
|
+
- Add [`generate_external_link`](https://developers.sumsub.com/api-reference/additional-methods.html#generating-websdk-external-link-for-particular-user);
|
|
11
|
+
- Updated structs with new fields;
|
|
12
|
+
- Add `WebhookSender` with `get_payload` class method to format the payload before informing it to the `verify_webhook_sender` method (those strange string transformations are necessary in order to receive the right answer from Sumsub).
|
data/Gemfile.lock
CHANGED
|
@@ -1,36 +1,32 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
sumsub-ruby-sdk (0.1.
|
|
5
|
-
dry-struct (~> 1.4
|
|
6
|
-
http (
|
|
7
|
-
mime-types (~> 3.3
|
|
8
|
-
pry (~> 0.14.1)
|
|
9
|
-
rspec (~> 3.10.0)
|
|
10
|
-
timecop (~> 0.9.4)
|
|
11
|
-
webmock (~> 3.13.0)
|
|
4
|
+
sumsub-ruby-sdk (0.1.3)
|
|
5
|
+
dry-struct (~> 1.4)
|
|
6
|
+
http (>= 4.0)
|
|
7
|
+
mime-types (~> 3.3)
|
|
12
8
|
|
|
13
9
|
GEM
|
|
14
10
|
remote: https://rubygems.org/
|
|
15
11
|
specs:
|
|
16
|
-
addressable (2.
|
|
12
|
+
addressable (2.8.0)
|
|
17
13
|
public_suffix (>= 2.0.2, < 5.0)
|
|
18
14
|
coderay (1.1.3)
|
|
19
|
-
concurrent-ruby (1.1.
|
|
15
|
+
concurrent-ruby (1.1.9)
|
|
20
16
|
crack (0.4.5)
|
|
21
17
|
rexml
|
|
22
18
|
diff-lcs (1.4.4)
|
|
23
19
|
domain_name (0.5.20190701)
|
|
24
20
|
unf (>= 0.0.5, < 1.0.0)
|
|
25
|
-
dry-configurable (0.
|
|
21
|
+
dry-configurable (0.13.0)
|
|
26
22
|
concurrent-ruby (~> 1.0)
|
|
27
|
-
dry-core (~> 0.
|
|
28
|
-
dry-container (0.
|
|
23
|
+
dry-core (~> 0.6)
|
|
24
|
+
dry-container (0.9.0)
|
|
29
25
|
concurrent-ruby (~> 1.0)
|
|
30
|
-
dry-configurable (~> 0.
|
|
31
|
-
dry-core (0.
|
|
26
|
+
dry-configurable (~> 0.13, >= 0.13.0)
|
|
27
|
+
dry-core (0.7.1)
|
|
32
28
|
concurrent-ruby (~> 1.0)
|
|
33
|
-
dry-inflector (0.2.
|
|
29
|
+
dry-inflector (0.2.1)
|
|
34
30
|
dry-logic (1.2.0)
|
|
35
31
|
concurrent-ruby (~> 1.0)
|
|
36
32
|
dry-core (~> 0.5, >= 0.5)
|
|
@@ -44,7 +40,7 @@ GEM
|
|
|
44
40
|
dry-core (~> 0.5, >= 0.5)
|
|
45
41
|
dry-inflector (~> 0.1, >= 0.1.2)
|
|
46
42
|
dry-logic (~> 1.0, >= 1.0.2)
|
|
47
|
-
ffi (1.15.
|
|
43
|
+
ffi (1.15.4)
|
|
48
44
|
ffi-compiler (1.0.1)
|
|
49
45
|
ffi (>= 1.0.0)
|
|
50
46
|
rake
|
|
@@ -54,7 +50,7 @@ GEM
|
|
|
54
50
|
http-cookie (~> 1.0)
|
|
55
51
|
http-form_data (~> 2.2)
|
|
56
52
|
llhttp-ffi (~> 0.0.1)
|
|
57
|
-
http-cookie (1.0.
|
|
53
|
+
http-cookie (1.0.4)
|
|
58
54
|
domain_name (~> 0.5)
|
|
59
55
|
http-form_data (2.3.0)
|
|
60
56
|
ice_nine (0.11.2)
|
|
@@ -62,14 +58,14 @@ GEM
|
|
|
62
58
|
ffi-compiler (~> 1.0)
|
|
63
59
|
rake (~> 13.0)
|
|
64
60
|
method_source (1.0.0)
|
|
65
|
-
mime-types (3.
|
|
61
|
+
mime-types (3.4.1)
|
|
66
62
|
mime-types-data (~> 3.2015)
|
|
67
|
-
mime-types-data (3.2021.
|
|
63
|
+
mime-types-data (3.2021.1115)
|
|
68
64
|
pry (0.14.1)
|
|
69
65
|
coderay (~> 1.1)
|
|
70
66
|
method_source (~> 1.0)
|
|
71
67
|
public_suffix (4.0.6)
|
|
72
|
-
rake (13.0.
|
|
68
|
+
rake (13.0.6)
|
|
73
69
|
rexml (3.2.5)
|
|
74
70
|
rspec (3.10.0)
|
|
75
71
|
rspec-core (~> 3.10.0)
|
|
@@ -83,23 +79,27 @@ GEM
|
|
|
83
79
|
rspec-mocks (3.10.2)
|
|
84
80
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
85
81
|
rspec-support (~> 3.10.0)
|
|
86
|
-
rspec-support (3.10.
|
|
82
|
+
rspec-support (3.10.3)
|
|
87
83
|
timecop (0.9.4)
|
|
88
84
|
unf (0.1.4)
|
|
89
85
|
unf_ext
|
|
90
|
-
unf_ext (0.0.
|
|
91
|
-
webmock (3.
|
|
92
|
-
addressable (>= 2.
|
|
86
|
+
unf_ext (0.0.8)
|
|
87
|
+
webmock (3.14.0)
|
|
88
|
+
addressable (>= 2.8.0)
|
|
93
89
|
crack (>= 0.3.2)
|
|
94
90
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
95
91
|
|
|
96
92
|
PLATFORMS
|
|
93
|
+
ruby
|
|
97
94
|
x86_64-linux
|
|
98
95
|
|
|
99
96
|
DEPENDENCIES
|
|
97
|
+
pry (~> 0.14)
|
|
100
98
|
rake (~> 13.0)
|
|
101
99
|
rspec (~> 3.0)
|
|
102
100
|
sumsub-ruby-sdk!
|
|
101
|
+
timecop (~> 0.9)
|
|
102
|
+
webmock (~> 3.13)
|
|
103
103
|
|
|
104
104
|
BUNDLED WITH
|
|
105
|
-
2.2.
|
|
105
|
+
2.2.32
|
data/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# SumSub Ruby SDK
|
|
2
2
|
|
|
3
|
-
This gem is an
|
|
3
|
+
This gem is an unofficial SDK for the [SumSub API](https://developers.sumsub.com/api-reference/).
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
Add this line to your application's Gemfile:
|
|
8
8
|
|
|
9
9
|
```ruby
|
|
10
|
-
gem 'sumsub-ruby-sdk', '~> 0.1.
|
|
10
|
+
gem 'sumsub-ruby-sdk', '~> 0.1.3', require: 'sumsub'
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
And then execute:
|
|
@@ -16,7 +16,7 @@ And then execute:
|
|
|
16
16
|
|
|
17
17
|
## Configuration and Usage
|
|
18
18
|
|
|
19
|
-
You can configure your credentials using `Sumsub::Configure` block. There are three keys you can inform: *token*, *secret_key* and *production*. The token and secret key you need to generate from your SumSub account, and *production* is a boolean value where you specify if you wanna use SumSub production or test
|
|
19
|
+
You can configure your credentials using `Sumsub::Configure` block. There are three keys you can inform: *token*, *secret_key* and *production*. The token and secret key you need to generate from your SumSub account, and *production* is a boolean value where you specify if you wanna use SumSub production or test environment. To use the test environment, just set production as `false`.
|
|
20
20
|
|
|
21
21
|
```ruby
|
|
22
22
|
Sumsub.configure do |config|
|
data/lib/sumsub/configuration.rb
CHANGED
data/lib/sumsub/parser.rb
CHANGED
data/lib/sumsub/request.rb
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Sumsub
|
|
2
4
|
class Request
|
|
3
|
-
PRODUCTION_URL = "https://api.sumsub.com
|
|
4
|
-
TEST_URL = "https://test-api.sumsub.com
|
|
5
|
+
PRODUCTION_URL = "https://api.sumsub.com"
|
|
6
|
+
TEST_URL = "https://test-api.sumsub.com"
|
|
5
7
|
|
|
6
8
|
attr_reader :url, :secret_key, :token
|
|
7
9
|
|
|
@@ -17,11 +19,11 @@ module Sumsub
|
|
|
17
19
|
|
|
18
20
|
# API docs: https://developers.sumsub.com/api-reference/#creating-an-applicant
|
|
19
21
|
# Sumsub::Struct::Applicant can be used as applicant.
|
|
20
|
-
def create_applicant(
|
|
21
|
-
resource = "applicants?levelName=#{
|
|
22
|
+
def create_applicant(level_name, applicant)
|
|
23
|
+
resource = "applicants?levelName=#{level_name}"
|
|
22
24
|
headers = build_header(resource, body: applicant.to_json)
|
|
23
25
|
response = HTTP.headers(headers)
|
|
24
|
-
.post("#{@url}/#{resource}", json: applicant)
|
|
26
|
+
.post("#{@url}/resources/#{resource}", json: applicant)
|
|
25
27
|
|
|
26
28
|
parse_response(response)
|
|
27
29
|
end
|
|
@@ -61,7 +63,7 @@ module Sumsub
|
|
|
61
63
|
content_type: 'multipart/form-data; boundary=' + boundary
|
|
62
64
|
).merge({ "X-Return-Doc-Warnings": true })
|
|
63
65
|
response = HTTP.headers(headers)
|
|
64
|
-
.post("#{@url}/#{resource}", body: body)
|
|
66
|
+
.post("#{@url}/resources/#{resource}", body: body)
|
|
65
67
|
|
|
66
68
|
parse_response(response)
|
|
67
69
|
end
|
|
@@ -71,7 +73,7 @@ module Sumsub
|
|
|
71
73
|
resource = "applicants/#{applicant_id}/requiredIdDocsStatus"
|
|
72
74
|
headers = build_header(resource, method: 'GET')
|
|
73
75
|
response = HTTP.headers(headers)
|
|
74
|
-
.get("#{@url}/#{resource}")
|
|
76
|
+
.get("#{@url}/resources/#{resource}")
|
|
75
77
|
|
|
76
78
|
parse_response(response)
|
|
77
79
|
end
|
|
@@ -83,7 +85,7 @@ module Sumsub
|
|
|
83
85
|
"applicants/#{applicant_id}/one"
|
|
84
86
|
headers = build_header(resource, method: 'GET')
|
|
85
87
|
response = HTTP.headers(headers)
|
|
86
|
-
.get("#{@url}/#{resource}")
|
|
88
|
+
.get("#{@url}/resources/#{resource}")
|
|
87
89
|
|
|
88
90
|
parse_response(response)
|
|
89
91
|
end
|
|
@@ -93,7 +95,7 @@ module Sumsub
|
|
|
93
95
|
resource = "applicants/#{applicant_id}/status"
|
|
94
96
|
headers = build_header(resource, method: 'GET')
|
|
95
97
|
response = HTTP.headers(headers)
|
|
96
|
-
.get("#{@url}/#{resource}")
|
|
98
|
+
.get("#{@url}/resources/#{resource}")
|
|
97
99
|
|
|
98
100
|
parse_response(response)
|
|
99
101
|
end
|
|
@@ -103,7 +105,7 @@ module Sumsub
|
|
|
103
105
|
resource = "applicants/#{applicant_id}/status/pending?reason=#{reason}"
|
|
104
106
|
headers = build_header(resource)
|
|
105
107
|
response = HTTP.headers(headers)
|
|
106
|
-
.post("#{@url}/#{resource}")
|
|
108
|
+
.post("#{@url}/resources/#{resource}")
|
|
107
109
|
|
|
108
110
|
parse_response(response)
|
|
109
111
|
end
|
|
@@ -113,7 +115,7 @@ module Sumsub
|
|
|
113
115
|
resource = "inspections/#{inspection_id}/resources/#{image_id}"
|
|
114
116
|
headers = build_header(resource, method: 'GET')
|
|
115
117
|
response = HTTP.headers(headers)
|
|
116
|
-
.get("#{@url}/#{resource}")
|
|
118
|
+
.get("#{@url}/resources/#{resource}")
|
|
117
119
|
|
|
118
120
|
parse_response(response)
|
|
119
121
|
end
|
|
@@ -123,7 +125,7 @@ module Sumsub
|
|
|
123
125
|
resource = "applicants/#{applicant_id}/reset"
|
|
124
126
|
headers = build_header(resource)
|
|
125
127
|
response = HTTP.headers(headers)
|
|
126
|
-
.post("#{@url}/#{resource}")
|
|
128
|
+
.post("#{@url}/resources/#{resource}")
|
|
127
129
|
|
|
128
130
|
parse_response(response)
|
|
129
131
|
end
|
|
@@ -134,17 +136,28 @@ module Sumsub
|
|
|
134
136
|
resource = "applicants/"
|
|
135
137
|
headers = build_header(resource, method: 'PATCH', body: applicant_new_values.to_json)
|
|
136
138
|
response = HTTP.headers(headers)
|
|
137
|
-
.patch("#{@url}/#{resource}", json: applicant_new_values)
|
|
139
|
+
.patch("#{@url}/resources/#{resource}", json: applicant_new_values)
|
|
138
140
|
|
|
139
141
|
parse_response(response)
|
|
140
142
|
end
|
|
141
143
|
|
|
142
144
|
# API docs: https://developers.sumsub.com/api-reference/#access-tokens-for-sdks
|
|
143
|
-
def get_access_token(user_id, ttl_in_seconds: nil, external_action_id: nil)
|
|
144
|
-
resource = "accessTokens?userId=#{user_id}&ttlInSecs=#{ttl_in_seconds}&external_action_id=#{external_action_id}"
|
|
145
|
+
def get_access_token(user_id, level_name, ttl_in_seconds: nil, external_action_id: nil)
|
|
146
|
+
resource = "accessTokens?userId=#{user_id}&levelName=#{level_name}&ttlInSecs=#{ttl_in_seconds}&external_action_id=#{external_action_id}"
|
|
145
147
|
headers = build_header(resource, method: 'POST')
|
|
146
148
|
response = HTTP.headers(headers)
|
|
147
|
-
.post("#{@url}/#{resource}")
|
|
149
|
+
.post("#{@url}/resources/#{resource}")
|
|
150
|
+
|
|
151
|
+
parse_response(response)
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
# API docs: https://developers.sumsub.com/api-reference/#testing-on-the-test-environment
|
|
155
|
+
# Sumsub::Struct::Applicant can be used as review_result.
|
|
156
|
+
def testing_on_test_environment(applicant_id, review_result)
|
|
157
|
+
resource = "applicants/#{applicant_id}/status/testCompleted"
|
|
158
|
+
headers = build_header(resource, body: review_result.to_json)
|
|
159
|
+
response = HTTP.headers(headers)
|
|
160
|
+
.post("#{@url}/resources/#{resource}", json: review_result)
|
|
148
161
|
|
|
149
162
|
parse_response(response)
|
|
150
163
|
end
|
|
@@ -162,7 +175,19 @@ module Sumsub
|
|
|
162
175
|
)
|
|
163
176
|
|
|
164
177
|
response = HTTP.headers(headers)
|
|
165
|
-
.post("#{@url}/#{resource}", body: payload)
|
|
178
|
+
.post("#{@url}/resources/#{resource}", body: payload)
|
|
179
|
+
|
|
180
|
+
parse_response(response)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
# API docs: https://developers.sumsub.com/api-reference/additional-methods.html#generating-websdk-external-link-for-particular-user
|
|
184
|
+
# Sumsub::Struct::Applicant can be used as body.
|
|
185
|
+
def generate_external_link(level_name, ttl_in_seconds, external_user_id, locale: nil, body: {})
|
|
186
|
+
resource = "sdkIntegrations/levels/#{level_name}/websdkLink?ttlInSecs=#{ttl_in_seconds}&externalUserId=#{external_user_id}&lang=#{locale}"
|
|
187
|
+
headers = build_header(resource, method: 'POST', body: body.to_json)
|
|
188
|
+
|
|
189
|
+
response = HTTP.headers(headers)
|
|
190
|
+
.post("#{@url}/resources/#{resource}", json: body)
|
|
166
191
|
|
|
167
192
|
parse_response(response)
|
|
168
193
|
end
|
|
@@ -184,6 +209,7 @@ module Sumsub
|
|
|
184
209
|
resource: resource,
|
|
185
210
|
body: body,
|
|
186
211
|
method: method,
|
|
212
|
+
secret_key: @secret_key,
|
|
187
213
|
)
|
|
188
214
|
|
|
189
215
|
{
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Sumsub
|
|
2
4
|
module Struct
|
|
3
5
|
# https://developers.sumsub.com/api-reference/#addresses-elements-fields
|
|
4
6
|
class Address < BaseStruct
|
|
5
|
-
include Types
|
|
6
|
-
|
|
7
7
|
attribute? :country, Types::String
|
|
8
8
|
attribute? :postCode, Types::String
|
|
9
9
|
attribute? :town, Types::String
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Sumsub
|
|
2
4
|
module Struct
|
|
3
5
|
# https://developers.sumsub.com/api-reference/#request-body
|
|
4
6
|
class Applicant < BaseStruct
|
|
5
|
-
include Types
|
|
6
|
-
|
|
7
7
|
attribute :externalUserId, Types::Coercible::String
|
|
8
8
|
attribute? :sourceKey, Types::String
|
|
9
9
|
attribute? :email, Types::String
|
|
10
|
+
attribute? :phone, Types::String
|
|
10
11
|
attribute? :lang, Types::String
|
|
11
12
|
attribute? :metadata, Types::Array.of(Types::Hash)
|
|
12
13
|
attribute? :info, Types::Instance(Sumsub::Struct::Info)
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Sumsub
|
|
2
4
|
module Struct
|
|
3
5
|
# https://developers.sumsub.com/api-reference/#request-body-2
|
|
4
6
|
class ApplicantUpdate < BaseStruct
|
|
5
|
-
include Types
|
|
6
|
-
|
|
7
7
|
attribute :id, Types::String
|
|
8
8
|
attribute? :externalUserId, Types::String
|
|
9
|
-
attribute? :sourceKey, Types::String
|
|
10
9
|
attribute? :email, Types::String
|
|
10
|
+
attribute? :phone, Types::String
|
|
11
|
+
attribute? :sourceKey, Types::String
|
|
12
|
+
attribute? :type, Types::String
|
|
11
13
|
attribute? :lang, Types::String
|
|
14
|
+
attribute? :questionnaires, Types::Array.of(Types::Hash)
|
|
12
15
|
attribute? :metadata, Types::Array.of(Types::Hash)
|
|
13
|
-
attribute? :
|
|
16
|
+
attribute? :deleted, Types::Bool
|
|
14
17
|
end
|
|
15
18
|
end
|
|
16
19
|
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Sumsub
|
|
2
4
|
module Struct
|
|
3
5
|
# https://developers.sumsub.com/api-reference/#request-metadata-body-part-fields
|
|
4
6
|
class DocumentMetadata < BaseStruct
|
|
5
|
-
include Types
|
|
6
|
-
|
|
7
7
|
attribute :idDocType, Types::IdDocTypes
|
|
8
|
-
attribute? :idDocSubType, Types::
|
|
8
|
+
attribute? :idDocSubType, Types::IdDocSubTypes
|
|
9
9
|
attribute :country, Types::String # https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3
|
|
10
10
|
attribute? :firstName, Types::String
|
|
11
11
|
attribute? :middleName, Types::String
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Sumsub
|
|
2
4
|
module Struct
|
|
3
5
|
# https://developers.sumsub.com/api-reference/#response-body
|
|
4
6
|
class ErrorResponse < BaseStruct
|
|
5
|
-
include Types
|
|
6
|
-
|
|
7
7
|
attribute :description, Types::String.optional
|
|
8
8
|
attribute :code, Types::Coercible::String.optional
|
|
9
9
|
attribute :correlation_id, Types::Coercible::String.optional
|
data/lib/sumsub/struct/info.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Sumsub
|
|
2
4
|
module Struct
|
|
3
5
|
# https://developers.sumsub.com/api-reference/#fixedinfo-and-info-attributes
|
|
4
6
|
class Info < BaseStruct
|
|
5
|
-
include Types
|
|
6
|
-
|
|
7
7
|
attribute? :firstName, Types::String
|
|
8
8
|
attribute? :lastName, Types::String
|
|
9
9
|
attribute? :middleName, Types::String
|
|
@@ -18,7 +18,6 @@ module Sumsub
|
|
|
18
18
|
attribute? :stateOfBirth, Types::String
|
|
19
19
|
attribute? :country, Types::String
|
|
20
20
|
attribute? :nationality, Types::String
|
|
21
|
-
attribute? :phone, Types::String
|
|
22
21
|
attribute? :addresses, Types::Array.of(Sumsub::Struct::Address)
|
|
23
22
|
end
|
|
24
23
|
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sumsub
|
|
4
|
+
module Struct
|
|
5
|
+
# https://developers.sumsub.com/api-reference/#request-body-4
|
|
6
|
+
class ReviewResult < BaseStruct
|
|
7
|
+
attribute :reviewAnswer, Types::ReviewAnswers
|
|
8
|
+
attribute? :rejectLabels, Types::Array.of(Types::RejectLabels)
|
|
9
|
+
attribute? :reviewRejectType, Types::ReviewRejectTypes
|
|
10
|
+
attribute? :clientComment, Types::String
|
|
11
|
+
attribute? :moderationComment, Types::String
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sumsub
|
|
4
|
+
module Struct
|
|
5
|
+
# https://developers.sumsub.com/api-reference/#webhook-payload-attributes
|
|
6
|
+
class WebhookPayload < BaseStruct
|
|
7
|
+
attribute :applicantId, Types::String
|
|
8
|
+
attribute :inspectionId, Types::String
|
|
9
|
+
attribute :correlationId, Types::String
|
|
10
|
+
attribute :externalUserId, Types::String
|
|
11
|
+
attribute :type, Types::String
|
|
12
|
+
attribute :reviewStatus, Types::String
|
|
13
|
+
attribute :createdAt, Types::String
|
|
14
|
+
attribute? :applicantType, Types::String
|
|
15
|
+
attribute? :reviewResult, Types::Instance(Sumsub::Struct::ReviewResult)
|
|
16
|
+
attribute? :applicantMemberOf, Types::Array.of(Types::Hash)
|
|
17
|
+
attribute? :videoIdentReviewStatus, Types::String
|
|
18
|
+
attribute? :applicantActionId, Types::String
|
|
19
|
+
attribute? :externalApplicantActionId, Types::String
|
|
20
|
+
attribute :clientId, Types::String
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
data/lib/sumsub/types.rb
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sumsub
|
|
4
|
+
module Types
|
|
5
|
+
include Dry.Types()
|
|
6
|
+
|
|
7
|
+
# https://developers.sumsub.com/api-reference/#supported-document-types
|
|
8
|
+
IdDocTypes = Types::Strict::Symbol
|
|
9
|
+
.constructor(&:to_sym)
|
|
10
|
+
.enum(
|
|
11
|
+
:ID_CARD,
|
|
12
|
+
:PASSPORT,
|
|
13
|
+
:DRIVERS, # Driving license
|
|
14
|
+
:RESIDENCE_PERMIT,
|
|
15
|
+
:UTILITY_BILL,
|
|
16
|
+
:SELFIE,
|
|
17
|
+
:VIDEO_SELFIE,
|
|
18
|
+
:PROFILE_IMAGE,
|
|
19
|
+
:ID_DOC_PHOTO,
|
|
20
|
+
:AGREEMENT,
|
|
21
|
+
:CONTRACT,
|
|
22
|
+
:DRIVERS_TRANSLATION,
|
|
23
|
+
:INVESTOR_DOC,
|
|
24
|
+
:VEHICLE_REGISTRATION_CERTIFICATE,
|
|
25
|
+
:INCOME_SOURCE, # Proof of income
|
|
26
|
+
:PAYMENT_METHOD,
|
|
27
|
+
:BANK_CARD,
|
|
28
|
+
:COVID_VACCINATION_FORM,
|
|
29
|
+
:OTHER,
|
|
30
|
+
nil,
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
# https://developers.sumsub.com/api-reference/#request-metadata-body-part-fields
|
|
34
|
+
IdDocSubTypes = Types::Strict::Symbol
|
|
35
|
+
.constructor(&:to_sym)
|
|
36
|
+
.enum(
|
|
37
|
+
:FRONT_SIDE,
|
|
38
|
+
:BACK_SIDE,
|
|
39
|
+
nil,
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
# https://developers.sumsub.com/api-reference/#getting-verification-results
|
|
43
|
+
ReviewAnswers = Types::Strict::Symbol
|
|
44
|
+
.constructor(&:to_sym)
|
|
45
|
+
.enum(
|
|
46
|
+
:GREEN,
|
|
47
|
+
:RED,
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
# https://developers.sumsub.com/api-reference/#getting-verification-results
|
|
51
|
+
RejectLabels = Types::Strict::Symbol
|
|
52
|
+
.constructor(&:to_sym)
|
|
53
|
+
.enum(
|
|
54
|
+
:FORGERY,
|
|
55
|
+
:DOCUMENT_TEMPLATE,
|
|
56
|
+
:LOW_QUALITY,
|
|
57
|
+
:SPAM,
|
|
58
|
+
:NOT_DOCUMENT,
|
|
59
|
+
:SELFIE_MISMATCH,
|
|
60
|
+
:ID_INVALID,
|
|
61
|
+
:FOREIGNER,
|
|
62
|
+
:DUPLICATE,
|
|
63
|
+
:BAD_AVATAR,
|
|
64
|
+
:WRONG_USER_REGION,
|
|
65
|
+
:INCOMPLETE_DOCUMENT,
|
|
66
|
+
:BLACKLIST,
|
|
67
|
+
:UNSATISFACTORY_PHOTOS,
|
|
68
|
+
:DOCUMENT_PAGE_MISSING,
|
|
69
|
+
:DOCUMENT_DAMAGED,
|
|
70
|
+
:REGULATIONS_VIOLATIONS,
|
|
71
|
+
:INCONSISTENT_PROFILE,
|
|
72
|
+
:PROBLEMATIC_APPLICANT_DATA,
|
|
73
|
+
:ADDITIONAL_DOCUMENT_REQUIRED,
|
|
74
|
+
:AGE_REQUIREMENT_MISMATCH,
|
|
75
|
+
:EXPERIENCE_REQUIREMENT_MISMATCH,
|
|
76
|
+
:CRIMINAL,
|
|
77
|
+
:WRONG_ADDRESS,
|
|
78
|
+
:GRAPHIC_EDITOR,
|
|
79
|
+
:DOCUMENT_DEPRIVED,
|
|
80
|
+
:COMPROMISED_PERSONS,
|
|
81
|
+
:PEP,
|
|
82
|
+
:ADVERSE_MEDIA,
|
|
83
|
+
:FRAUDULENT_PATTERNS,
|
|
84
|
+
:SANCTIONS,
|
|
85
|
+
:NOT_ALL_CHECKS_COMPLETED,
|
|
86
|
+
:FRONT_SIDE_MISSING,
|
|
87
|
+
:BACK_SIDE_MISSING,
|
|
88
|
+
:SCREENSHOTS,
|
|
89
|
+
:BLACK_AND_WHITE,
|
|
90
|
+
:INCOMPATIBLE_LANGUAGE,
|
|
91
|
+
:EXPIRATION_DATE,
|
|
92
|
+
:UNFILLED_ID,
|
|
93
|
+
:BAD_SELFIE,
|
|
94
|
+
:BAD_VIDEO_SELFIE,
|
|
95
|
+
:BAD_FACE_MATCHING,
|
|
96
|
+
:BAD_PROOF_OF_IDENTITY,
|
|
97
|
+
:BAD_PROOF_OF_ADDRESS,
|
|
98
|
+
:BAD_PROOF_OF_PAYMENT,
|
|
99
|
+
:SELFIE_WITH_PAPER,
|
|
100
|
+
:FRAUDULENT_LIVENESS,
|
|
101
|
+
:OTHER,
|
|
102
|
+
:REQUESTED_DATA_MISMATCH,
|
|
103
|
+
:OK,
|
|
104
|
+
:COMPANY_NOT_DEFINED_STRUCTURE,
|
|
105
|
+
:COMPANY_NOT_DEFINED_BENEFICIARIES,
|
|
106
|
+
:COMPANY_NOT_VALIDATED_BENEFICIARIES,
|
|
107
|
+
:COMPANY_NOT_DEFINED_REPRESENTATIVES,
|
|
108
|
+
:COMPANY_NOT_VALIDATED_REPRESENTATIVES,
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
# https://developers.sumsub.com/api-reference/#getting-verification-results
|
|
112
|
+
ReviewRejectTypes = Types::Strict::Symbol
|
|
113
|
+
.constructor(&:to_sym)
|
|
114
|
+
.enum(
|
|
115
|
+
:FINAL,
|
|
116
|
+
:RETRY,
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
# https://developers.sumsub.com/api-reference/#webhook-types
|
|
120
|
+
WebhookTypes = Types::Strict::Symbol
|
|
121
|
+
.constructor(&:to_sym)
|
|
122
|
+
.enum(
|
|
123
|
+
:applicantReviewed,
|
|
124
|
+
:applicantPending,
|
|
125
|
+
:applicantCreated,
|
|
126
|
+
:applicantOnHold,
|
|
127
|
+
:applicantPersonalInfoChanged,
|
|
128
|
+
:applicantPrechecked,
|
|
129
|
+
:applicantDeleted,
|
|
130
|
+
:videoIdentStatusChanged,
|
|
131
|
+
:applicantReset,
|
|
132
|
+
:applicantActionPending,
|
|
133
|
+
:applicantActionReviewed,
|
|
134
|
+
:applicantActionOnHold,
|
|
135
|
+
)
|
|
136
|
+
end
|
|
137
|
+
end
|
data/lib/sumsub/version.rb
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sumsub
|
|
4
|
+
# https://developers.sumsub.com/api-reference/#verifying-webhook-sender
|
|
5
|
+
class WebhookSender
|
|
6
|
+
def self.get_payload(params)
|
|
7
|
+
JSON.pretty_generate(
|
|
8
|
+
params,
|
|
9
|
+
space_before: ' ',
|
|
10
|
+
)
|
|
11
|
+
.gsub("[\n \"", "[ \"")
|
|
12
|
+
.gsub("\n ]", " ]")
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
data/lib/sumsub.rb
CHANGED
|
@@ -1,23 +1,36 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
########
|
|
4
|
+
# Gems #
|
|
5
|
+
########
|
|
6
|
+
|
|
3
7
|
require 'http'
|
|
4
|
-
require 'types'
|
|
5
8
|
require 'mime/types'
|
|
9
|
+
require 'dry-struct'
|
|
10
|
+
|
|
11
|
+
################
|
|
12
|
+
# Own requires #
|
|
13
|
+
################
|
|
14
|
+
|
|
15
|
+
require 'sumsub/version'
|
|
6
16
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
require 'sumsub/types'
|
|
18
|
+
require 'sumsub/message_signer'
|
|
19
|
+
require 'sumsub/configuration'
|
|
20
|
+
require 'sumsub/parser'
|
|
21
|
+
require 'sumsub/request'
|
|
22
|
+
require 'sumsub/webhook_sender'
|
|
23
|
+
require 'sumsub/struct/base_struct'
|
|
24
|
+
require 'sumsub/struct/error_response'
|
|
25
|
+
require 'sumsub/struct/address'
|
|
26
|
+
require 'sumsub/struct/info'
|
|
27
|
+
require 'sumsub/struct/applicant'
|
|
28
|
+
require 'sumsub/struct/applicant_update'
|
|
29
|
+
require 'sumsub/struct/document_metadata'
|
|
30
|
+
require 'sumsub/struct/review_result'
|
|
31
|
+
require 'sumsub/struct/webhook_payload'
|
|
20
32
|
|
|
33
|
+
module Sumsub
|
|
21
34
|
class << self
|
|
22
35
|
attr_accessor :configuration
|
|
23
36
|
end
|
data/sumsub-ruby-sdk.gemspec
CHANGED
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
|
|
19
19
|
spec.metadata["homepage_uri"] = spec.homepage
|
|
20
20
|
spec.metadata["source_code_uri"] = "https://github.com/rwehresmann/sumsub-ruby-sdk"
|
|
21
|
-
spec.metadata["changelog_uri"] = "https://github.com/rwehresmann/sumsub-ruby-sdk"
|
|
21
|
+
spec.metadata["changelog_uri"] = "https://github.com/rwehresmann/sumsub-ruby-sdk/blob/master/CHANGELOG.md"
|
|
22
22
|
|
|
23
23
|
# Specify which files should be added to the gem when it is released.
|
|
24
24
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
@@ -29,17 +29,12 @@ Gem::Specification.new do |spec|
|
|
|
29
29
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
|
30
30
|
spec.require_paths = ["lib"]
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
spec.add_dependency "http", ">= 4.0"
|
|
33
|
+
spec.add_dependency "dry-struct", "~> 1.4"
|
|
34
|
+
spec.add_dependency "mime-types", "~> 3.3"
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
spec.
|
|
39
|
-
spec.add_dependency "dry-struct", "~> 1.4.0"
|
|
40
|
-
spec.add_dependency "rspec", "~> 3.10.0"
|
|
41
|
-
spec.add_dependency "pry", "~> 0.14.1"
|
|
42
|
-
spec.add_dependency "webmock", "~> 3.13.0"
|
|
43
|
-
spec.add_dependency "timecop", "~> 0.9.4"
|
|
44
|
-
spec.add_dependency "mime-types", "~> 3.3.1"
|
|
36
|
+
spec.add_development_dependency "rspec", "~> 3.10"
|
|
37
|
+
spec.add_development_dependency "pry", "~> 0.14"
|
|
38
|
+
spec.add_development_dependency "webmock", "~> 3.13"
|
|
39
|
+
spec.add_development_dependency "timecop", "~> 0.9"
|
|
45
40
|
end
|
metadata
CHANGED
|
@@ -1,113 +1,113 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sumsub-ruby-sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Rodrigo W. Ehresmann
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-03-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: http
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: '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:
|
|
26
|
+
version: '4.0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: dry-struct
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 1.4
|
|
33
|
+
version: '1.4'
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 1.4
|
|
40
|
+
version: '1.4'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: mime-types
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 3.
|
|
47
|
+
version: '3.3'
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 3.
|
|
54
|
+
version: '3.3'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
56
|
+
name: rspec
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
59
|
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
62
|
-
type: :
|
|
61
|
+
version: '3.10'
|
|
62
|
+
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
66
|
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version:
|
|
68
|
+
version: '3.10'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
70
|
+
name: pry
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
73
|
- - "~>"
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version:
|
|
76
|
-
type: :
|
|
75
|
+
version: '0.14'
|
|
76
|
+
type: :development
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
80
|
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version:
|
|
82
|
+
version: '0.14'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
84
|
+
name: webmock
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
87
|
- - "~>"
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version:
|
|
90
|
-
type: :
|
|
89
|
+
version: '3.13'
|
|
90
|
+
type: :development
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
94
|
- - "~>"
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version:
|
|
96
|
+
version: '3.13'
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
98
|
+
name: timecop
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
101
|
- - "~>"
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version:
|
|
104
|
-
type: :
|
|
103
|
+
version: '0.9'
|
|
104
|
+
type: :development
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
108
|
- - "~>"
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version:
|
|
110
|
+
version: '0.9'
|
|
111
111
|
description: SDK written in Ruby to handle SumSub API.
|
|
112
112
|
email:
|
|
113
113
|
- igoehresmann@gmail.com
|
|
@@ -119,6 +119,7 @@ files:
|
|
|
119
119
|
- ".editorconfig"
|
|
120
120
|
- ".gitignore"
|
|
121
121
|
- ".rspec"
|
|
122
|
+
- CHANGELOG.md
|
|
122
123
|
- Gemfile
|
|
123
124
|
- Gemfile.lock
|
|
124
125
|
- LICENSE.txt
|
|
@@ -138,8 +139,11 @@ files:
|
|
|
138
139
|
- lib/sumsub/struct/document_metadata.rb
|
|
139
140
|
- lib/sumsub/struct/error_response.rb
|
|
140
141
|
- lib/sumsub/struct/info.rb
|
|
142
|
+
- lib/sumsub/struct/review_result.rb
|
|
143
|
+
- lib/sumsub/struct/webhook_payload.rb
|
|
144
|
+
- lib/sumsub/types.rb
|
|
141
145
|
- lib/sumsub/version.rb
|
|
142
|
-
- lib/
|
|
146
|
+
- lib/sumsub/webhook_sender.rb
|
|
143
147
|
- sumsub-ruby-sdk.gemspec
|
|
144
148
|
homepage: https://github.com/rwehresmann/sumsub-ruby-sdk
|
|
145
149
|
licenses:
|
|
@@ -148,7 +152,7 @@ metadata:
|
|
|
148
152
|
allowed_push_host: https://rubygems.org
|
|
149
153
|
homepage_uri: https://github.com/rwehresmann/sumsub-ruby-sdk
|
|
150
154
|
source_code_uri: https://github.com/rwehresmann/sumsub-ruby-sdk
|
|
151
|
-
changelog_uri: https://github.com/rwehresmann/sumsub-ruby-sdk
|
|
155
|
+
changelog_uri: https://github.com/rwehresmann/sumsub-ruby-sdk/blob/master/CHANGELOG.md
|
|
152
156
|
post_install_message:
|
|
153
157
|
rdoc_options: []
|
|
154
158
|
require_paths:
|
|
@@ -164,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
164
168
|
- !ruby/object:Gem::Version
|
|
165
169
|
version: '0'
|
|
166
170
|
requirements: []
|
|
167
|
-
rubygems_version: 3.
|
|
171
|
+
rubygems_version: 3.0.9
|
|
168
172
|
signing_key:
|
|
169
173
|
specification_version: 4
|
|
170
174
|
summary: SumSub Ruby SDK
|
data/lib/types.rb
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
require 'dry-struct'
|
|
2
|
-
|
|
3
|
-
module Types
|
|
4
|
-
include Dry.Types()
|
|
5
|
-
|
|
6
|
-
# https://developers.sumsub.com/api-reference/#supported-document-types
|
|
7
|
-
IdDocTypes = Types::Strict::Symbol
|
|
8
|
-
.constructor(&:to_sym)
|
|
9
|
-
.enum(
|
|
10
|
-
:ID_CARD,
|
|
11
|
-
:PASSPORT,
|
|
12
|
-
:DRIVERS, # Driving license
|
|
13
|
-
:BANK_CARD,
|
|
14
|
-
:UTILITY_BILL,
|
|
15
|
-
:BANK_STATEMENT,
|
|
16
|
-
:SELFIE,
|
|
17
|
-
:VIDEO_SELFIE,
|
|
18
|
-
:PROFILE_IMAGE,
|
|
19
|
-
:ID_DOC_PHOTO,
|
|
20
|
-
:AGREEMENT,
|
|
21
|
-
:CONTRACT,
|
|
22
|
-
:RESIDENCE_PERMIT,
|
|
23
|
-
:EMPLOYMENT_CERTIFICATE,
|
|
24
|
-
:DRIVERS_TRANSLATION,
|
|
25
|
-
:INVESTOR_DOC,
|
|
26
|
-
:VEHICLE_REGISTRATION_CERTIFICATE,
|
|
27
|
-
:INCOME_SOURCE, # Proof of income
|
|
28
|
-
:PAYMENT_METHOD,
|
|
29
|
-
:OTHER,
|
|
30
|
-
nil,
|
|
31
|
-
)
|
|
32
|
-
|
|
33
|
-
IdDocSubType = Types::Strict::Symbol
|
|
34
|
-
.constructor(&:to_sym)
|
|
35
|
-
.enum(
|
|
36
|
-
:FRONT_SIDE,
|
|
37
|
-
:BACK_SIDE,
|
|
38
|
-
)
|
|
39
|
-
end
|