onfido 0.3.0 → 0.4.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 +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
|
[](http://badge.fury.io/rb/onfido)
|
6
6
|
[](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