dwolla_v2 0.3.1 → 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 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