dwolla-ruby 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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