dwolla-ruby 1.1.0 → 2.0.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.
Files changed (53) hide show
  1. data/dwolla-ruby.gemspec +16 -21
  2. data/examples/accountInfo.rb +7 -7
  3. data/examples/balance.rb +5 -5
  4. data/examples/contacts.rb +4 -4
  5. data/examples/fundingSources.rb +4 -4
  6. data/examples/oauth.rb +6 -7
  7. data/examples/transactions.rb +32 -0
  8. data/lib/dwolla.rb +258 -37
  9. data/lib/dwolla/balance.rb +15 -0
  10. data/lib/dwolla/contacts.rb +22 -0
  11. data/lib/dwolla/errors/api_connection_error.rb +4 -0
  12. data/lib/dwolla/errors/api_error.rb +4 -0
  13. data/lib/dwolla/errors/authentication_error.rb +4 -0
  14. data/lib/dwolla/errors/dwolla_error.rb +20 -0
  15. data/lib/dwolla/errors/invalid_request_error.rb +10 -0
  16. data/lib/dwolla/errors/missing_parameter_error.rb +4 -0
  17. data/lib/dwolla/funding_sources.rb +65 -0
  18. data/lib/dwolla/json.rb +21 -0
  19. data/lib/dwolla/oauth.rb +43 -0
  20. data/lib/dwolla/offsite_gateway.rb +76 -0
  21. data/lib/dwolla/requests.rb +56 -0
  22. data/lib/dwolla/transactions.rb +60 -0
  23. data/lib/dwolla/users.rb +36 -0
  24. data/lib/dwolla/version.rb +1 -1
  25. metadata +37 -108
  26. data/Gemfile +0 -4
  27. data/examples/send.rb +0 -23
  28. data/lib/dwolla/client.rb +0 -56
  29. data/lib/dwolla/connection.rb +0 -47
  30. data/lib/dwolla/funding_source.rb +0 -18
  31. data/lib/dwolla/response/follow_redirects.rb +0 -44
  32. data/lib/dwolla/response/guard_server_error.rb +0 -32
  33. data/lib/dwolla/response/parse_json.rb +0 -27
  34. data/lib/dwolla/transaction.rb +0 -56
  35. data/lib/dwolla/user.rb +0 -121
  36. data/spec/dwolla/client_spec.rb +0 -51
  37. data/spec/dwolla/funding_source_spec.rb +0 -59
  38. data/spec/dwolla/response/follow_redirects_spec.rb +0 -38
  39. data/spec/dwolla/transaction_spec.rb +0 -212
  40. data/spec/dwolla/user_spec.rb +0 -292
  41. data/spec/dwolla_spec.rb +0 -19
  42. data/spec/fixtures/account_information.json +0 -13
  43. data/spec/fixtures/add_funding_source.json +0 -11
  44. data/spec/fixtures/balance.json +0 -5
  45. data/spec/fixtures/basic_information.json +0 -6
  46. data/spec/fixtures/contacts.json +0 -18
  47. data/spec/fixtures/error.json +0 -5
  48. data/spec/fixtures/register.json +0 -9
  49. data/spec/fixtures/request_transaction.json +0 -3
  50. data/spec/fixtures/send_transaction.json +0 -3
  51. data/spec/fixtures/sources.json +0 -13
  52. data/spec/spec_helper.rb +0 -10
  53. data/spec/support/helpers.rb +0 -29
@@ -1,3 +1,3 @@
1
1
  module Dwolla
2
- VERSION = "1.1.0"
2
+ VERSION = "2.0.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dwolla-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,32 +9,16 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-04 00:00:00.000000000 Z
12
+ date: 2013-04-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: faraday
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - '='
20
- - !ruby/object:Gem::Version
21
- version: 0.7.6
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - '='
28
- - !ruby/object:Gem::Version
29
- version: 0.7.6
30
- - !ruby/object:Gem::Dependency
31
- name: multi_json
15
+ name: rest-client
32
16
  requirement: !ruby/object:Gem::Requirement
33
17
  none: false
34
18
  requirements:
35
19
  - - ~>
36
20
  - !ruby/object:Gem::Version
37
- version: '1.3'
21
+ version: '1.4'
38
22
  type: :runtime
39
23
  prerelease: false
40
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,73 +26,47 @@ dependencies:
42
26
  requirements:
43
27
  - - ~>
44
28
  - !ruby/object:Gem::Version
