Class: Rack::OpenID
- Inherits:
-
Object
show all
- Defined in:
- lib/rack-openid.rb
Defined Under Namespace
Classes: MissingResponse, TimeoutResponse
Constant Summary
collapse
- HTTP_METHODS =
%w(GET HEAD PUT POST DELETE OPTIONS)
- RESPONSE =
"rack.openid.response".freeze
"WWW-Authenticate".freeze
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(app, store = nil) ⇒ OpenID
Returns a new instance of OpenID.
50
51
52
53
54
|
# File 'lib/rack-openid.rb', line 50
def initialize(app, store = nil)
@app = app
@store = store || ::OpenID::Store::Filesystem.new("tmp/openid")
freeze
end
|
Class Method Details
8
9
10
11
12
13
14
15
16
17
18
|
# File 'lib/rack-openid.rb', line 8
def self.(params = {})
value = 'OpenID '
value += params.map { |k, v|
if v.is_a?(Array)
"#{k}=\"#{v.join(',')}\""
else
"#{k}=\"#{v}\""
end
}.join(', ')
value
end
|
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/rack-openid.rb', line 20
def self.(str)
params = {}
if str =~ /^OpenID/
str = str.gsub(/^OpenID /, '')
str.split(', ').each { |e|
k, v = e.split('=')
v.gsub!(/^\"/, '').gsub!(/\"$/, "")
v = v.split(',')
params[k] = v.length > 1 ? v : v.first
}
end
params
end
|
Instance Method Details
#call(env) ⇒ Object
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# File 'lib/rack-openid.rb', line 56
def call(env)
req = Rack::Request.new(env)
if env["REQUEST_METHOD"] == "GET" && req.GET["openid.mode"]
complete_authentication(env)
end
status, , body = @app.call(env)
if status.to_i == 401 && (qs = [AUTHENTICATE_HEADER])
begin_authentication(env, qs)
else
[status, , body]
end
end
|