dwolla_v2 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 811f43c8507739f9ba53fbd843f3d38c7d9554e7
4
- data.tar.gz: 6f90eb874890c98cb2045de7ec2f107ca329ac07
3
+ metadata.gz: 347bf32bfbb4db49d6341c3db975cf696a97f492
4
+ data.tar.gz: 38d265059cb4ddac927d141096bd145a76cf2c60
5
5
  SHA512:
6
- metadata.gz: b3d569ab13c930ca10eb2ce1d1ed077d08416cdaa020049929e1739d1ebb21a48f0950fad72091158656e05bb2b92ab55411b979d4a389f84d39aa15bdb7db03
7
- data.tar.gz: 0f1af22dfb1dca2db0855c16b50907f8ae0839431d5cfdaa8b03e0e851d5fb26a18e6aed6be4856cfdf84a71b95da088be7d5c8811e38775f039f114eb9ee832
6
+ metadata.gz: 053be0c20b5da0da5c421dcb8979ca1aefcc4a6620c8383e2251b0e458042b222c5c76682051d08706fe2a9f9d8e043d8702bcd8781fc6a89397b9982bc532db
7
+ data.tar.gz: 43695d6c3e63d61003cac1ba3b72735ebc9f7e53b7926b4cec186f01d4e5b0d34e466091a0405cb340a846511f788493d9bf7cbd779d8b9c18cfe6900e89c9be
data/README.md CHANGED
@@ -11,7 +11,7 @@ Dwolla V2 Ruby client. For the V1 Ruby client see [Dwolla/dwolla-ruby](https://g
11
11
  Add this line to your application's Gemfile:
12
12
 
13
13
  ```ruby
14
- gem 'dwolla_v2', '~> 0.2'
14
+ gem 'dwolla_v2', '~> 0.4'
15
15
  ```
16
16
 
17
17
  And then execute:
@@ -64,7 +64,8 @@ class YourAuthController < ApplicationController
64
64
 
65
65
  def auth
66
66
  $dwolla.auths.new redirect_uri: "https://yoursite.com/callback",
67
- scope: "ManageCustomers|Funding"
67
+ scope: "ManageCustomers|Funding",
68
+ state: session[:state] ||= SecureRandom.hex(8)
68
69
  end
69
70
  end
70
71
  ```
@@ -97,21 +98,47 @@ In parallel:
97
98
 
98
99
  ```ruby
99
100
  foo, bar = nil
100
-
101
101
  token.in_parallel do
102
- foo = token.get "/foo" # => nil
103
- bar = token.get "/bar" # => nil
102
+ foo = token.get "/foo"
103
+ bar = token.get "/bar"
104
104
  end
105
+ puts foo # only ready after `in_parallel` block has executed
106
+ puts bar # only ready after `in_parallel` block has executed
107
+ ```
108
+
109
+ #### Responses
110
+
111
+ Requests return a `DwollaV2::Response`.
105
112
 
106
- foo # => { ... }
107
- bar # => { ... }
113
+ **Response status**:
114
+
115
+ ```ruby
116
+ res = token.post "/customers", customer_params
117
+ res.status # => 201
108
118
  ```
109
119
 
110
- Accessing response headers:
120
+ **Response headers**:
111
121
 
112
122
  ```ruby
113
123
  customer = token.post "/customers", customer_params
114
- customer = token.get customer.headers[:location]
124
+ customer.headers[:location] # => "https://api.dwolla.com/customers/aa76ca27-1920-4a0a-9bbe-a22085c0010e"
125
+ ```
126
+
127
+ **Response body**:
128
+
129
+ [Enumerable methods](http://ruby-doc.org/core-2.3.0/Enumerable.html), `#==`, and `#[]` are
130
+ forwarded to a response's body. For example:
131
+
132
+ ```ruby
133
+ customer = token.get "/customers/aa76ca27-1920-4a0a-9bbe-a22085c0010e"
134
+
135
+ customer.collect {|k,v| k } # => [:_links, :id, ...]
136
+ customer.body.collect {|k,v| k } # => [:_links, :id, ...]
137
+
138
+ customer == customer.body # => true
139
+
140
+ customer[:name] # => John Doe
141
+ customer.body[:name] # => John Doe
115
142
  ```
116
143
 
117
144
  #### Errors
@@ -165,6 +192,7 @@ The gem is available as open source under the terms of the [MIT License](https:/
165
192
 
166
193
  ## Changelog
167
194
 
195
+ - **0.4.0** - Refactor and document how `DwollaV2::Response` works
168
196
  - **0.3.1** - better `DwollaV2::Error` error messages
169
197
  - **0.3.0** - ISO8601 values in response body are converted to `Time` objects
170
198
  - **0.2.0** - Works with `attr_encrypted`
@@ -2,19 +2,23 @@ module DwollaV2
2
2
  class Response
3
3
  extend Forwardable
4
4
 
5
- DO_NOT_FORWARD = [:method_missing, :object_id, :__send__]
5
+ # http://ruby-doc.org/core-2.3.0/Enumerable.html
6
+ ENUMERABLE = \
7
+ [:all?, :any?, :chunk, :chunk_while, :collect, :collect_concat, :count, :cycle,
8
+ :detect, :drop, :drop_while, :each_cons, :each_entry, :each_slice, :each_with_index,
9
+ :each_with_object, :entries, :find, :find_all, :find_index, :first, :flat_map, :grep,
10
+ :grep_v, :group_by, :include?, :inject, :lazy, :map, :max, :max_by, :member?, :min,
11
+ :min_by, :minmax, :minmax_by, :none?, :one?, :partition, :reduce, :reject,
12
+ :reverse_each, :select, :slice_after, :slice_before, :slice_when, :sort, :sort_by,
13
+ :take, :take_while, :to_a, :to_h, :zip]
6
14
 
7
- delegate instance_methods.reject {|m| DO_NOT_FORWARD.include?(m) } => :response_body
8
- delegate [:status, :headers] => :@response
15
+ delegate [:status, :headers, :body] => :@response
16
+ delegate [*ENUMERABLE, :==, :[]] => :response_body
9
17
 
10
18
  def initialize response
11
19
  @response = response
12
20
  end
13
21
 
14
- def method_missing method, *args, &block
15
- response_body.send method, *args, &block
16
- end
17
-
18
22
  private
19
23
 
20
24
  def response_body
@@ -1,3 +1,3 @@
1
1
  module DwollaV2
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
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: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen Ausman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-07 00:00:00.000000000 Z
11
+ date: 2016-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler