gocardless 1.0.1 → 1.1.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.
- data/CHANGELOG.md +5 -0
- data/lib/gocardless/client.rb +14 -11
- data/lib/gocardless/version.rb +1 -1
- data/spec/client_spec.rb +15 -5
- metadata +4 -4
data/CHANGELOG.md
CHANGED
data/lib/gocardless/client.rb
CHANGED
@@ -41,6 +41,7 @@ module GoCardless
|
|
41
41
|
:token_url => '/oauth/access_token')
|
42
42
|
|
43
43
|
self.access_token = args[:token] if args[:token]
|
44
|
+
@merchant_id = args[:merchant_id] if args[:merchant_id]
|
44
45
|
end
|
45
46
|
|
46
47
|
# Generate the OAuth authorize url
|
@@ -83,12 +84,15 @@ module GoCardless
|
|
83
84
|
# (as returned by {#access_token})
|
84
85
|
def access_token=(token)
|
85
86
|
token, scope = token.sub(/^bearer\s+/i, '').split(' ', 2)
|
86
|
-
|
87
|
-
|
88
|
-
'<token> <scope>')
|
89
|
-
end
|
87
|
+
scope ||= ''
|
88
|
+
|
90
89
|
@access_token = OAuth2::AccessToken.new(@oauth_client, token)
|
91
90
|
@access_token.params['scope'] = scope
|
91
|
+
|
92
|
+
unless @merchant_id
|
93
|
+
perm = scope.split.select {|p| p.start_with?('manage_merchant:') }.first
|
94
|
+
@merchant_id = perm.split(':')[1] if perm
|
95
|
+
end
|
92
96
|
end
|
93
97
|
|
94
98
|
# Issue an GET request to the API server
|
@@ -260,6 +264,12 @@ module GoCardless
|
|
260
264
|
|
261
265
|
private
|
262
266
|
|
267
|
+
# Return the merchant id, throwing a proper error if it's missing.
|
268
|
+
def merchant_id
|
269
|
+
raise ClientError, 'No merchant id set' unless @merchant_id
|
270
|
+
@merchant_id
|
271
|
+
end
|
272
|
+
|
263
273
|
# Send a request to the GoCardless API servers
|
264
274
|
#
|
265
275
|
# @param [Symbol] method the HTTP method to use (e.g. +:get+, +:post+)
|
@@ -344,13 +354,6 @@ module GoCardless
|
|
344
354
|
url.query = Utils.normalize_params(params)
|
345
355
|
url.to_s
|
346
356
|
end
|
347
|
-
|
348
|
-
def merchant_id
|
349
|
-
raise ClientError, 'Access token missing' unless @access_token
|
350
|
-
scope = @access_token.params['scope'].split
|
351
|
-
perm = scope.select {|p| p.start_with?('manage_merchant:') }.first
|
352
|
-
perm.split(':')[1]
|
353
|
-
end
|
354
357
|
end
|
355
358
|
end
|
356
359
|
|
data/lib/gocardless/version.rb
CHANGED
data/spec/client_spec.rb
CHANGED
@@ -30,11 +30,21 @@ describe GoCardless::Client do
|
|
30
30
|
GoCardless::Client.new({:app_secret => @app_secret})
|
31
31
|
end.should raise_exception(GoCardless::ClientError)
|
32
32
|
end
|
33
|
+
|
33
34
|
it "without an app_secret should raise an error" do
|
34
35
|
lambda do
|
35
36
|
GoCardless::Client.new({:app_id => @app_id})
|
36
37
|
end.should raise_exception(GoCardless::ClientError)
|
37
38
|
end
|
39
|
+
|
40
|
+
it "sets a merchant id if it's given" do
|
41
|
+
client = GoCardless::Client.new({
|
42
|
+
:app_id => @app_id,
|
43
|
+
:app_secret => @app_secret,
|
44
|
+
:merchant_id => 'xyz'
|
45
|
+
})
|
46
|
+
client.send('merchant_id').should == 'xyz'
|
47
|
+
end
|
38
48
|
end
|
39
49
|
|
40
50
|
before do
|
@@ -124,17 +134,17 @@ describe GoCardless::Client do
|
|
124
134
|
token.params['scope'].should == 'a:1 b:2'
|
125
135
|
end
|
126
136
|
|
137
|
+
it "pulls out the merchant_id when present" do
|
138
|
+
@client.access_token = 'TOKEN123 manage_merchant:xyz'
|
139
|
+
@client.send('merchant_id').should == 'xyz'
|
140
|
+
end
|
141
|
+
|
127
142
|
it "ignores 'bearer' if it is present at the start of the string" do
|
128
143
|
@client.access_token = 'Bearer TOKEN manage_merchant:123'
|
129
144
|
token = @client.instance_variable_get(:@access_token)
|
130
145
|
token.token.should == 'TOKEN'
|
131
146
|
token.params['scope'].should == 'manage_merchant:123'
|
132
147
|
end
|
133
|
-
|
134
|
-
it "handles invalid values correctly" do
|
135
|
-
token = 'TOKEN123' # missing scope
|
136
|
-
expect { @client.access_token = token }.to raise_exception ArgumentError
|
137
|
-
end
|
138
148
|
end
|
139
149
|
|
140
150
|
describe "#api_get" do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gocardless
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3461773182973075480
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
- 0
|
9
8
|
- 1
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 1.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Harry Marr
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2012-05-
|
19
|
+
date: 2012-05-25 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: oauth2
|