45
- version: '1.3'
29
+ version: '1.4'
46
30
  - !ruby/object:Gem::Dependency
47
- name: bundler
31
+ name: multi_json
48
32
  requirement: !ruby/object:Gem::Requirement
49
33
  none: false
50
34
  requirements:
51
35
  - - ! '>='
52
36
  - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
37
+ version: 1.0.4
38
+ - - <
60
39
  - !ruby/object:Gem::Version
61
- version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: rake
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :development
40
+ version: '2'
41
+ type: :runtime
71
42
  prerelease: false
72
43
  version_requirements: !ruby/object:Gem::Requirement
73
44
  none: false
74
45
  requirements:
75
46
  - - ! '>='
76
47
  - !ruby/object:Gem::Version
77
- version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: rspec
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
48
+ version: 1.0.4
49
+ - - <
84
50
  - !ruby/object:Gem::Version
85
- version: '0'
86
- type: :development
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
51
+ version: '2'
94
52
  - !ruby/object:Gem::Dependency
95
- name: webmock
53
+ name: addressable
96
54
  requirement: !ruby/object:Gem::Requirement
97
55
  none: false
98
56
  requirements:
99
57
  - - ! '>='
100
58
  - !ruby/object:Gem::Version
101
- version: '0'
102
- type: :development
59
+ version: '2'
60
+ type: :runtime
103
61
  prerelease: false
104
62
  version_requirements: !ruby/object:Gem::Requirement
105
63
  none: false
106
64
  requirements:
107
65
  - - ! '>='
108
66
  - !ruby/object:Gem::Version
109
- version: '0'
67
+ version: '2'
110
68
  - !ruby/object:Gem::Dependency
111
- name: simplecov
69
+ name: rake
112
70
  requirement: !ruby/object:Gem::Requirement
113
71
  none: false
114
72
  requirements:
@@ -123,7 +81,8 @@ dependencies:
123
81
  - - ! '>='
124
82
  - !ruby/object:Gem::Version
125
83
  version: '0'
126
- description: Official Ruby Wrapper for Dwolla's API
84
+ description: Official Ruby Wrapper for Dwolla's API. Completely re-written based on
85
+ Stripe's Ruby Bindings.
127
86
  email:
128
87
  - michael@dwolla.com
129
88
  executables: []
@@ -131,7 +90,6 @@ extensions: []
131
90
  extra_rdoc_files: []
132
91
  files:
133
92
  - .gitignore
134
- - Gemfile
135
93
  - README.md
136
94
  - Rakefile
137
95
  - dwolla-ruby.gemspec
@@ -142,36 +100,25 @@ files:
142
100
  - examples/fundingSources.rb
143
101
  - examples/oauth.rb
144
102
  - examples/offsiteGateway.rb
145
- - examples/send.rb
103
+ - examples/transactions.rb
146
104
  - lib/dwolla.rb
147
- - lib/dwolla/client.rb
148
- - lib/dwolla/connection.rb
105
+ - lib/dwolla/balance.rb
106
+ - lib/dwolla/contacts.rb
107
+ - lib/dwolla/errors/api_connection_error.rb
108
+ - lib/dwolla/errors/api_error.rb
109
+ - lib/dwolla/errors/authentication_error.rb
110
+ - lib/dwolla/errors/dwolla_error.rb
111
+ - lib/dwolla/errors/invalid_request_error.rb
112
+ - lib/dwolla/errors/missing_parameter_error.rb
149
113
  - lib/dwolla/exceptions.rb
150
- - lib/dwolla/funding_source.rb
151
- - lib/dwolla/response/follow_redirects.rb
152
- - lib/dwolla/response/guard_server_error.rb
153
- - lib/dwolla/response/parse_json.rb
154
- - lib/dwolla/transaction.rb
155
- - lib/dwolla/user.rb
114
+ - lib/dwolla/funding_sources.rb
115
+ - lib/dwolla/json.rb
116
+ - lib/dwolla/oauth.rb
117
+ - lib/dwolla/offsite_gateway.rb
118
+ - lib/dwolla/requests.rb
119
+ - lib/dwolla/transactions.rb
120
+ - lib/dwolla/users.rb
156
121
  - lib/dwolla/version.rb
