Package openid :: Package server :: Module server :: Class Server
[frames | no frames]

Type Server

object --+
         |
        Server


I handle requests for an OpenID server.

Some types of requests (those which are not checkid requests) may be handed to my handleRequest method, and I will take care of it and return a response.

For your convenience, I also provide an interface to Decoder.decode and SigningEncoder.encode through my methods decodeRequest and encodeResponse.

All my state is encapsulated in an OpenIDStore, which means I'm not generally pickleable but I am easy to reconstruct.

Example:
   oserver = Server(FileOpenIDStore(data_path))
   request = oserver.decodeRequest(query)
   if request.mode in ["checkid_immediate", "checkid_setup"]:
       if self.isAuthorized(request.identity, request.trust_root):
           response = request.answer(True)
       elif request.immediate:
           response = request.answer(False, self.base_url)
       else:
           self.showDecidePage(request)
           return
   else:
       response = oserver.handleRequest(request)

   webresponse = oserver.encode(response)

Method Summary
  __init__(self, store)
A new Server.
OpenIDRequest decodeRequest(self, query)
Transform query parameters into an OpenIDRequest.
WebResponse encodeResponse(self, response)
Encode a response to a WebResponse, signing it first if appropriate.
  handleRequest(self, request)
Handle a request.
OpenIDResponse openid_associate(self, request)
Handle and respond to {associate} requests.
OpenIDResponse openid_check_authentication(self, request)
Handle and respond to {check_authentication} requests.
Inherited from object: __delattr__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __str__

Instance Variable Summary
Decoder decoder: I'm using this to decode things.
Encoder encoder: I'm using this to encode things.
Signatory signatory: I'm using this for associate requests and to sign things.

Class Variable Summary
type decoderClass = openid.server.server.Decoder
type encoderClass = openid.server.server.SigningEncoder
type signatoryClass = openid.server.server.Signatory

Method Details

__init__(self, store)
(Constructor)

A new Server.
Parameters:
store - The back-end where my associations are stored.
           (type=openid.store.interface.OpenIDStore)
Overrides:
__builtin__.object.__init__

decodeRequest(self, query)

Transform query parameters into an OpenIDRequest.

If the query does not seem to be an OpenID request at all, I return None.
Parameters:
query - The query parameters as a dictionary with each key mapping to one value.
           (type=dict)
Returns:
OpenIDRequest
Raises:
ProtocolError - When the query does not seem to be a valid OpenID request.

See Also: Decoder.decode

encodeResponse(self, response)

Encode a response to a WebResponse, signing it first if appropriate.
Returns:
WebResponse
Raises:
EncodingError - When I can't figure out how to encode this message.
AlreadySigned - When this response is already signed.

See Also: Encoder.encode

handleRequest(self, request)

Handle a request.

Give me a request, I will give you a response. Unless it's a type of request I cannot handle myself, in which case I will raise NotImplementedError. In that case, you can handle it yourself, or add a method to me for handling that request type.
Raises:
NotImplementedError - When I do not have a handler defined for that type of request.

openid_associate(self, request)

Handle and respond to {associate} requests.
Returns:
OpenIDResponse

openid_check_authentication(self, request)

Handle and respond to {check_authentication} requests.
Returns:
OpenIDResponse

Instance Variable Details

decoder

I'm using this to decode things.
Type:
Decoder

encoder

I'm using this to encode things.
Type:
Encoder

signatory

I'm using this for associate requests and to sign things.
Type:
Signatory

Generated by Epydoc 2.1 on Fri Dec 14 11:14:09 2007 http://epydoc.sf.net