from Common import *
from Message import Message
from time import asctime, localtime
class Request(Message):
"""
Request is a type of Message that offers the following:
* A time stamp (indicating when the request was made)
* An input stream. @@ 2000-04-30 ce: resolve this
* Remote request information (address, name)
* Local host information (address, name, port)
* A security indicator
Request is an abstract class; developers typically use HTTPRequest.
FUTURE
* Consider if the local host information should be moved up to Message.
* Locales
* Secure requests, authentication, etc.
"""
## Init ##
def __init__(self):
""" Subclasses are responsible for invoking super and initializing self._time. """
Message.__init__(self)
## Access ##
def time(self):
return self._time
def timeStamp(self):
""" Returns time() as a human readable string, useful for logging and debugging. """
return asctime(localtime(self.time()))
## Input ##
def input(self):
""" Returns a file-style object that the contents can be read from.
# @@ 2000-05-03 ce: This is bogus. Disregard for now."""
pass
## Remote info ##
# @@ 2000-05-07 ce: Do remoteAddress() and remoteName() have to be implemented here or should it be a subclass responsibility?
def remoteAddress(self):
""" Returns a string containing the Internet Protocol (IP) address of the client that sent the request. """
raise NotImplementedError
def remoteName(self):
""" Returns the fully qualified name of the client that sent the request, or the IP address of the client if the name cannot be determined. """
raise NotImplementedError
## Local info ##
def localAddress(self):
""" Returns a string containing the Internet Protocol (IP) address of the local host (e.g., the server) that received the request. """
raise NotImplementedError
def localName(self):
""" Returns the fully qualified name of the local host (e.g., the server) that received the request. """
return 'localhost'
def localPort(self):
""" Returns the port of the local host (e.g., the server) that received the request. """
raise NotImplementedError
## Security ##
def isSecure(self):
""" Returns true if request was made using a secure channel, such as HTTPS. This currently always returns false, since secure channels are not yet supported. """
return 0
## Cleanup ##
def clearTransaction(self):
del self._transaction