onfido 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +8 -0
- data/README.md +70 -89
- data/lib/onfido/configuration.rb +3 -2
- data/lib/onfido/resource.rb +10 -10
- data/lib/onfido/{address.rb → resources/address.rb} +0 -0
- data/lib/onfido/resources/applicant.rb +15 -0
- data/lib/onfido/{check.rb → resources/check.rb} +2 -8
- data/lib/onfido/{document.rb → resources/document.rb} +0 -0
- data/lib/onfido/resources/live_photo.rb +13 -0
- data/lib/onfido/resources/report.rb +12 -0
- data/lib/onfido/resources/webhook.rb +18 -0
- data/lib/onfido/version.rb +1 -1
- data/lib/onfido.rb +8 -7
- data/spec/integrations/applicant_spec.rb +1 -1
- data/spec/integrations/live_photo_spec.rb +22 -0
- data/spec/integrations/webhook_spec.rb +9 -0
- data/spec/onfido/resource_spec.rb +1 -1
- data/spec/onfido_spec.rb +10 -3
- data/spec/support/fake_onfido_api.rb +23 -16
- data/spec/support/fixtures/applicant.json +1 -1
- data/spec/support/fixtures/check.json +3 -3
- data/spec/support/fixtures/checks.json +3 -3
- data/spec/support/fixtures/document.json +1 -1
- data/spec/support/fixtures/live_photo.json +4 -0
- 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 +13 -8
- data/lib/onfido/applicant.rb +0 -21
- data/lib/onfido/report.rb +0 -11
- data/lib/onfido/webhook.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a1f27eb9ad0741dbb6a79a47e5500a9803949e3
|
4
|
+
data.tar.gz: 9b372d911abceaf82a67ffa26acf94b1f39043b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64ec8d066f5c1001fa0ead05077135edff853704d2a36d80051da66825372df75fae278cff76cd29cdacb3bd217e71eb6a794137419c32854a653c3e71c78160
|
7
|
+
data.tar.gz: 020226ac91a091febf4039c3e0bde9adb0091163ec135f3f146b98a45d2c0b294788103294954cbaa18e3a48b2824969fe8db6f002a15d539d363c271de6e93a
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## v0.4.0, 12 May 2016
|
2
|
+
|
3
|
+
- BREAKING: target v2 of the Onfido API. To continue using v1, specify this
|
4
|
+
version in `Onfido.configure`
|
5
|
+
- Add `api_version` configuration option
|
6
|
+
(see https://github.com/hvssle/onfido#configuration)
|
7
|
+
- Add support for `Onfido::LivePhoto` resource
|
8
|
+
|
1
9
|
## v0.3.0, 16 March 2016
|
2
10
|
|
3
11
|
- Add support for `Onfido::Webhook` resource
|
data/README.md
CHANGED
@@ -1,13 +1,11 @@
|
|
1
1
|
# Onfido
|
2
2
|
|
3
|
-
A wrapper for Onfido's
|
3
|
+
A thin wrapper for Onfido's API.
|
4
4
|
|
5
5
|
[![Gem Version](https://badge.fury.io/rb/onfido.svg)](http://badge.fury.io/rb/onfido)
|
6
6
|
[![Build Status](https://travis-ci.org/hvssle/onfido.svg?branch=master)](https://travis-ci.org/hvssle/onfido)
|
7
7
|
|
8
|
-
|
9
|
-
[1]: https://gitter.im/hvssle/onfido
|
10
|
-
[2]: https://badges.gitter.im/gitterHQ/developers.png
|
8
|
+
This gem supports both `v1` and `v2` of the Onfido API. Refer to Onfido's [API documentation](https://onfido.com/documentation#introduction) for details of the expected requests and responses for both.
|
11
9
|
|
12
10
|
## Installation
|
13
11
|
|
@@ -17,134 +15,117 @@ Add this line to your application's Gemfile:
|
|
17
15
|
gem 'onfido'
|
18
16
|
```
|
19
17
|
|
20
|
-
|
21
|
-
|
22
|
-
$ bundle
|
23
|
-
|
24
|
-
Or install it yourself as:
|
18
|
+
## Configuration
|
25
19
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
## Usage
|
30
|
-
|
31
|
-
There are 4 configuration options for Onfido, including your `api_key`, timeout details and logging.
|
20
|
+
There are 5 configuration options:
|
32
21
|
|
33
22
|
```ruby
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
23
|
+
Onfido.configure do |config|
|
24
|
+
config.api_key = 'MY_API_KEY'
|
25
|
+
config.api_version = 'v2'
|
26
|
+
config.logger = Logger.new(STDOUT)
|
27
|
+
config.open_timeout = 30
|
28
|
+
config.read_timeout = 80
|
29
|
+
end
|
40
30
|
```
|
41
31
|
|
42
|
-
|
32
|
+
## Usage
|
33
|
+
|
34
|
+
You can make API calls by using an instance of the `API` class:
|
43
35
|
|
44
36
|
```ruby
|
45
|
-
|
37
|
+
api = Onfido::API.new
|
46
38
|
```
|
47
39
|
|
48
|
-
###
|
40
|
+
### Resources
|
49
41
|
|
50
|
-
All resources share the same interface when making API calls.
|
42
|
+
All resources share the same interface when making API calls. Use `.create` to create a resource, `.find` to find one, and `.all` to fetch all resources.
|
51
43
|
|
52
44
|
**Note:** *All param keys should be a symbol e.g. `{ type: 'express', reports: [{ name: 'identity' }] }`*
|
53
45
|
|
46
|
+
#### Applicants
|
54
47
|
|
55
|
-
|
56
|
-
|
57
|
-
To create an applicant, you can simply use
|
48
|
+
Applicants are the object upon which Onfido checks are performed.
|
58
49
|
|
59
50
|
```ruby
|
60
|
-
|
51
|
+
api.applicant.create(params) # => Creates an applicant
|
52
|
+
api.applicant.find('applicant_id') # => Finds a single applicant
|
53
|
+
api.applicant.all # => Returns all applicants
|
61
54
|
```
|
62
55
|
|
63
|
-
|
64
|
-
|
65
|
-
```ruby
|
66
|
-
api.applicant.find('applicant_id')
|
67
|
-
```
|
56
|
+
#### Documents
|
68
57
|
|
69
|
-
|
58
|
+
Documents provide supporting evidence for Onfido checks. They can only be
|
59
|
+
created - the Onfido does not support finding or listing them.
|
70
60
|
|
71
61
|
```ruby
|
72
|
-
|
62
|
+
api.document.create('applicant_id', file: 'http://example.com', type: 'passport')
|
73
63
|
```
|
74
64
|
|
75
|
-
|
65
|
+
**Note:** The file parameter can be either a `File` object or a link to an image.
|
76
66
|
|
77
|
-
|
67
|
+
#### Live Photos
|
78
68
|
|
79
|
-
|
80
|
-
|
81
|
-
```
|
82
|
-
|
83
|
-
The file can both be a `File` object or a link to an image.
|
84
|
-
|
85
|
-
### Check
|
86
|
-
|
87
|
-
To create a check for an applicant, you can simply use
|
69
|
+
Live Photos, like documents, can provide supporting evidence for Onfido checks.
|
70
|
+
They can only be created - the Onfido does not support finding or listing them.
|
88
71
|
|
89
72
|
```ruby
|
90
|
-
|
73
|
+
api.live_photo.create('applicant_id', file: 'http://example.com')
|
91
74
|
```
|
92
75
|
|
93
|
-
|
76
|
+
**Note:** The file parameter can be either a `File` object or a link to an image.
|
94
77
|
|
95
|
-
|
96
|
-
api.check.find('applicant_id', 'check_id')
|
97
|
-
```
|
78
|
+
#### Checks
|
98
79
|
|
99
|
-
|
80
|
+
Checks are requests for Onfido to check an applicant, by commissioning one or
|
81
|
+
more "reports" on them.
|
100
82
|
|
101
83
|
```ruby
|
102
|
-
|
84
|
+
api.check.create('applicant_id', type: 'express', reports: [{ name: 'identity' }])
|
85
|
+
api.check.find('applicant_id', 'check_id')
|
86
|
+
api.check.all('applicant_id')
|
103
87
|
```
|
104
88
|
|
105
|
-
|
89
|
+
#### Reports
|
106
90
|
|
107
|
-
|
91
|
+
Reports provide details of the results of some part of a "check". They are
|
92
|
+
created when a check is created, so the Onfido API only provides support for
|
93
|
+
finding and listing them.
|
108
94
|
|
109
95
|
```ruby
|
110
|
-
|
96
|
+
api.report.find('check_id', 'report_id')
|
97
|
+
api.report.all('check_id')
|
111
98
|
```
|
112
99
|
|
113
|
-
|
100
|
+
#### Address Lookups
|
101
|
+
|
102
|
+
Onfido provides an address lookup service, to help ensure well-formatted
|
103
|
+
addresses are provided when creating "applicants". To search for addresses
|
104
|
+
by postcode, use:
|
114
105
|
|
115
106
|
```ruby
|
116
|
-
|
107
|
+
api.address.all('SE1 4NG')
|
117
108
|
```
|
118
109
|
|
119
|
-
|
110
|
+
#### Webhook Endpoints
|
120
111
|
|
121
|
-
|
112
|
+
Onfido allows you to set up and view your webhook endpoints via the API, as well
|
113
|
+
as through the dashboard.
|
122
114
|
|
123
115
|
```ruby
|
124
|
-
|
116
|
+
api.webhook.create(params) # => Creates a webhook endpoint
|
117
|
+
api.webhook.find('webhook_id') # => Finds a single webhook endpoint
|
118
|
+
api.webhook.all # => Returns all webhook endpoints
|
125
119
|
```
|
126
120
|
|
127
121
|
### Pagination
|
128
122
|
|
129
|
-
|
130
|
-
|
131
|
-
By default, both endpoints are fetching records the first 20 records. That is the maximum amount of records you can request per page.
|
132
|
-
|
133
|
-
To paginate over *applicants*:
|
134
|
-
```ruby
|
135
|
-
api = Onfido::API.new
|
136
|
-
api.applicant.all(page: 2, per_page: 10)
|
137
|
-
```
|
138
|
-
|
139
|
-
To paginate over *checks*:
|
140
|
-
```
|
141
|
-
api = Onfido::API.new
|
142
|
-
api.check.all('applicant_id', page: 2, per_page: 10)
|
143
|
-
```
|
123
|
+
All resources that support an `all` method also support pagination. By default,
|
124
|
+
the first 20 records are fetched.
|
144
125
|
|
145
|
-
|
126
|
+
### Error Handling
|
146
127
|
|
147
|
-
There are three classes of errors raised by the library, all of which subclass `Onfido::Error
|
128
|
+
There are three classes of errors raised by the library, all of which subclass `Onfido::Error`:
|
148
129
|
- `Onfido::ServerError` is raised whenever Onfido returns a `5xx` response
|
149
130
|
- `Onfido::RequestError` is raised whenever Onfido returns any other kind of error
|
150
131
|
- `Onfido::ConnectionError` is raised whenever a network error occurs (e.g., a timeout)
|
@@ -152,20 +133,20 @@ There are three classes of errors raised by the library, all of which subclass `
|
|
152
133
|
All three error classes provide the `response_code`, `response_body`, `json_body`, `type` and `fields` of the error (although for `Onfido::ServerError` and `Onfido::ConnectionError` the last three are likely to be `nil`).
|
153
134
|
|
154
135
|
```ruby
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
136
|
+
def create_applicant
|
137
|
+
api.applicant.create(params)
|
138
|
+
rescue Onfido::RequestError => e
|
139
|
+
e.type # => 'validation_error'
|
140
|
+
e.fields # => { "email": { "messages": ["invalid format"] } }
|
141
|
+
e.response_code # => '422'
|
142
|
+
end
|
162
143
|
```
|
163
144
|
|
164
|
-
|
145
|
+
## Roadmap
|
165
146
|
|
166
147
|
- Improve test coverage with more scenarios
|
167
|
-
- Add custom errors based on the response code
|
168
|
-
- Improve
|
148
|
+
- Add custom errors based on the response code
|
149
|
+
- Improve pagination handling (use information passed in link header)
|
169
150
|
|
170
151
|
## Contributing
|
171
152
|
|
data/lib/onfido/configuration.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Onfido
|
2
2
|
module Configuration
|
3
|
-
attr_accessor :api_key, :open_timeout, :read_timeout
|
3
|
+
attr_accessor :api_key, :open_timeout, :read_timeout, :api_version
|
4
4
|
|
5
5
|
def self.extended(base)
|
6
6
|
base.reset
|
@@ -14,6 +14,7 @@ module Onfido
|
|
14
14
|
self.api_key = nil
|
15
15
|
self.open_timeout = 30
|
16
16
|
self.read_timeout = 80
|
17
|
+
self.api_version = 'v2'
|
17
18
|
RestClient.log = nil
|
18
19
|
end
|
19
20
|
|
@@ -30,7 +31,7 @@ module Onfido
|
|
30
31
|
end
|
31
32
|
|
32
33
|
def endpoint
|
33
|
-
|
34
|
+
"https://api.onfido.com/#{api_version}/"
|
34
35
|
end
|
35
36
|
end
|
36
37
|
end
|
data/lib/onfido/resource.rb
CHANGED
@@ -11,7 +11,7 @@ module Onfido
|
|
11
11
|
make_request(
|
12
12
|
method: method.to_sym,
|
13
13
|
url: args.first.fetch(:url),
|
14
|
-
payload: build_query(args.first.fetch(:payload))
|
14
|
+
payload: build_query(args.first.fetch(:payload, {}))
|
15
15
|
)
|
16
16
|
end
|
17
17
|
end
|
@@ -35,14 +35,14 @@ module Onfido
|
|
35
35
|
response = RestClient::Request.execute(request_options)
|
36
36
|
|
37
37
|
parse(response)
|
38
|
-
rescue RestClient::ExceptionWithResponse =>
|
39
|
-
if
|
40
|
-
handle_api_error(
|
38
|
+
rescue RestClient::ExceptionWithResponse => error
|
39
|
+
if error.response
|
40
|
+
handle_api_error(error.response)
|
41
41
|
else
|
42
|
-
handle_restclient_error(
|
42
|
+
handle_restclient_error(error, url)
|
43
43
|
end
|
44
|
-
rescue RestClient::Exception, Errno::ECONNREFUSED =>
|
45
|
-
handle_restclient_error(
|
44
|
+
rescue RestClient::Exception, Errno::ECONNREFUSED => error
|
45
|
+
handle_restclient_error(error, url)
|
46
46
|
end
|
47
47
|
|
48
48
|
def parse(response)
|
@@ -97,13 +97,13 @@ module Onfido
|
|
97
97
|
)
|
98
98
|
end
|
99
99
|
|
100
|
-
def handle_restclient_error(
|
100
|
+
def handle_restclient_error(error, url)
|
101
101
|
connection_message =
|
102
102
|
"Please check your internet connection and try again. " \
|
103
103
|
"If this problem persists, you should let us know at info@onfido.com."
|
104
104
|
|
105
105
|
message =
|
106
|
-
case
|
106
|
+
case error
|
107
107
|
when RestClient::RequestTimeout
|
108
108
|
"Could not connect to Onfido (#{url}). #{connection_message}"
|
109
109
|
|
@@ -127,7 +127,7 @@ module Onfido
|
|
127
127
|
"If this problem persists, let us know at info@onfido.com."
|
128
128
|
end
|
129
129
|
|
130
|
-
full_message = message + "\n\n(Network error: #{
|
130
|
+
full_message = message + "\n\n(Network error: #{error.message})"
|
131
131
|
|
132
132
|
raise ConnectionError.new(full_message)
|
133
133
|
end
|
File without changes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Onfido
|
2
|
+
class Applicant < Resource
|
3
|
+
def create(payload)
|
4
|
+
post(url: url_for('applicants'), payload: payload)
|
5
|
+
end
|
6
|
+
|
7
|
+
def find(applicant_id)
|
8
|
+
get(url: url_for("applicants/#{applicant_id}"))
|
9
|
+
end
|
10
|
+
|
11
|
+
def all(page: 1, per_page: 20)
|
12
|
+
get(url: url_for("applicants?page=#{page}&per_page=#{per_page}"))
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -8,18 +8,12 @@ module Onfido
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def find(applicant_id, check_id)
|
11
|
-
get(
|
12
|
-
url: url_for("applicants/#{applicant_id}/checks/#{check_id}"),
|
13
|
-
payload: {}
|
14
|
-
)
|
11
|
+
get(url: url_for("applicants/#{applicant_id}/checks/#{check_id}"))
|
15
12
|
end
|
16
13
|
|
17
14
|
def all(applicant_id, page: 1, per_page: 20)
|
18
15
|
querystring = "page=#{page}&per_page=#{per_page}"
|
19
|
-
get(
|
20
|
-
url: url_for("applicants/#{applicant_id}/checks?#{querystring}"),
|
21
|
-
payload: {}
|
22
|
-
)
|
16
|
+
get(url: url_for("applicants/#{applicant_id}/checks?#{querystring}"))
|
23
17
|
end
|
24
18
|
end
|
25
19
|
end
|
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Onfido
|
2
|
+
class LivePhoto < Resource
|
3
|
+
# with open-uri the file can be a link or an actual file
|
4
|
+
|
5
|
+
def create(applicant_id, payload)
|
6
|
+
payload[:file] = open(payload.fetch(:file), 'r')
|
7
|
+
post(
|
8
|
+
url: url_for("applicants/#{applicant_id}/live_photos"),
|
9
|
+
payload: payload
|
10
|
+
)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Onfido
|
2
|
+
class Report < Resource
|
3
|
+
def find(check_id, report_id)
|
4
|
+
get(url: url_for("checks/#{check_id}/reports/#{report_id}"))
|
5
|
+
end
|
6
|
+
|
7
|
+
def all(check_id, page: 1, per_page: 20)
|
8
|
+
querystring = "page=#{page}&per_page=#{per_page}"
|
9
|
+
get(url: url_for("checks/#{check_id}/reports?#{querystring}"))
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Onfido
|
2
|
+
class Webhook < Resource
|
3
|
+
def create(payload)
|
4
|
+
post(
|
5
|
+
url: url_for('webhooks'),
|
6
|
+
payload: payload
|
7
|
+
)
|
8
|
+
end
|
9
|
+
|
10
|
+
def find(webhooks_id)
|
11
|
+
get(url: url_for("webhooks/#{webhooks_id}"))
|
12
|
+
end
|
13
|
+
|
14
|
+
def all(page: 1, per_page: 20)
|
15
|
+
get(url: url_for("webhooks?page=#{page}&per_page=#{per_page}"))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/onfido/version.rb
CHANGED
data/lib/onfido.rb
CHANGED
@@ -10,14 +10,15 @@ require 'onfido/errors/request_error'
|
|
10
10
|
require 'onfido/errors/server_error'
|
11
11
|
require 'onfido/errors/connection_error'
|
12
12
|
require 'onfido/null_logger'
|
13
|
-
require 'onfido/resource'
|
14
|
-
require 'onfido/address'
|
15
|
-
require 'onfido/applicant'
|
16
|
-
require 'onfido/document'
|
17
|
-
require 'onfido/check'
|
18
|
-
require 'onfido/report'
|
19
|
-
require 'onfido/webhook'
|
20
13
|
require 'onfido/api'
|
14
|
+
require 'onfido/resource'
|
15
|
+
require 'onfido/resources/address'
|
16
|
+
require 'onfido/resources/applicant'
|
17
|
+
require 'onfido/resources/check'
|
18
|
+
require 'onfido/resources/document'
|
19
|
+
require 'onfido/resources/live_photo'
|
20
|
+
require 'onfido/resources/report'
|
21
|
+
require 'onfido/resources/webhook'
|
21
22
|
|
22
23
|
module Onfido
|
23
24
|
extend Configuration
|
@@ -43,7 +43,7 @@ describe Onfido::Applicant do
|
|
43
43
|
|
44
44
|
it 'serializes the payload correctly' do
|
45
45
|
WebMock.after_request do |request_signature, _response|
|
46
|
-
if request_signature.uri.path == '
|
46
|
+
if request_signature.uri.path == 'v2/applicants'
|
47
47
|
expect(Rack::Utils.parse_nested_query(request_signature.body)).
|
48
48
|
to eq(params)
|
49
49
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'tempfile'
|
2
|
+
|
3
|
+
describe Onfido::LivePhoto do
|
4
|
+
subject(:live_photo) { described_class.new }
|
5
|
+
|
6
|
+
describe '#create' do
|
7
|
+
after do
|
8
|
+
file.close
|
9
|
+
file.unlink
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:file) { Tempfile.new(['photo', '.jpg']) }
|
13
|
+
before { allow(live_photo).to receive(:open).and_return(:file) }
|
14
|
+
let(:params) { { file: file } }
|
15
|
+
let(:applicant_id) { '1030303-123123-123123' }
|
16
|
+
|
17
|
+
it 'creates a new photo' do
|
18
|
+
response = live_photo.create('foobar', params)
|
19
|
+
expect(response['id']).not_to be_nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -25,6 +25,15 @@ describe Onfido::Webhook do
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
describe '#find' do
|
29
|
+
let(:webhook_id) { 'fcb73186-0733-4f6f-9c57-d9d5ef979443' }
|
30
|
+
|
31
|
+
it 'returns the webhook' do
|
32
|
+
response = webhook.find(webhook_id)
|
33
|
+
expect(response['id']).to eq(webhook_id)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
28
37
|
describe "#all" do
|
29
38
|
it "returns all the registered webhooks" do
|
30
39
|
response = webhook.all
|
data/spec/onfido_spec.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
describe Onfido do
|
2
2
|
subject(:onfido) { described_class }
|
3
|
+
after(:each) { onfido.reset }
|
3
4
|
|
4
5
|
context 'configuration' do
|
5
|
-
before { onfido.reset }
|
6
|
-
|
7
6
|
describe "default values" do
|
8
7
|
describe ".api_key" do
|
9
8
|
subject { onfido.api_key }
|
@@ -12,7 +11,7 @@ describe Onfido do
|
|
12
11
|
|
13
12
|
describe ".endpoint" do
|
14
13
|
subject { onfido.endpoint }
|
15
|
-
it { is_expected.to eq('https://api.onfido.com/
|
14
|
+
it { is_expected.to eq('https://api.onfido.com/v2/') }
|
16
15
|
end
|
17
16
|
|
18
17
|
describe ".logger" do
|
@@ -28,6 +27,14 @@ describe Onfido do
|
|
28
27
|
end
|
29
28
|
end
|
30
29
|
|
30
|
+
describe "setting the API version" do
|
31
|
+
it 'changes the configuration to the new value' do
|
32
|
+
onfido.api_version = 'v1'
|
33
|
+
expect(onfido.api_version).to eq('v1')
|
34
|
+
expect(onfido.endpoint).to eq('https://api.onfido.com/v1/')
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
31
38
|
describe '.logger' do
|
32
39
|
context 'when an option is passed' do
|
33
40
|
context 'when the option passed behaves like a logger' do
|
@@ -1,66 +1,73 @@
|
|
1
1
|
require 'sinatra/base'
|
2
2
|
|
3
3
|
class FakeOnfidoAPI < Sinatra::Base
|
4
|
-
get '/
|
4
|
+
get '/v2/addresses/pick' do
|
5
5
|
json_response(200, 'addresses.json')
|
6
6
|
end
|
7
7
|
|
8
|
-
post '/
|
8
|
+
post '/v2/applicants' do
|
9
9
|
json_response(201, 'applicant.json')
|
10
10
|
end
|
11
11
|
|
12
|
-
get '/
|
12
|
+
get '/v2/applicants/:id' do
|
13
13
|
json_response(200, 'applicant.json')
|
14
14
|
end
|
15
15
|
|
16
|
-
get '/
|
16
|
+
get '/v2/applicants' do
|
17
17
|
response = json_response(200, 'applicants.json')
|
18
18
|
{ applicants: JSON.parse(response)['applicants'][pagination_range] }.to_json
|
19
19
|
end
|
20
20
|
|
21
|
-
post '/
|
21
|
+
post '/v2/applicants/:id/documents' do
|
22
22
|
json_response(201, 'document.json')
|
23
23
|
end
|
24
24
|
|
25
|
-
post '/
|
25
|
+
post '/v2/applicants/:id/live_photos' do
|
26
|
+
json_response(201, 'live_photo.json')
|
27
|
+
end
|
28
|
+
|
29
|
+
post '/v2/applicants/:id/checks' do
|
26
30
|
json_response(201, 'check.json')
|
27
31
|
end
|
28
32
|
|
29
|
-
get '/
|
33
|
+
get '/v2/applicants/:id/checks/:id' do
|
30
34
|
json_response(200, 'check.json')
|
31
35
|
end
|
32
36
|
|
33
|
-
get '/
|
37
|
+
get '/v2/applicants/:id/checks' do
|
34
38
|
response = json_response(200, 'checks.json')
|
35
39
|
{ checks: JSON.parse(response)['checks'][pagination_range] }.to_json
|
36
40
|
end
|
37
41
|
|
38
|
-
get '/
|
42
|
+
get '/v2/checks/:id/reports' do
|
39
43
|
json_response(200, 'reports.json')
|
40
44
|
end
|
41
45
|
|
42
|
-
get '/
|
46
|
+
get '/v2/checks/:id/reports/:id' do
|
43
47
|
json_response(200, 'report.json')
|
44
48
|
end
|
45
49
|
|
46
|
-
post '/
|
50
|
+
post '/v2/webhooks' do
|
47
51
|
json_response(201, 'webhook.json')
|
48
52
|
end
|
49
53
|
|
50
|
-
get '/
|
51
|
-
json_response(200, '
|
54
|
+
get '/v2/webhooks/:id' do
|
55
|
+
json_response(200, 'webhook.json')
|
52
56
|
end
|
53
57
|
|
58
|
+
get '/v2/webhooks' do
|
59
|
+
json_response(200, 'webhooks.json')
|
60
|
+
end
|
54
61
|
|
55
|
-
get '/
|
62
|
+
get '/v2/4xx_response' do
|
56
63
|
json_response(422, '4xx_response.json')
|
57
64
|
end
|
58
65
|
|
59
|
-
get '/
|
66
|
+
get '/v2/unexpected_error_format' do
|
60
67
|
json_response(400, 'unexpected_error_format.json')
|
61
68
|
end
|
62
69
|
|
63
|
-
get '/
|
70
|
+
get '/v2/unparseable_response' do
|
64
71
|
content_type :json
|
65
72
|
status 504
|
66
73
|
''
|
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"id": "8546921-123123-123123",
|
3
3
|
"created_at": "2014-05-23T13:50:33Z",
|
4
|
-
"href": "/
|
4
|
+
"href": "/v2/applicants/61f659cb-c90b-4067-808a-6136b5c01351/checks/8546921-123123-123123",
|
5
5
|
"type": "standard",
|
6
6
|
"status": "pending",
|
7
7
|
"result": "pending",
|
@@ -12,7 +12,7 @@
|
|
12
12
|
"created_at": "2014-05-23T13:50:33Z",
|
13
13
|
"status": "awaiting_applicant",
|
14
14
|
"result": "pending",
|
15
|
-
"href": "/
|
15
|
+
"href": "/v2/checks/8546921-123123-123123/reports/6951786-123123-422221",
|
16
16
|
"breakdown": {},
|
17
17
|
"properties": {}
|
18
18
|
},
|
@@ -22,7 +22,7 @@
|
|
22
22
|
"created_at": "2014-05-23T13:50:33Z",
|
23
23
|
"status": "awaiting_applicant",
|
24
24
|
"result": "pending",
|
25
|
-
"href": "/
|
25
|
+
"href": "/v2/checks/8546921-123123-123123/reports/6951786-123123-316712",
|
26
26
|
"breakdown": {},
|
27
27
|
"properties": {}
|
28
28
|
}
|
@@ -3,7 +3,7 @@
|
|
3
3
|
{
|
4
4
|
"id": "8546921-123123-123123",
|
5
5
|
"created_at": "2014-05-23T13:50:33Z",
|
6
|
-
"href": "/
|
6
|
+
"href": "/v2/applicants/61f659cb-c90b-4067-808a-6136b5c01351/checks/8546921-123123-123123",
|
7
7
|
"type": "standard",
|
8
8
|
"status": "pending",
|
9
9
|
"result": "pending",
|
@@ -14,7 +14,7 @@
|
|
14
14
|
"created_at": "2014-05-23T13:50:33Z",
|
15
15
|
"status": "awaiting_applicant",
|
16
16
|
"result": "pending",
|
17
|
-
"href": "/
|
17
|
+
"href": "/v2/checks/8546921-123123-123123/reports/6951786-123123-422221",
|
18
18
|
"breakdown": {},
|
19
19
|
"properties": {}
|
20
20
|
},
|
@@ -24,7 +24,7 @@
|
|
24
24
|
"created_at": "2014-05-23T13:50:33Z",
|
25
25
|
"status": "awaiting_applicant",
|
26
26
|
"result": "pending",
|
27
|
-
"href": "/
|
27
|
+
"href": "/v2/checks/8546921-123123-123123/reports/6951786-123123-316712",
|
28
28
|
"breakdown": {},
|
29
29
|
"properties": {}
|
30
30
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"id": "7568415-123123-123123",
|
3
3
|
"created_at": "2014-05-23 13:50:33Z",
|
4
|
-
"href": "/
|
4
|
+
"href": "/v2/applicants/1030303-123123-123123/documents/7568415-123123-123123",
|
5
5
|
"file_name": "passport.jpg",
|
6
6
|
"file_type": "png",
|
7
7
|
"file_size": 282870,
|
@@ -4,7 +4,7 @@
|
|
4
4
|
"created_at": "2014-05-23T13:50:33Z",
|
5
5
|
"status": "awaiting_applicant",
|
6
6
|
"result": "pending",
|
7
|
-
"href": "/
|
7
|
+
"href": "/v2/checks/8546921-123123-123123/reports/6951786-123123-422221",
|
8
8
|
"breakdown": {},
|
9
9
|
"properties": {}
|
10
10
|
}
|
@@ -6,7 +6,7 @@
|
|
6
6
|
"created_at": "2014-05-23T13:50:33Z",
|
7
7
|
"status": "awaiting_applicant",
|
8
8
|
"result": "pending",
|
9
|
-
"href": "/
|
9
|
+
"href": "/v2/checks/8546921-123123-123123/reports/6951786-123123-422221",
|
10
10
|
"breakdown": {},
|
11
11
|
"properties": {}
|
12
12
|
},
|
@@ -16,7 +16,7 @@
|
|
16
16
|
"created_at": "2014-05-23T13:50:33Z",
|
17
17
|
"status": "awaiting_applicant",
|
18
18
|
"result": "pending",
|
19
|
-
"href": "/
|
19
|
+
"href": "/v2/checks/8546921-123123-123123/reports/6951786-123123-316712",
|
20
20
|
"breakdown": {},
|
21
21
|
"properties": {}
|
22
22
|
}
|
@@ -3,7 +3,7 @@
|
|
3
3
|
"url": "https://webhookendpoint.url",
|
4
4
|
"token": "yV85IsmuYwmjQGlZ",
|
5
5
|
"enabled": true,
|
6
|
-
"href": "/
|
6
|
+
"href": "/v2/webhooks/fcb73186-0733-4f6f-9c57-d9d5ef979443",
|
7
7
|
"events": [
|
8
8
|
"report completion",
|
9
9
|
"report withdrawal",
|
@@ -3,7 +3,7 @@
|
|
3
3
|
{
|
4
4
|
"id": "dd0a89e4-d44e-417a-aec4-01137d01ae59",
|
5
5
|
"url": "https://demo.com","enabled":false,
|
6
|
-
"href": "/
|
6
|
+
"href": "/v2/webhooks/dd0a89e4-d44e-417a-aec4-01137d01ae59",
|
7
7
|
"events":
|
8
8
|
[
|
9
9
|
"check in progress"
|
@@ -13,7 +13,7 @@
|
|
13
13
|
"id": "bfc727a8-f7bf-4073-b123-ed70a70f58e5",
|
14
14
|
"url": "https://demo2.com",
|
15
15
|
"enabled": true,
|
16
|
-
"href": "/
|
16
|
+
"href": "/v2/webhooks/bfc727a8-f7bf-4073-b123-ed70a70f58e5",
|
17
17
|
"events":
|
18
18
|
[
|
19
19
|
"report completion",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: onfido
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pericles Theodorou
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-05-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -141,27 +141,29 @@ files:
|
|
141
141
|
- README.md
|
142
142
|
- Rakefile
|
143
143
|
- lib/onfido.rb
|
144
|
-
- lib/onfido/address.rb
|
145
144
|
- lib/onfido/api.rb
|
146
|
-
- lib/onfido/applicant.rb
|
147
|
-
- lib/onfido/check.rb
|
148
145
|
- lib/onfido/configuration.rb
|
149
|
-
- lib/onfido/document.rb
|
150
146
|
- lib/onfido/errors/connection_error.rb
|
151
147
|
- lib/onfido/errors/onfido_error.rb
|
152
148
|
- lib/onfido/errors/request_error.rb
|
153
149
|
- lib/onfido/errors/server_error.rb
|
154
150
|
- lib/onfido/null_logger.rb
|
155
|
-
- lib/onfido/report.rb
|
156
151
|
- lib/onfido/resource.rb
|
152
|
+
- lib/onfido/resources/address.rb
|
153
|
+
- lib/onfido/resources/applicant.rb
|
154
|
+
- lib/onfido/resources/check.rb
|
155
|
+
- lib/onfido/resources/document.rb
|
156
|
+
- lib/onfido/resources/live_photo.rb
|
157
|
+
- lib/onfido/resources/report.rb
|
158
|
+
- lib/onfido/resources/webhook.rb
|
157
159
|
- lib/onfido/version.rb
|
158
|
-
- lib/onfido/webhook.rb
|
159
160
|
- onfido.gemspec
|
160
161
|
- spec/integrations/address_spec.rb
|
161
162
|
- spec/integrations/applicant_spec.rb
|
162
163
|
- spec/integrations/check_spec.rb
|
163
164
|
- spec/integrations/document_spec.rb
|
164
165
|
- spec/integrations/exceptions_spec.rb
|
166
|
+
- spec/integrations/live_photo_spec.rb
|
165
167
|
- spec/integrations/report_spec.rb
|
166
168
|
- spec/integrations/webhook_spec.rb
|
167
169
|
- spec/onfido/connection_error_spec.rb
|
@@ -177,6 +179,7 @@ files:
|
|
177
179
|
- spec/support/fixtures/check.json
|
178
180
|
- spec/support/fixtures/checks.json
|
179
181
|
- spec/support/fixtures/document.json
|
182
|
+
- spec/support/fixtures/live_photo.json
|
180
183
|
- spec/support/fixtures/report.json
|
181
184
|
- spec/support/fixtures/reports.json
|
182
185
|
- spec/support/fixtures/unexpected_error_format.json
|
@@ -212,6 +215,7 @@ test_files:
|
|
212
215
|
- spec/integrations/check_spec.rb
|
213
216
|
- spec/integrations/document_spec.rb
|
214
217
|
- spec/integrations/exceptions_spec.rb
|
218
|
+
- spec/integrations/live_photo_spec.rb
|
215
219
|
- spec/integrations/report_spec.rb
|
216
220
|
- spec/integrations/webhook_spec.rb
|
217
221
|
- spec/onfido/connection_error_spec.rb
|
@@ -227,6 +231,7 @@ test_files:
|
|
227
231
|
- spec/support/fixtures/check.json
|
228
232
|
- spec/support/fixtures/checks.json
|
229
233
|
- spec/support/fixtures/document.json
|
234
|
+
- spec/support/fixtures/live_photo.json
|
230
235
|
- spec/support/fixtures/report.json
|
231
236
|
- spec/support/fixtures/reports.json
|
232
237
|
- spec/support/fixtures/unexpected_error_format.json
|
data/lib/onfido/applicant.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
module Onfido
|
2
|
-
class Applicant < Resource
|
3
|
-
def create(payload)
|
4
|
-
post(
|
5
|
-
url: url_for('applicants'),
|
6
|
-
payload: payload
|
7
|
-
)
|
8
|
-
end
|
9
|
-
|
10
|
-
def find(applicant_id)
|
11
|
-
get(url: url_for("applicants/#{applicant_id}"), payload: {})
|
12
|
-
end
|
13
|
-
|
14
|
-
def all(page: 1, per_page: 20)
|
15
|
-
get(
|
16
|
-
url: url_for("applicants?page=#{page}&per_page=#{per_page}"),
|
17
|
-
payload: {}
|
18
|
-
)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
data/lib/onfido/report.rb
DELETED
data/lib/onfido/webhook.rb
DELETED