157
- - spec/dwolla/client_spec.rb
158
- - spec/dwolla/funding_source_spec.rb
159
- - spec/dwolla/response/follow_redirects_spec.rb
160
- - spec/dwolla/transaction_spec.rb
161
- - spec/dwolla/user_spec.rb
162
- - spec/dwolla_spec.rb
163
- - spec/fixtures/account_information.json
164
- - spec/fixtures/add_funding_source.json
165
- - spec/fixtures/balance.json
166
- - spec/fixtures/basic_information.json
167
- - spec/fixtures/contacts.json
168
- - spec/fixtures/error.json
169
- - spec/fixtures/register.json
170
- - spec/fixtures/request_transaction.json
171
- - spec/fixtures/send_transaction.json
172
- - spec/fixtures/sources.json
173
- - spec/spec_helper.rb
174
- - spec/support/helpers.rb
175
122
  homepage: https://github.com/dwolla/dwolla-ruby
176
123
  licenses: []
177
124
  post_install_message:
@@ -196,22 +143,4 @@ rubygems_version: 1.8.24
196
143
  signing_key:
197
144
  specification_version: 3
198
145
  summary: Official Ruby Wrapper for Dwolla's API
199
- test_files:
200
- - spec/dwolla/client_spec.rb
201
- - spec/dwolla/funding_source_spec.rb
202
- - spec/dwolla/response/follow_redirects_spec.rb
203
- - spec/dwolla/transaction_spec.rb
204
- - spec/dwolla/user_spec.rb
205
- - spec/dwolla_spec.rb
206
- - spec/fixtures/account_information.json
207
- - spec/fixtures/add_funding_source.json
208
- - spec/fixtures/balance.json
209
- - spec/fixtures/basic_information.json
210
- - spec/fixtures/contacts.json
211
- - spec/fixtures/error.json
212
- - spec/fixtures/register.json
213
- - spec/fixtures/request_transaction.json
214
- - spec/fixtures/send_transaction.json
215
- - spec/fixtures/sources.json
216
- - spec/spec_helper.rb
217
- - spec/support/helpers.rb
146
+ test_files: []
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- # Specify your gem's dependencies in dwolla.gemspec
4
- gemspec
data/examples/send.rb DELETED
@@ -1,23 +0,0 @@
1
- # Include the Dwolla gem
2
- require 'rubygems'
3
- require 'pp'
4
- require '../lib/dwolla'
5
-
6
- # Include any required keys
7
- require '_keys.rb'
8
-
9
- # Instantiate a new Dwolla User client
10
- # And, Sseed a previously generated access token
11
- DwollaUser = Dwolla::User.me($token)
12
-
13
-
14
- # EXAMPLE 1:
15
- # Send money ($1.00) to a Dwolla ID
16
- transactionId = DwollaUser.send_money_to('812-626-8794', 1.00, $pin)
17
- pp transactionId
18
-
19
-
20
- # EXAMPLE 2:
21
- # Send money ($1.00) to an email address, with a note
22
- transactionId = DwollaUser.send_money_to('michael@dwolla.com', 1.00, $pin, 'Email', 'Everyone loves getting money')
23
- pp transactionId
data/lib/dwolla/client.rb DELETED
@@ -1,56 +0,0 @@
1
- module Dwolla
2
- class Client
3
- include Dwolla::Connection
4
-
5
- def initialize(client, secret)
6
- @client, @secret = client, secret
7
- end
8
-
9
- def user(id)
10
- user_attributes_hash = get("users/#{id}")
11
- User.new(user_attributes_hash)
12
- end
13
-
14
- def register_user(user_attributes_hash)
15
- params = auth_params.merge(user_attributes_hash)
16
-
17
- returned_user_hash = post("register/", params)
18
- User.new(returned_user_hash)
19
- end
20
-
21
- def auth_url(redirect_uri=nil, scope='send|transactions|balance|request|contacts|accountinfofull|funding')
22
- params = {
23
- 'scope' => scope,
24
- 'response_type' => 'code',
25
- 'client_id' => @client
26
- }
27
- unless redirect_uri.nil?
28
- params['redirect_uri'] = redirect_uri
29
- end
30
- querystring = params.map{|k,v| "#{CGI.escape(k)}=#{CGI.escape(v)}"}.join("&")
31
-
32
- return 'https://www.dwolla.com/oauth/v2/authenticate?' + querystring
33
- end
34
-
35
- def request_token(code, redirect_uri=nil)
36
- params = {
37
- 'client_id' => @client,
38
- 'client_secret' => @secret,
39
- 'grant_type' => 'authorization_code',
40
- 'code' => code
41
- }
42
- unless redirect_uri.nil?
43
- params['redirect_uri'] = redirect_uri
44
- end
45
-
46
- resp = get('https://www.dwolla.com/oauth/v2/token', params)
47
-
48
- return resp['access_token']
49
- end
50
-
51
- private
52
- def auth_params
53
- { :client_id => @client, :client_secret => @secret }
54
- end
55
- end
56
- end
@@ -1,47 +0,0 @@
1
- module Dwolla
2
- module Connection
3
- private
4
- def connection
5
- default_options = {
6
- :headers => {
7
- :accept => 'application/json',
8
- :content_type => 'application/json',
9
- :user_agent => Dwolla.user_agent,
10
- }
11
- }
12
-
13
- @connection ||= Faraday.new(Dwolla.endpoint, default_options) do |builder|
14
- builder.use Dwolla::Response::FollowRedirects
15
- builder.use Dwolla::Response::ParseJson
16
- builder.use Dwolla::Response::GuardServerError
17
-
18
- builder.use Faraday::Request::UrlEncoded
19
-
20
- builder.response :logger if Dwolla.debugging?
21
- builder.adapter Faraday.default_adapter
22
- end
23
- end
24
-
25
- def get(path, params={})
26
- request(:get, path, params)
27
- end
28
-
29
- def post(path, params={})
30
- request(:post, path, params)
31
- end
32
-
33
- def request(method, path, params)
34
- response = connection.send(method) do |request|
35
- case method.to_sym
36
- when :delete, :get
37
- request.url(path, params.merge(auth_params))
38
- when :post
39
- request.path = path
40
- params.merge!(auth_params) if auth_params
41
- request.body = MultiJson.dump(params) unless params.empty?
42
- end
43
- end
44
- response.body
45
- end
46
- end
47
- end
@@ -1,18 +0,0 @@
1
- module Dwolla
2
- class FundingSource
3
- attr_accessor :id, :name, :type, :verified
4
- def verified?
5
- !!verified
6
- end
7
-
8
- def self.from_json(options)
9
- source = FundingSource.new
10
- source.id = options["Id"]
11
- source.name = options["Name"]
12
- source.type = options["Type"]
13
- source.verified = options["Verified"]
14
- source
15
- end
16
- end
17
- end
18
-
@@ -1,44 +0,0 @@
1
- module Dwolla
2
- module Response
3
- class RedirectLimitReached < Faraday::Error::ClientError
4
- attr_reader :response
5
-
6
- def initialize(response)
7
- super "too many redirects; last one to: #{response['location']}"
8
- @response = response
9
- end
10
- end
11
-
12
- class FollowRedirects < Faraday::Middleware
13
- REDIRECTS = [301, 302, 303, 307]
14
- # default value for max redirects followed
15
- FOLLOW_LIMIT = 3
16
-
17
- def initialize(app, options = {})
18
- super(app)
19
- @options = options
20
- @follow_limit = options[:limit] || FOLLOW_LIMIT
21
- end
22
-
23
- def call(env)
24
- process_response(@app.call(env), @follow_limit)
25
- end
26
-
27
- def process_response(response, follows)
28
- response.on_complete do |env|
29
- if redirect? response
30
- raise RedirectLimitReached, response if follows.zero?
31
- env[:url] += response['location']
32
- env[:method] = :get
33
- response = process_response(@app.call(env), follows - 1)
34
- end
35
- end
36
- response
37
- end
38
-
39
- def redirect?(response)
40
- REDIRECTS.include? response.status
41
- end
42
- end
43
- end
44
- end
@@ -1,32 +0,0 @@
1
- module Dwolla
2
- module Response
3
- class InternalServerError < Faraday::Error::ClientError
4
- attr_reader :response
5
-
6
- def initialize(response)
7
- super "Internal Server Error"
8
- @response = response
9
- end
10
- end
11
- class AccessDeniedError < Faraday::Error::ClientError
12
- attr_reader :response
13
-
14
- def initialize(response)
15
- super "Access was denied."
16
- @response = response
17
- end
18
- end
19
-
20
- class GuardServerError < Faraday::Response::Middleware
21
- def on_complete(env)
22
- if env[:status] == 500
23
- if env[:body].match /Access is denied/
24
- raise AccessDeniedError, env[:body]
25
- else
26
- raise InternalServerError, env[:body]
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end