onfido 2.0.2 → 2.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/CHANGELOG.md +14 -0
- data/README.md +3 -3
- data/lib/onfido/options.rb +1 -1
- data/lib/onfido/resource.rb +9 -5
- data/lib/onfido/resources/document.rb +1 -1
- data/lib/onfido/resources/live_photo.rb +1 -1
- data/lib/onfido/version.rb +1 -1
- data/spec/integrations/applicant_spec.rb +1 -1
- data/spec/onfido/options_spec.rb +1 -1
- data/spec/support/fake_onfido_api.rb +46 -37
- data/spec/support/fixtures/applicant.json +1 -1
- data/spec/support/fixtures/check.json +1 -1
- data/spec/support/fixtures/checks.json +1 -1
- data/spec/support/fixtures/document.json +1 -1
- data/spec/support/fixtures/documents.json +2 -2
- data/spec/support/fixtures/live_photo.json +2 -2
- data/spec/support/fixtures/live_photos.json +4 -4
- data/spec/support/fixtures/live_video.json +2 -2
- data/spec/support/fixtures/live_videos.json +2 -2
- data/spec/support/fixtures/report.json +1 -1
- data/spec/support/fixtures/reports.json +2 -2
- data/spec/support/fixtures/webhook.json +1 -1
- data/spec/support/fixtures/webhooks.json +2 -2
- metadata +2 -3
- data/.travis.yml +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 33080fe8a76369f014e7505bbc1597a6531f683374c958729f3a5aac6aa181c4
|
4
|
+
data.tar.gz: 35f3beb4faa5fc70b8c7f9e40418f8befa943a39ff0801403ebd2bc307a8bdbf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3910d5775649dc5091b49e3417ce6b89962799786026cc0f829e8cca88e2e86ea720e01570dd3b32630776d5e4007d76ed5773d473c6616a14ab7fd64f3e0740
|
7
|
+
data.tar.gz: 1ea8c2e2a8147a207213d8ca41fa11c98c46393fcba383e242450621cd66210ac0edc0b464a75fa9c1328c136a4d34d49c9434d6aa22e651779989c05dc6ef0a
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
## v2.2.0, 02 March 2022
|
2
|
+
|
3
|
+
- Support Onfido API version 3.3
|
4
|
+
|
5
|
+
## v2.1.1, 01 February 2022
|
6
|
+
|
7
|
+
- Send params as json
|
8
|
+
- Remove .travis.yml
|
9
|
+
- Update README.md link
|
10
|
+
|
11
|
+
## v2.1.0, 23 June 2021
|
12
|
+
|
13
|
+
- Support Onfido API version 3.2
|
14
|
+
|
1
15
|
## v2.0.2, 10 June 2021
|
2
16
|
|
3
17
|
- Add error coverage for errors RestClient:BadGateway
|
data/README.md
CHANGED
@@ -7,7 +7,7 @@ The official Ruby library for integrating with the Onfido API.
|
|
7
7
|
|
8
8
|
Documentation can be found at https://documentation.onfido.com
|
9
9
|
|
10
|
-
This version uses Onfido API v3.
|
10
|
+
This version uses Onfido API v3.3 and is compatible with Ruby 2.4 onwards. Refer to our [API versioning guide](https://developers.onfido.com/guide/api-versioning-policy#client-libraries) for details of which client library versions use which versions of the API.
|
11
11
|
|
12
12
|
## Installation
|
13
13
|
|
@@ -76,7 +76,7 @@ onfido = Onfido::API.new(
|
|
76
76
|
|
77
77
|
## Verifying webhooks
|
78
78
|
|
79
|
-
Each webhook endpoint has a secret token, generated automatically and [exposed](https://onfido.com
|
79
|
+
Each webhook endpoint has a secret token, generated automatically and [exposed](https://documentation.onfido.com/#register-webhook) in the API. When sending a request, Onfido includes a signature computed using the request body and this token in the `X-SHA2-Signature` header.
|
80
80
|
|
81
81
|
You should compare this provided signature to one you generate yourself with the token to verify that a webhook is a genuine request from Onfido.
|
82
82
|
|
@@ -90,7 +90,7 @@ else
|
|
90
90
|
end
|
91
91
|
```
|
92
92
|
|
93
|
-
Read more at https://onfido.com/
|
93
|
+
Read more at https://developers.onfido.com/guide/manual-webhook-signature-verification#webhook-security
|
94
94
|
|
95
95
|
## Contributing
|
96
96
|
|
data/lib/onfido/options.rb
CHANGED
data/lib/onfido/resource.rb
CHANGED
@@ -4,6 +4,7 @@ module Onfido
|
|
4
4
|
class Resource # rubocop:todo Metrics/ClassLength
|
5
5
|
VALID_HTTP_METHODS = %i[get post put delete].freeze
|
6
6
|
REQUEST_TIMEOUT_HTTP_CODE = 408
|
7
|
+
ADDITIONAL_HEADERS = { 'Content-Type' => 'application/json; charset=utf-8' }.freeze
|
7
8
|
|
8
9
|
def initialize(options)
|
9
10
|
@rest_client = options.rest_client
|
@@ -14,19 +15,22 @@ module Onfido
|
|
14
15
|
attr_reader :rest_client
|
15
16
|
|
16
17
|
def get(path:)
|
17
|
-
handle_request { rest_client[path].get }
|
18
|
+
handle_request { rest_client[path].get(ADDITIONAL_HEADERS) }
|
18
19
|
end
|
19
20
|
|
20
|
-
def post(path:, payload: nil)
|
21
|
-
|
21
|
+
def post(path:, payload: nil, send_json: true)
|
22
|
+
parsed_payload = send_json ? payload.to_json : payload
|
23
|
+
additional_headers = send_json ? ADDITIONAL_HEADERS : {}
|
24
|
+
|
25
|
+
handle_request { rest_client[path].post(parsed_payload, additional_headers) }
|
22
26
|
end
|
23
27
|
|
24
28
|
def put(path:, payload: nil)
|
25
|
-
handle_request { rest_client[path].put(payload) }
|
29
|
+
handle_request { rest_client[path].put(payload.to_json, ADDITIONAL_HEADERS) }
|
26
30
|
end
|
27
31
|
|
28
32
|
def delete(path:)
|
29
|
-
handle_request { rest_client[path].delete }
|
33
|
+
handle_request { rest_client[path].delete(ADDITIONAL_HEADERS) }
|
30
34
|
end
|
31
35
|
|
32
36
|
def handle_request
|
data/lib/onfido/version.rb
CHANGED
@@ -34,7 +34,7 @@ describe Onfido::Applicant do
|
|
34
34
|
|
35
35
|
it 'serializes the payload correctly' do
|
36
36
|
WebMock.after_request do |request_signature, _response|
|
37
|
-
if request_signature.uri.path == 'v3.
|
37
|
+
if request_signature.uri.path == 'v3.3/applicants'
|
38
38
|
expect(Rack::Utils.parse_nested_query(request_signature.body))
|
39
39
|
.to eq(params)
|
40
40
|
end
|
data/spec/onfido/options_spec.rb
CHANGED
@@ -9,32 +9,42 @@ RSpec.shared_context 'fake onfido api' do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
class FakeOnfidoAPI < Sinatra::Base # rubocop:disable Metrics/ClassLength
|
12
|
-
|
12
|
+
before do
|
13
|
+
begin
|
14
|
+
if request.content_type == "application/json; charset=utf-8"
|
15
|
+
body_parameters = JSON.parse(request.body.read)
|
16
|
+
params.merge!(body_parameters) if body_parameters
|
17
|
+
end
|
18
|
+
rescue JSON::ParserError
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
get '/v3.3/addresses/pick' do
|
13
23
|
json_response(200, 'addresses.json')
|
14
24
|
end
|
15
25
|
|
16
|
-
post '/v3.
|
26
|
+
post '/v3.3/applicants' do
|
17
27
|
json_response(201, 'applicant.json')
|
18
28
|
end
|
19
29
|
|
20
|
-
put '/v3.
|
30
|
+
put '/v3.3/applicants/:id' do
|
21
31
|
json_response(200, 'applicant.json')
|
22
32
|
end
|
23
33
|
|
24
|
-
get '/v3.
|
34
|
+
get '/v3.3/applicants/:id' do
|
25
35
|
json_response(200, 'applicant.json')
|
26
36
|
end
|
27
37
|
|
28
|
-
get '/v3.
|
38
|
+
get '/v3.3/applicants' do
|
29
39
|
response = json_response(200, 'applicants.json')
|
30
40
|
{ applicants: JSON.parse(response)['applicants'][pagination_range] }.to_json
|
31
41
|
end
|
32
42
|
|
33
|
-
delete '/v3.
|
43
|
+
delete '/v3.3/applicants/:id' do
|
34
44
|
status 204
|
35
45
|
end
|
36
46
|
|
37
|
-
post '/v3.
|
47
|
+
post '/v3.3/applicants/:id/restore' do
|
38
48
|
if params['id'] == 'a2fb9c62-ab10-4898-a8ec-342c4b552ad5'
|
39
49
|
json_response(422, 'not_scheduled_for_deletion_error.json')
|
40
50
|
else
|
@@ -42,37 +52,37 @@ class FakeOnfidoAPI < Sinatra::Base # rubocop:disable Metrics/ClassLength
|
|
42
52
|
end
|
43
53
|
end
|
44
54
|
|
45
|
-
post '/v3.
|
55
|
+
post '/v3.3/documents' do
|
46
56
|
json_response(201, 'document.json')
|
47
57
|
end
|
48
58
|
|
49
|
-
post '/v3.
|
59
|
+
post '/v3.3/extractions' do
|
50
60
|
json_response(201, 'extraction.json')
|
51
61
|
end
|
52
62
|
|
53
|
-
get '/v3.
|
63
|
+
get '/v3.3/documents/:id' do
|
54
64
|
json_response(200, 'document.json')
|
55
65
|
end
|
56
66
|
|
57
|
-
get '/v3.
|
67
|
+
get '/v3.3/documents' do
|
58
68
|
json_response(200, 'documents.json')
|
59
69
|
end
|
60
70
|
|
61
|
-
get '/v3.
|
71
|
+
get '/v3.3/documents/:id/download' do
|
62
72
|
status 200
|
63
73
|
content_type 'application/octet-stream'
|
64
74
|
"\x01\x02\x03" # acts as binary file data
|
65
75
|
end
|
66
76
|
|
67
|
-
post '/v3.
|
77
|
+
post '/v3.3/live_photos' do
|
68
78
|
json_response(201, 'live_photo.json')
|
69
79
|
end
|
70
80
|
|
71
|
-
get '/v3.
|
81
|
+
get '/v3.3/live_photos/:id' do
|
72
82
|
json_response(200, 'live_photo.json')
|
73
83
|
end
|
74
84
|
|
75
|
-
get '/v3.
|
85
|
+
get '/v3.3/live_photos' do
|
76
86
|
if params['applicant_id'] == '1030303-123123-123123'
|
77
87
|
json_response(200, 'live_photos.json')
|
78
88
|
else
|
@@ -80,17 +90,17 @@ class FakeOnfidoAPI < Sinatra::Base # rubocop:disable Metrics/ClassLength
|
|
80
90
|
end
|
81
91
|
end
|
82
92
|
|
83
|
-
get '/v3.
|
93
|
+
get '/v3.3/live_photos/:id/download' do
|
84
94
|
status 200
|
85
95
|
content_type 'image/jpeg'
|
86
96
|
"\x01\x02\x03" # acts as binary file data
|
87
97
|
end
|
88
98
|
|
89
|
-
get '/v3.
|
99
|
+
get '/v3.3/live_videos/:id' do
|
90
100
|
json_response(200, 'live_video.json')
|
91
101
|
end
|
92
102
|
|
93
|
-
get '/v3.
|
103
|
+
get '/v3.3/live_videos' do
|
94
104
|
if params['applicant_id'] == '1030303-123123-123123'
|
95
105
|
json_response(200, 'live_videos.json')
|
96
106
|
else
|
@@ -98,80 +108,79 @@ class FakeOnfidoAPI < Sinatra::Base # rubocop:disable Metrics/ClassLength
|
|
98
108
|
end
|
99
109
|
end
|
100
110
|
|
101
|
-
get '/v3.
|
111
|
+
get '/v3.3/live_videos/:id/download' do
|
102
112
|
status 200
|
103
113
|
content_type 'video/quicktime'
|
104
114
|
"\x01\x02\x03" # acts as binary file data
|
105
115
|
end
|
106
116
|
|
107
|
-
post '/v3.
|
117
|
+
post '/v3.3/checks' do
|
108
118
|
params['applicant_id'].nil? ? status(422) : json_response(201, 'check.json')
|
109
119
|
end
|
110
120
|
|
111
|
-
get '/v3.
|
121
|
+
get '/v3.3/checks/:id' do
|
112
122
|
json_response(200, 'check.json')
|
113
123
|
end
|
114
124
|
|
115
|
-
get '/v3.
|
125
|
+
get '/v3.3/checks' do
|
116
126
|
json_response(200, 'checks.json')
|
117
127
|
end
|
118
128
|
|
119
|
-
post '/v3.
|
129
|
+
post '/v3.3/checks/:id/resume' do
|
120
130
|
status 204 # no_content
|
121
131
|
end
|
122
132
|
|
123
|
-
get '/v3.
|
133
|
+
get '/v3.3/checks/:id/download' do
|
124
134
|
status 200
|
125
135
|
content_type 'application/pdf'
|
126
136
|
"\x01\x02\x03" # acts as binary file data
|
127
137
|
end
|
128
138
|
|
129
|
-
get '/v3.
|
139
|
+
get '/v3.3/reports' do
|
130
140
|
json_response(200, 'reports.json')
|
131
141
|
end
|
132
142
|
|
133
|
-
get '/v3.
|
143
|
+
get '/v3.3/reports/:id' do
|
134
144
|
json_response(200, 'report.json')
|
135
145
|
end
|
136
146
|
|
137
|
-
post '/v3.
|
147
|
+
post '/v3.3/reports/:id/resume' do
|
138
148
|
status 204
|
139
149
|
end
|
140
150
|
|
141
|
-
post '/v3.
|
151
|
+
post '/v3.3/reports/:id/cancel' do
|
142
152
|
status 204
|
143
153
|
end
|
144
154
|
|
145
|
-
post '/v3.
|
155
|
+
post '/v3.3/sdk_token' do
|
146
156
|
json_response(201, 'sdk_token.json')
|
147
157
|
end
|
148
158
|
|
149
|
-
post '/v3.
|
159
|
+
post '/v3.3/webhooks' do
|
150
160
|
json_response(201, 'webhook.json')
|
151
161
|
end
|
152
162
|
|
153
|
-
get '/v3.
|
163
|
+
get '/v3.3/webhooks/:id' do
|
154
164
|
json_response(200, 'webhook.json')
|
155
165
|
end
|
156
166
|
|
157
|
-
delete '/v3.
|
158
|
-
content_type 'application/json; charset=utf-8'
|
167
|
+
delete '/v3.3/webhooks/:id' do
|
159
168
|
status 204
|
160
169
|
end
|
161
170
|
|
162
|
-
get '/v3.
|
171
|
+
get '/v3.3/webhooks' do
|
163
172
|
json_response(200, 'webhooks.json')
|
164
173
|
end
|
165
174
|
|
166
|
-
get '/v3.
|
175
|
+
get '/v3.3/4xx_response' do
|
167
176
|
json_response(422, '4xx_response.json')
|
168
177
|
end
|
169
178
|
|
170
|
-
get '/v3.
|
179
|
+
get '/v3.3/unexpected_error_format' do
|
171
180
|
json_response(400, 'unexpected_error_format.json')
|
172
181
|
end
|
173
182
|
|
174
|
-
get '/v3.
|
183
|
+
get '/v3.3/unparseable_response' do
|
175
184
|
content_type :json
|
176
185
|
status 504
|
177
186
|
''
|
@@ -7,7 +7,7 @@
|
|
7
7
|
"last_name":"Bing",
|
8
8
|
"email":"chandler_bing_6@friends.com",
|
9
9
|
"dob":"1968-04-08",
|
10
|
-
"href":"/v3.
|
10
|
+
"href":"/v3.3/applicants/61f659cb-c90b-4067-808a-6136b5c01351",
|
11
11
|
"id_numbers":[],
|
12
12
|
"address": {
|
13
13
|
"flat_number":"4",
|
@@ -3,7 +3,7 @@
|
|
3
3
|
{
|
4
4
|
"id": "7568415-123123-123123",
|
5
5
|
"created_at": "2019-11-23 13:50:33Z",
|
6
|
-
"href": "/v3.
|
6
|
+
"href": "/v3.3/documents/7568415-123123-123123",
|
7
7
|
"file_name": "passport.jpg",
|
8
8
|
"file_type": "png",
|
9
9
|
"file_size": 282870,
|
@@ -12,7 +12,7 @@
|
|
12
12
|
{
|
13
13
|
"id": "121122-123123-123123",
|
14
14
|
"created_at": "2019-11-23 13:50:40Z",
|
15
|
-
"href": "/v3.
|
15
|
+
"href": "/v3.3/documents/7568415-123123-123123",
|
16
16
|
"file_name": "driving_licence.png",
|
17
17
|
"file_type": "png",
|
18
18
|
"file_size": 282870,
|
@@ -4,6 +4,6 @@
|
|
4
4
|
"file_name": "onfido_captured_image.jpg",
|
5
5
|
"file_type": "image/jpeg",
|
6
6
|
"file_size": 47544,
|
7
|
-
"href": "/v3.
|
8
|
-
"download_href": "/v3.
|
7
|
+
"href": "/v3.3/live_photos/3538c8f6-fdce-4745-9d34-fc246bc05aa1",
|
8
|
+
"download_href": "/v3.3/live_photos/3538c8f6-fdce-4745-9d34-fc246bc05aa1/download"
|
9
9
|
}
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"file_name": "onfido_captured_image.jpg",
|
7
7
|
"file_type": "image/jpeg",
|
8
8
|
"file_size": 47544,
|
9
|
-
"href": "/v3.
|
10
|
-
"download_href": "/v3.
|
9
|
+
"href": "/v3.3/live_photos/3538c8f6-fdce-4745-9d34-fc246bc05aa1",
|
10
|
+
"download_href": "/v3.3/live_photos/3538c8f6-fdce-4745-9d34-fc246bc05aa1/download"
|
11
11
|
},
|
12
12
|
{
|
13
13
|
"id": "5134c12a-555a-1234-5e12-9d34fcbc11ba",
|
@@ -15,8 +15,8 @@
|
|
15
15
|
"file_name": "onfido_captured_image.jpg",
|
16
16
|
"file_type": "image/jpeg",
|
17
17
|
"file_size": 47544,
|
18
|
-
"href": "/v3.
|
19
|
-
"download_href": "/v3.
|
18
|
+
"href": "/v3.3/live_photos/5134c12a-555a-1234-5e12-9d34fcbc11ba",
|
19
|
+
"download_href": "/v3.3/live_photos/5134c12a-555a-1234-5e12-9d34fcbc11ba/download"
|
20
20
|
}
|
21
21
|
]
|
22
22
|
}
|
@@ -18,6 +18,6 @@
|
|
18
18
|
"file_name" : "output-29-05-2018_11_00_24.mov",
|
19
19
|
"file_type" : "video/quicktime",
|
20
20
|
"file_size" : 3348421,
|
21
|
-
"href" : "/v3.
|
22
|
-
"download_href" : "/v3.
|
21
|
+
"href" : "/v3.3/live_videos/c9701e9b-83aa-442f-995b-20320ee8fb01",
|
22
|
+
"download_href" : "/v3.3/live_videos/c9701e9b-83aa-442f-995b-20320ee8fb01/download"
|
23
23
|
}
|
@@ -16,11 +16,11 @@
|
|
16
16
|
}
|
17
17
|
],
|
18
18
|
"created_at": "2019-11-29T09:00:39Z",
|
19
|
-
"download_href": "/v3.
|
19
|
+
"download_href": "/v3.3/live_videos/c9701e9b-83aa-442f-995b-20320ee8fb01/download",
|
20
20
|
"file_name": "output-29-11-2019_11_00_24.mov",
|
21
21
|
"file_size": 3348421,
|
22
22
|
"file_type": "video/quicktime",
|
23
|
-
"href": "/v3.
|
23
|
+
"href": "/v3.3/live_videos/c9701e9b-83aa-442f-995b-20320ee8fb01",
|
24
24
|
"id": "c9701e9b-83aa-442f-995b-20320ee8fb01"
|
25
25
|
}
|
26
26
|
]
|
@@ -6,7 +6,7 @@
|
|
6
6
|
"created_at": "2019-11-23T13:50:45Z",
|
7
7
|
"status": "in_progress",
|
8
8
|
"result": "pending",
|
9
|
-
"href": "/v3.
|
9
|
+
"href": "/v3.3/reports/6951786-123123-422221",
|
10
10
|
"breakdown": {},
|
11
11
|
"properties": {}
|
12
12
|
},
|
@@ -16,7 +16,7 @@
|
|
16
16
|
"created_at": "2019-11-23T13:50:45Z",
|
17
17
|
"status": "in_progress",
|
18
18
|
"result": "pending",
|
19
|
-
"href": "/v3.
|
19
|
+
"href": "/v3.3/reports/6951786-123123-316712",
|
20
20
|
"breakdown": {},
|
21
21
|
"properties": {}
|
22
22
|
}
|
@@ -4,7 +4,7 @@
|
|
4
4
|
"id": "dd0a89e4-d44e-417a-aec4-01137d01ae59",
|
5
5
|
"url": "https://demo.com",
|
6
6
|
"enabled":false,
|
7
|
-
"href": "/v3.
|
7
|
+
"href": "/v3.3/webhooks/dd0a89e4-d44e-417a-aec4-01137d01ae59",
|
8
8
|
"environments": [
|
9
9
|
"live"
|
10
10
|
],
|
@@ -18,7 +18,7 @@
|
|
18
18
|
"id": "bfc727a8-f7bf-4073-b123-ed70a70f58e5",
|
19
19
|
"url": "https://demo2.com",
|
20
20
|
"enabled": true,
|
21
|
-
"href": "/v3.
|
21
|
+
"href": "/v3.3/webhooks/bfc727a8-f7bf-4073-b123-ed70a70f58e5",
|
22
22
|
"environments": [
|
23
23
|
"live"
|
24
24
|
],
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: onfido
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Onfido
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -122,7 +122,6 @@ files:
|
|
122
122
|
- ".gitignore"
|
123
123
|
- ".rspec"
|
124
124
|
- ".rubocop.yml"
|
125
|
-
- ".travis.yml"
|
126
125
|
- CHANGELOG.md
|
127
126
|
- Gemfile
|
128
127
|
- LICENSE
|