databasedotcom-oauth2 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +4 -2
- data/lib/databasedotcom-oauth2.rb +16 -4
- data/lib/databasedotcom-oauth2/version.rb +1 -1
- metadata +1 -1
data/README.md
CHANGED
@@ -20,9 +20,11 @@ Specifically, databasedotcom-oauth2:
|
|
20
20
|
Demos
|
21
21
|
-------
|
22
22
|
|
23
|
-
|
23
|
+
### Using Sinatra
|
24
24
|
|
25
|
-
**<a href="https://db-oauth2-sinatra-
|
25
|
+
**<a href="https://db-oauth2-sinatra-basic.herokuapp.com" target="_blank">Simple example</a>** <a href="https://github.com/richardvanhook/databasedotcom-oauth2-sinatra-basic" target="_blank">(view source on github)</a>
|
26
|
+
|
27
|
+
**<a href="https://db-oauth2-sinatra-jqm.herokuapp.com" target="_blank">Advanced configuration with a JQuery Mobile front-end</a>** <a href="https://github.com/richardvanhook/databasedotcom-oauth2-sinatra-jqm" target="_blank">(view source on github)</a>
|
26
28
|
|
27
29
|
Usage
|
28
30
|
-------
|
@@ -49,6 +49,7 @@ module Databasedotcom
|
|
49
49
|
def initialize(app, options = nil)
|
50
50
|
@app = app
|
51
51
|
unless options.nil?
|
52
|
+
self.class.symbolize_keys!(options)
|
52
53
|
@endpoints = self.class.sanitize_endpoints(options[:endpoints])
|
53
54
|
@token_encryption_key = options[:token_encryption_key]
|
54
55
|
@path_prefix = options[:path_prefix]
|
@@ -119,6 +120,7 @@ module Databasedotcom
|
|
119
120
|
puts "==================\nauthorize phase\n==================\n" if @debugging
|
120
121
|
#determine endpoint via param; but if blank, use default
|
121
122
|
endpoint = request.params["endpoint"] #get endpoint from http param
|
123
|
+
endpoint = endpoint.to_sym unless endpoint.nil?
|
122
124
|
keys = @endpoints[endpoint] #if endpoint not found, default will be used
|
123
125
|
endpoint = @endpoints.invert[keys] #re-lookup endpoint in case original param was bogus
|
124
126
|
mydomain = self.class.sanitize_mydomain(request.params["mydomain"])
|
@@ -127,7 +129,7 @@ module Databasedotcom
|
|
127
129
|
request.params["state"] ||= "/"
|
128
130
|
state = Addressable::URI.parse(request.params["state"])
|
129
131
|
state.query_values={} unless state.query_values
|
130
|
-
state.query_values= state.query_values.merge({:endpoint => endpoint})
|
132
|
+
state.query_values= state.query_values.merge({:endpoint => endpoint.to_s})
|
131
133
|
|
132
134
|
puts "(1) endpoint: #{endpoint}\n(2) mydomain: #{mydomain}\n(3) state: #{state.to_str}" if @debugging
|
133
135
|
|
@@ -156,7 +158,7 @@ module Databasedotcom
|
|
156
158
|
auth_params.merge!(overrides)
|
157
159
|
|
158
160
|
#do redirect
|
159
|
-
redirect_url = client(mydomain || endpoint, keys[:key], keys[:secret]).auth_code.authorize_url(auth_params)
|
161
|
+
redirect_url = client(mydomain || endpoint.to_s, keys[:key], keys[:secret]).auth_code.authorize_url(auth_params)
|
160
162
|
puts "(4) redirecting to #{redirect_url}..." if @debugging
|
161
163
|
redirect redirect_url
|
162
164
|
end
|
@@ -181,6 +183,7 @@ module Databasedotcom
|
|
181
183
|
state.query_values= {} if state.query_values.nil?
|
182
184
|
state_params = state.query_values.dup
|
183
185
|
endpoint = state_params.delete("endpoint")
|
186
|
+
endpoint = endpoint.to_sym unless endpoint.nil?
|
184
187
|
keys = @endpoints[endpoint]
|
185
188
|
puts "(1) endpoint #{endpoint}" if @debugging
|
186
189
|
puts "(2) keys #{keys}" if @debugging
|
@@ -190,7 +193,7 @@ module Databasedotcom
|
|
190
193
|
puts "(3) endpoint: #{endpoint}\nstate: #{state.to_str}\nretrieving token" if @debugging
|
191
194
|
|
192
195
|
#do callout to retrieve token
|
193
|
-
access_token = client(endpoint, keys[:key], keys[:secret]).auth_code.get_token(code,
|
196
|
+
access_token = client(endpoint.to_s, keys[:key], keys[:secret]).auth_code.get_token(code,
|
194
197
|
:redirect_uri => "#{full_host}#{@path_prefix}/callback")
|
195
198
|
puts "(4) access_token immediatly post get token call #{access_token.inspect}" if @debugging
|
196
199
|
|
@@ -315,7 +318,16 @@ module Databasedotcom
|
|
315
318
|
|
316
319
|
class << self
|
317
320
|
|
321
|
+
def symbolize_keys!(hash={})
|
322
|
+
hash.keys.each do |key|
|
323
|
+
value = hash[(key.to_sym rescue key) || key] = hash.delete(key)
|
324
|
+
symbolize_keys!(value) if value.is_a?(Hash)
|
325
|
+
end
|
326
|
+
hash
|
327
|
+
end
|
328
|
+
|
318
329
|
def parse_domain(url = nil)
|
330
|
+
url = url.to_s if url.is_a?(Symbol)
|
319
331
|
unless url.nil?
|
320
332
|
url = "https://" + url if (url =~ /http[s]?:\/\//).nil?
|
321
333
|
begin
|
@@ -394,4 +406,4 @@ module Databasedotcom
|
|
394
406
|
end
|
395
407
|
|
396
408
|
end
|
397
|
-
end
|
409
|
+
end
|