onfido 2.4.0 → 2.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c94c63515711a15cc138b42a1121f9e1e5d023a1bc40419502c8aa11cd8f3a23
4
- data.tar.gz: 6868c52e39f8cc35ec28acd396cb0cc94f63093fe6a1c773891cf8d6170dd8fd
3
+ metadata.gz: 74a5e178fa210205846555dbb0f870b21830bae9a44bbf36bd2f095f4c12bc7e
4
+ data.tar.gz: 605d4d740f4a73db842ca05592d34d1170e565ccbc5ee2c580a1f131968673fa
5
5
  SHA512:
6
- metadata.gz: a21c2254adb0f552b319a26dc4916415c8c4a74e5681c51ee95084aa01e77b3ec72816b47f9d8bfbf0f89b24c5f2f4796fc6e38f45cce184b9ad035ff6c42339
7
- data.tar.gz: bf96b5f01ff6acf63b2e7534a0047759415c7a2c08d45f43c95b525efbded114ceb88c97171c385a7073a87483aed74801b7db9f6f849a27a7fe6330bb704b90
6
+ metadata.gz: e31930f8a4e9a856e72753420801ada047f159ae6444648440cde21008270f068ccce793974c5361cd26f538ec51b52ceb2a76ea63af2249629e8d27c056ca8f
7
+ data.tar.gz: 03dd7a20bb4d1e6fcad6b1f9a3a79c1238bc2e966395f35bb4509ce5987f10eb1d602a2327f19a15bad558be1491d9f3f2137022785909352a5c028f8c9f6e99
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## v2.6.0, 22 November 2022
2
+
3
+ - Added support for [Monitors](https://documentation.onfido.com/#monitors)
4
+
5
+ ## v2.5.0, 22 October 2022
6
+
7
+ - Added Motion capture support
8
+
1
9
  ## v2.4.0, 05 October 2022
2
10
 
3
11
  - Updated to use API v3.5, for more details please see our [release notes](https://developers.onfido.com/release-notes#api-v35).
data/lib/onfido/api.rb CHANGED
@@ -26,6 +26,14 @@ module Onfido
26
26
  @live_video ||= Onfido::LiveVideo.new(options)
27
27
  end
28
28
 
29
+ def monitor
30
+ @monitor ||= Onfido::Monitor.new(options)
31
+ end
32
+
33
+ def motion_capture
34
+ @motion_capture ||= Onfido::MotionCapture.new(options)
35
+ end
36
+
29
37
  def report
30
38
  @report ||= Onfido::Report.new(options)
31
39
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Onfido
4
+ class Monitor < Resource
5
+ def create(applicant_id:, report_name:, **payload)
6
+ payload[:applicant_id] = applicant_id
7
+ payload[:report_name] = report_name
8
+
9
+ post(path: 'watchlist_monitors', payload: payload)
10
+ end
11
+
12
+ def find(monitor_id)
13
+ get(path: "watchlist_monitors/#{monitor_id}")
14
+ end
15
+
16
+ def all(applicant_id)
17
+ get(path: "watchlist_monitors?applicant_id=#{applicant_id}")
18
+ end
19
+
20
+ def destroy(monitor_id)
21
+ delete(path: "watchlist_monitors/#{monitor_id}")
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Onfido
4
+ class MotionCapture < Resource
5
+ def find(motion_capture_id)
6
+ get(path: "motion_captures/#{motion_capture_id}")
7
+ end
8
+
9
+ def download(motion_capture_id)
10
+ get(path: "motion_captures/#{motion_capture_id}/download")
11
+ end
12
+
13
+ def frame(motion_capture_id)
14
+ get(path: "motion_captures/#{motion_capture_id}/frame")
15
+ end
16
+
17
+ def all(applicant_id)
18
+ get(path: "motion_captures?applicant_id=#{applicant_id}")
19
+ end
20
+ end
21
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Onfido
4
- VERSION = '2.4.0'
4
+ VERSION = '2.6.0'
5
5
  end
data/lib/onfido.rb CHANGED
@@ -20,6 +20,8 @@ require 'onfido/resources/document'
20
20
  require 'onfido/resources/extraction'
21
21
  require 'onfido/resources/live_photo'
22
22
  require 'onfido/resources/live_video'
23
+ require 'onfido/resources/monitor'
24
+ require 'onfido/resources/motion_capture'
23
25
  require 'onfido/resources/report'
24
26
  require 'onfido/resources/sdk_token'
25
27
  require 'onfido/resources/webhook'
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe Onfido::Monitor do
4
+ include_context 'fake onfido api'
5
+
6
+ subject(:monitor) { onfido.monitor }
7
+
8
+ let(:monitor_id) { '2748c4fc-c6b8-4c1e-a383-21efa241ce1e' }
9
+
10
+ describe '#create' do
11
+ let(:applicant_id) { '61f659cb-c90b-4067-808a-6136b5c01351' }
12
+ let(:report_name) { 'watchlist_standard' }
13
+
14
+ it 'creates a monitor for the applicant' do
15
+ response = monitor.create(applicant_id: applicant_id, report_name: report_name)
16
+ expect(response).to be_a(Hash).and include('id' => monitor_id, 'report_name' => report_name)
17
+ end
18
+ end
19
+
20
+ describe '#find' do
21
+ it 'returns the expected monitor' do
22
+ response = monitor.find(monitor_id)
23
+
24
+ expect(response).to be_a(Hash).and include('id' => monitor_id)
25
+ end
26
+ end
27
+
28
+ describe '#all' do
29
+ it 'returns a list of monitors' do
30
+ applicant_id = '1030303-123123-123123'
31
+ response = monitor.all(applicant_id)
32
+
33
+ expect(response['monitors']).to be_an(Array).and contain_exactly(an_instance_of(Hash))
34
+ end
35
+ end
36
+
37
+ it 'returns success code' do
38
+ expect { monitor.destroy(monitor_id) }.not_to raise_error
39
+ end
40
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'tempfile'
4
+
5
+ describe Onfido::MotionCapture do
6
+ include_context 'fake onfido api'
7
+
8
+ subject(:motion_capture) { onfido.motion_capture }
9
+
10
+ let(:motion_capture_id) { 'b1ae05b7-fb12-47c3-971c-311b56fc8de6' }
11
+
12
+ describe '#find' do
13
+ it 'returns the expected motion capture' do
14
+ response = motion_capture.find(motion_capture_id)
15
+
16
+ expect(response['id']).to eq(motion_capture_id)
17
+ end
18
+ end
19
+
20
+ describe '#all' do
21
+ it 'returns list of motion captures' do
22
+ applicant_id = '1030303-123123-123123'
23
+ response = motion_capture.all(applicant_id)
24
+
25
+ expect(response['motion_captures']).not_to be_empty
26
+ end
27
+ end
28
+
29
+ describe '#download' do
30
+ it 'returns the file data' do
31
+ response = motion_capture.download(motion_capture_id)
32
+
33
+ expect(response).not_to be_nil
34
+ end
35
+ end
36
+
37
+ describe '#frame' do
38
+ it 'returns the frame data' do
39
+ response = motion_capture.frame(motion_capture_id)
40
+
41
+ expect(response).not_to be_nil
42
+ end
43
+ end
44
+ end
@@ -114,6 +114,50 @@ class FakeOnfidoAPI < Sinatra::Base # rubocop:disable Metrics/ClassLength
114
114
  "\x01\x02\x03" # acts as binary file data
115
115
  end
116
116
 
117
+ post '/v3.5/watchlist_monitors' do
118
+ json_response(201, 'monitor.json')
119
+ end
120
+
121
+ get '/v3.5/watchlist_monitors/:id' do
122
+ json_response(200, 'monitor.json')
123
+ end
124
+
125
+ get '/v3.5/watchlist_monitors' do
126
+ if params['applicant_id'] == '1030303-123123-123123'
127
+ json_response(200, 'monitors.json')
128
+ else
129
+ status 404
130
+ end
131
+ end
132
+
133
+ delete '/v3.5/watchlist_monitors/:id' do
134
+ status 204
135
+ end
136
+
137
+ get '/v3.5/motion_captures/:id' do
138
+ json_response(200, 'motion_capture.json')
139
+ end
140
+
141
+ get '/v3.5/motion_captures' do
142
+ if params['applicant_id'] == '1030303-123123-123123'
143
+ json_response(200, 'motion_captures.json')
144
+ else
145
+ status 404
146
+ end
147
+ end
148
+
149
+ get '/v3.5/motion_captures/:id/download' do
150
+ status 200
151
+ content_type 'video/mp4'
152
+ "\x01\x02\x03" # acts as binary file data
153
+ end
154
+
155
+ get '/v3.5/motion_captures/:id/frame' do
156
+ status 200
157
+ content_type 'image/jpeg'
158
+ "\x01\x02\x03" # acts as binary file data
159
+ end
160
+
117
161
  post '/v3.5/checks' do
118
162
  params['applicant_id'].nil? ? status(422) : json_response(201, 'check.json')
119
163
  end
@@ -0,0 +1,8 @@
1
+ {
2
+ "id": "2748c4fc-c6b8-4c1e-a383-21efa241ce1e",
3
+ "report_name": "watchlist_standard",
4
+ "created_at": "2022-09-01T15:01:36.921Z",
5
+ "deleted_at": null,
6
+ "sandbox": false,
7
+ "tags": []
8
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "monitors": [
3
+ {
4
+ "id": "2748c4fc-c6b8-4c1e-a383-21efa241ce1e",
5
+ "report_name": "watchlist_standard",
6
+ "created_at": "2022-09-01T15:01:36.921Z",
7
+ "deleted_at": null,
8
+ "sandbox": false,
9
+ "tags": []
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "id" : "b1ae05b7-fb12-47c3-971c-311b56fc8de6",
3
+ "created_at" : "2022-11-22T10:22:45Z",
4
+ "file_name" : "motion_capture.mp4",
5
+ "file_type" : "video/mp4",
6
+ "file_size" : 2437112,
7
+ "href" : "/v3.5/motion_captures/b1ae05b7-fb12-47c3-971c-311b56fc8de6",
8
+ "download_href" : "/v3.5/motion_captures/b1ae05b7-fb12-47c3-971c-311b56fc8de6/download"
9
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "motion_captures": [
3
+ {
4
+ "id" : "b1ae05b7-fb12-47c3-971c-311b56fc8de6",
5
+ "created_at" : "2022-11-22T10:22:45Z",
6
+ "file_name" : "motion_capture.mp4",
7
+ "file_type" : "video/mp4",
8
+ "file_size" : 2437112,
9
+ "href" : "/v3.5/motion_captures/b1ae05b7-fb12-47c3-971c-311b56fc8de6",
10
+ "download_href" : "/v3.5/motion_captures/b1ae05b7-fb12-47c3-971c-311b56fc8de6/download"
11
+ }
12
+ ]
13
+ }
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.4.0
4
+ version: 2.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Onfido
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-11 00:00:00.000000000 Z
11
+ date: 2022-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -141,6 +141,8 @@ files:
141
141
  - lib/onfido/resources/extraction.rb
142
142
  - lib/onfido/resources/live_photo.rb
143
143
  - lib/onfido/resources/live_video.rb
144
+ - lib/onfido/resources/monitor.rb
145
+ - lib/onfido/resources/motion_capture.rb
144
146
  - lib/onfido/resources/report.rb
145
147
  - lib/onfido/resources/sdk_token.rb
146
148
  - lib/onfido/resources/webhook.rb
@@ -153,6 +155,8 @@ files:
153
155
  - spec/integrations/extraction_spec.rb
154
156
  - spec/integrations/live_photo_spec.rb
155
157
  - spec/integrations/live_video_spec.rb
158
+ - spec/integrations/monitor_spec.rb
159
+ - spec/integrations/motion_capture_spec.rb
156
160
  - spec/integrations/report_spec.rb
157
161
  - spec/integrations/resource_spec.rb
158
162
  - spec/integrations/sdk_token_spec.rb
@@ -176,6 +180,10 @@ files:
176
180
  - spec/support/fixtures/live_photos.json
177
181
  - spec/support/fixtures/live_video.json
178
182
  - spec/support/fixtures/live_videos.json
183
+ - spec/support/fixtures/monitor.json
184
+ - spec/support/fixtures/monitors.json
185
+ - spec/support/fixtures/motion_capture.json
186
+ - spec/support/fixtures/motion_captures.json
179
187
  - spec/support/fixtures/not_scheduled_for_deletion_error.json
180
188
  - spec/support/fixtures/report.json
181
189
  - spec/support/fixtures/reports.json
@@ -214,6 +222,8 @@ test_files:
214
222
  - spec/integrations/extraction_spec.rb
215
223
  - spec/integrations/live_photo_spec.rb
216
224
  - spec/integrations/live_video_spec.rb
225
+ - spec/integrations/monitor_spec.rb
226
+ - spec/integrations/motion_capture_spec.rb
217
227
  - spec/integrations/report_spec.rb
218
228
  - spec/integrations/resource_spec.rb
219
229
  - spec/integrations/sdk_token_spec.rb
@@ -237,6 +247,10 @@ test_files:
237
247
  - spec/support/fixtures/live_photos.json
238
248
  - spec/support/fixtures/live_video.json
239
249
  - spec/support/fixtures/live_videos.json
250
+ - spec/support/fixtures/monitor.json
251
+ - spec/support/fixtures/monitors.json
252
+ - spec/support/fixtures/motion_capture.json
253
+ - spec/support/fixtures/motion_captures.json
240
254
  - spec/support/fixtures/not_scheduled_for_deletion_error.json
241
255
  - spec/support/fixtures/report.json
242
256
  - spec/support/fixtures/reports.json