Class: OpenID::Server::Decoder
- Inherits:
-
Object
- Object
- OpenID::Server::Decoder
- Defined in:
- lib/openid/server.rb
Overview
I decode an incoming web request in to a OpenIDRequest.
Constant Summary collapse
- @@handlers =
{ "checkid_setup" => CheckIDRequest.method(:from_message), "checkid_immediate" => CheckIDRequest.method(:from_message), "check_authentication" => CheckAuthRequest.method(:from_message), "associate" => AssociateRequest.method(:from_message), }
Instance Attribute Summary collapse
-
#server ⇒ Object
Returns the value of attribute server.
Instance Method Summary collapse
-
#decode(query) ⇒ Object
I transform query parameters into an OpenIDRequest.
-
#default_decoder(message, _server) ⇒ Object
Called to decode queries when no handler for that mode is found.
-
#initialize(server) ⇒ Decoder
constructor
Construct a Decoder.
Constructor Details
#initialize(server) ⇒ Decoder
Construct a Decoder. The server is necessary because some replies reference their server.
1261 1262 1263 |
# File 'lib/openid/server.rb', line 1261 def initialize(server) @server = server end |
Instance Attribute Details
#server ⇒ Object
Returns the value of attribute server.
1257 1258 1259 |
# File 'lib/openid/server.rb', line 1257 def server @server end |
Instance Method Details
#decode(query) ⇒ Object
I transform query parameters into an OpenIDRequest.
If the query does not seem to be an OpenID request at all, I return nil.
Raises ProtocolError when the query does not seem to be a valid OpenID request.
1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 |
# File 'lib/openid/server.rb', line 1272 def decode(query) return if query.nil? or query.empty? begin = Message.from_post_args(query) rescue InvalidOpenIDNamespace => e query = query.dup query["openid.ns"] = OPENID2_NS = Message.from_post_args(query) raise ProtocolError.new(, e.to_s) end mode = .get_arg(OPENID_NS, "mode") unless mode msg = format("No mode value in message %s", ) raise ProtocolError.new(, msg) end handler = @@handlers.fetch(mode, method(:default_decoder)) handler.call(, @server.op_endpoint) end |
#default_decoder(message, _server) ⇒ Object
Called to decode queries when no handler for that mode is found.
This implementation always raises ProtocolError.
1298 1299 1300 1301 1302 |
# File 'lib/openid/server.rb', line 1298 def default_decoder(, _server) mode = .get_arg(OPENID_NS, "mode") msg = format("Unrecognized OpenID mode %s", mode) raise ProtocolError.new(, msg) end |