dwolla_v2 2.0.2 → 2.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -2
- data/README.md +59 -126
- data/lib/dwolla_v2.rb +1 -0
- data/lib/dwolla_v2/errors/duplicate_resource_error.rb +4 -0
- data/lib/dwolla_v2/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e2c5759f8b81eb5d85c8fae2e308062048a9ec09
|
4
|
+
data.tar.gz: f4536f036c14fac66caf7d6c260f67dcfcceb020
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0b10cccd12b0f82f6fd615db9e2e1c098d50d37f3caa38cb2b39ce4733245c44cb5880eec8a13de99133cea6baf3e84b499f1c5c48913450b22f4b47af780dc
|
7
|
+
data.tar.gz: 6af8d862bcfabc8cb606f5b5d0c94da711f08a3072faff16f383299b12d794b85114d9cf1fff25baac3247ea0600d0dbe76a1bc57d2a8bfad18bfb70824a3089
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
![Build Status](https://travis-ci.org/Dwolla/dwolla-v2-ruby.svg)
|
4
4
|
|
5
|
-
Dwolla V2 Ruby client.
|
5
|
+
Dwolla V2 Ruby client.
|
6
6
|
|
7
7
|
[API Documentation](https://docsv2.dwolla.com)
|
8
8
|
|
@@ -29,8 +29,8 @@ Or install it yourself as:
|
|
29
29
|
Create a client using your application's consumer key and secret found on the applications page
|
30
30
|
([Sandbox][apsandbox], [Production][approd]).
|
31
31
|
|
32
|
-
[apsandbox]: https://sandbox.dwolla.com/applications
|
33
|
-
[approd]: https://
|
32
|
+
[apsandbox]: https://dashboard-sandbox.dwolla.com/applications
|
33
|
+
[approd]: https://dashboard.dwolla.com/applications
|
34
34
|
|
35
35
|
```ruby
|
36
36
|
# config/initializers/dwolla.rb
|
@@ -91,17 +91,12 @@ end
|
|
91
91
|
|
92
92
|
## `DwollaV2::Token`
|
93
93
|
|
94
|
-
Tokens can be used to make requests to the Dwolla V2 API.
|
94
|
+
Tokens can be used to make requests to the Dwolla V2 API.
|
95
95
|
|
96
96
|
### Application tokens
|
97
97
|
|
98
|
-
Application tokens are used to
|
99
|
-
|
100
|
-
tokens can be created using the [`client_credentials`][client_credentials] OAuth grant type:
|
101
|
-
|
102
|
-
**Note:** If an application has the `ManageCustomers` scope enabled, it can also be used to access
|
103
|
-
the API for White Label Customer related endpoints. Keep in mind, the application must belong to
|
104
|
-
same Dwolla account that will be used when creating and managing White Label Customers in the API.
|
98
|
+
Application access tokens are used to authenticate against the API on behalf of a consumer application. Application tokens can be used to access resources in the API that either belong to the application itself (`webhooks`, `events`, `webhook-subscriptions`) or the partner Account that owns the consumer application (`accounts`, `customers`, `funding-sources`, etc.). Application
|
99
|
+
tokens are obtained by using the [`client_credentials`][client_credentials] OAuth grant type:
|
105
100
|
|
106
101
|
[client_credentials]: https://tools.ietf.org/html/rfc6749#section-4.4
|
107
102
|
|
@@ -110,80 +105,17 @@ application_token = $dwolla.auths.client
|
|
110
105
|
# => #<DwollaV2::Token client=#<DwollaV2::Client key="..." secret="..." environment=:sandbox> access_token="..." expires_in=3600 scope="...">
|
111
106
|
```
|
112
107
|
|
113
|
-
|
114
|
-
a new one using `$dwolla.auths.client
|
115
|
-
|
116
|
-
### Account tokens
|
117
|
-
|
118
|
-
Account tokens are used to access the API on behalf of a Dwolla account. API resources that belong
|
119
|
-
to an account include `customers`, `funding-sources`, `documents`, `mass-payments`, `mass-payment-items`,
|
120
|
-
`transfers`, and `on-demand-authorizations`.
|
121
|
-
|
122
|
-
There are two ways to get an account token. One is by generating a token at
|
123
|
-
https://sandbox.dwolla.com/applications (Sandbox) or https://www.dwolla.com/applications (Production).
|
124
|
-
|
125
|
-
You can instantiate a generated token by doing the following:
|
126
|
-
|
127
|
-
```ruby
|
128
|
-
account_token = $dwolla.tokens.new access_token: "...", refresh_token: "..."
|
129
|
-
# => #<DwollaV2::Token client=#<DwollaV2::Client key="..." secret="..." environment=:sandbox> access_token="..." refresh_token="...">
|
130
|
-
```
|
131
|
-
|
132
|
-
The other way to get an account token is using the [`authorization_code`][authorization_code]
|
133
|
-
OAuth grant type. This flow works by redirecting a user to dwolla.com in order to get authorization
|
134
|
-
and sending them back to your website with an authorization code which can be exchanged for a token.
|
135
|
-
For example:
|
136
|
-
|
137
|
-
[authorization_code]: https://tools.ietf.org/html/rfc6749#section-4.1
|
138
|
-
|
139
|
-
```ruby
|
140
|
-
class YourAuthController < ApplicationController
|
141
|
-
# redirect the user to dwolla.com for authorization
|
142
|
-
def authorize
|
143
|
-
redirect_to auth.url
|
144
|
-
end
|
145
|
-
|
146
|
-
# https://yoursite.com/callback?code=...&state=...
|
147
|
-
def callback
|
148
|
-
# exchange the code for a token
|
149
|
-
token = auth.callback(params)
|
150
|
-
# => #<DwollaV2::Token client=#<DwollaV2::Client key="..." secret="..." environment=:sandbox> access_token="..." refresh_token="..." expires_in=3600 scope="ManageCustomers|Funding" account_id="...">
|
151
|
-
session[:account_id] = token.account_id
|
152
|
-
end
|
153
|
-
|
154
|
-
private
|
155
|
-
|
156
|
-
def auth
|
157
|
-
$dwolla.auths.new redirect_uri: "https://yoursite.com/callback",
|
158
|
-
scope: "ManageCustomers|Funding",
|
159
|
-
state: session[:state] ||= SecureRandom.hex(8), # optional
|
160
|
-
verified_account: true, # optional
|
161
|
-
dwolla_landing: "register" # optional
|
162
|
-
end
|
163
|
-
end
|
164
|
-
```
|
165
|
-
|
166
|
-
### Refreshing tokens
|
167
|
-
|
168
|
-
Tokens with `refresh_token`s can be refreshed using `$dwolla.auths.refresh`, which takes a
|
169
|
-
`DwollaV2::Token` as its first argument and returns a new token.
|
170
|
-
|
171
|
-
```ruby
|
172
|
-
refreshed_token = $dwolla.auths.refresh(expired_token)
|
173
|
-
# => #<DwollaV2::Token client=#<DwollaV2::Client key="..." secret="..." environment=:sandbox> access_token="..." refresh_token="..." expires_in=3600 scope="ManageCustomers|Funding" account_id="...">
|
174
|
-
```
|
108
|
+
_Application tokens do not include a `refresh_token`. When an application token expires, generate
|
109
|
+
a new one using `$dwolla.auths.client`._
|
175
110
|
|
176
|
-
### Initializing pre-existing
|
111
|
+
### Initializing a pre-existing access token:
|
177
112
|
|
178
113
|
`DwollaV2::Token`s can be initialized with the following attributes:
|
179
114
|
|
180
115
|
```ruby
|
181
116
|
$dwolla.tokens.new access_token: "...",
|
182
|
-
|
183
|
-
|
184
|
-
scope: "...",
|
185
|
-
account_id: "..."
|
186
|
-
#<DwollaV2::Token client=#<DwollaV2::Client key="..." secret="..." environment=:sandbox> access_token="..." refresh_token="..." expires_in=123 scope="..." account_id="...">
|
117
|
+
expires_in: 123
|
118
|
+
#<DwollaV2::Token client=#<DwollaV2::Client key="..." secret="..." environment=:sandbox> access_token="..." expires_in=123>
|
187
119
|
```
|
188
120
|
|
189
121
|
```ruby
|
@@ -280,34 +212,34 @@ end
|
|
280
212
|
|
281
213
|
### `DwollaV2::Error` subclasses:
|
282
214
|
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
215
|
+
_See https://docsv2.dwolla.com/#errors for more info._
|
216
|
+
|
217
|
+
* `DwollaV2::AccessDeniedError`
|
218
|
+
* `DwollaV2::InvalidCredentialsError`
|
219
|
+
* `DwollaV2::NotFoundError`
|
220
|
+
* `DwollaV2::BadRequestError`
|
221
|
+
* `DwollaV2::InvalidGrantError`
|
222
|
+
* `DwollaV2::RequestTimeoutError`
|
223
|
+
* `DwollaV2::ExpiredAccessTokenError`
|
224
|
+
* `DwollaV2::InvalidRequestError`
|
225
|
+
* `DwollaV2::ServerError`
|
226
|
+
* `DwollaV2::ForbiddenError`
|
227
|
+
* `DwollaV2::InvalidResourceStateError`
|
228
|
+
* `DwollaV2::TemporarilyUnavailableError`
|
229
|
+
* `DwollaV2::InvalidAccessTokenError`
|
230
|
+
* `DwollaV2::InvalidScopeError`
|
231
|
+
* `DwollaV2::UnauthorizedClientError`
|
232
|
+
* `DwollaV2::InvalidAccountStatusError`
|
233
|
+
* `DwollaV2::InvalidScopesError`
|
234
|
+
* `DwollaV2::UnsupportedGrantTypeError`
|
235
|
+
* `DwollaV2::InvalidApplicationStatusError`
|
236
|
+
* `DwollaV2::InvalidVersionError`
|
237
|
+
* `DwollaV2::UnsupportedResponseTypeError`
|
238
|
+
* `DwollaV2::InvalidClientError`
|
239
|
+
* `DwollaV2::MethodNotAllowedError`
|
240
|
+
* `DwollaV2::ValidationError`
|
241
|
+
* `DwollaV2::TooManyRequestsError`
|
242
|
+
* `DwollaV2::ConflictError`
|
311
243
|
|
312
244
|
## Sample code
|
313
245
|
|
@@ -334,26 +266,27 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
334
266
|
|
335
267
|
## Changelog
|
336
268
|
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
269
|
+
* **2.0.3** - Add `DuplicateResourceError` [#34](https://github.com/Dwolla/dwolla-v2-ruby/pull/34) (Thanks @javierjulio!)
|
270
|
+
* **2.0.2** - Fix bug in [#30](https://github.com/Dwolla/dwolla-v2-ruby/pull/30) (Thanks again @sobrinho!)
|
271
|
+
* **2.0.1** - Fix bugs in [#27](https://github.com/Dwolla/dwolla-v2-ruby/pull/27) + [#28](https://github.com/Dwolla/dwolla-v2-ruby/pull/28) (Thanks @sobrinho!)
|
272
|
+
* **2.0.0**
|
273
|
+
* Rename `DwollaV2::Response` `#status` => `#response_status`, `#headers` => `#response_headers` to prevent
|
341
274
|
[conflicts with response body properties][response-conflicts].
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
275
|
+
* Remove support for Ruby versions < 2 ([Bump public_suffix dependency version][public-suffix]).
|
276
|
+
* **1.2.3** - Implement `#empty?` on `DwollaV2::Token` to allow it to be passed to ActiveRecord constructor.
|
277
|
+
* **1.2.2** - Strip domain from URLs provided to `token.*` methods.
|
278
|
+
* **1.2.1** - Update sandbox URLs from uat => sandbox.
|
279
|
+
* **1.2.0** - Refer to Client :id as :key in docs/public APIs for consistency.
|
280
|
+
* **1.1.2** - Add support for `verified_account` and `dwolla_landing` auth flags.
|
281
|
+
* **1.1.1** - Add `TooManyRequestsError` and `ConflictError` classes.
|
282
|
+
* **1.1.0** - Support setting headers on a per-request basis.
|
283
|
+
* **1.0.1** - Set user agent header.
|
284
|
+
* **1.0.0** - Refactor `Error` class to be more like response, add ability to access keys using methods.
|
285
|
+
* **0.4.0** - Refactor and document how `DwollaV2::Response` works
|
286
|
+
* **0.3.1** - better `DwollaV2::Error` error messages
|
287
|
+
* **0.3.0** - ISO8601 values in response body are converted to `Time` objects
|
288
|
+
* **0.2.0** - Works with `attr_encrypted`
|
289
|
+
* **0.1.1** - Handle 500 error with HTML response body when requesting a token
|
357
290
|
|
358
291
|
[response-conflicts]: https://discuss.dwolla.com/t/document-change-or-more-clarifiation/3964
|
359
292
|
[public-suffix]: https://github.com/Dwolla/dwolla-v2-ruby/pull/18#discussion_r108028135
|
data/lib/dwolla_v2.rb
CHANGED
@@ -53,6 +53,7 @@ require "dwolla_v2/errors/invalid_version_error"
|
|
53
53
|
require "dwolla_v2/errors/request_timeout_error"
|
54
54
|
require "dwolla_v2/errors/too_many_requests_error"
|
55
55
|
require "dwolla_v2/errors/conflict_error"
|
56
|
+
require "dwolla_v2/errors/duplicate_resource_error"
|
56
57
|
|
57
58
|
module DwollaV2
|
58
59
|
end
|
data/lib/dwolla_v2/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dwolla_v2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Ausman
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -132,6 +132,7 @@ files:
|
|
132
132
|
- lib/dwolla_v2/errors/access_denied_error.rb
|
133
133
|
- lib/dwolla_v2/errors/bad_request_error.rb
|
134
134
|
- lib/dwolla_v2/errors/conflict_error.rb
|
135
|
+
- lib/dwolla_v2/errors/duplicate_resource_error.rb
|
135
136
|
- lib/dwolla_v2/errors/expired_access_token_error.rb
|
136
137
|
- lib/dwolla_v2/errors/forbidden_error.rb
|
137
138
|
- lib/dwolla_v2/errors/invalid_access_token_error.rb
|