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), "http://example.com/op")
   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)
       else:
           self.showDecidePage(request)
           return
   else:
       response = oserver.handleRequest(request)

   webresponse = oserver.encode(response)

Method Summary
  __init__(self, store, op_endpoint)
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.
OpenIDResponse 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.
openid.association.SessionNegotiator negotiator: I use this to determine which kinds of associations I can make and how.
str op_endpoint: My URL.
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, op_endpoint=None)
(Constructor)

A new Server.
Parameters:
store - The back-end where my associations are stored.
           (type=openid.store.interface.OpenIDStore)
op_endpoint - My URL, the fully qualified address of this server's endpoint, i.e. http://example.com/server
           (type=str)
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: SigningEncoder.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.
Returns:
OpenIDResponse
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

negotiator

I use this to determine which kinds of associations I can make and how.
Type:
openid.association.SessionNegotiator

op_endpoint

My URL.
Type:
str

signatory

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

Generated by Epydoc 2.1 on Wed Nov 14 17:47:20 2007 http://epydoc.sf.net