Add a first cut at a proposed new interface (still incomplete)

This commit is contained in:
Andrew M. Kuchling 2000-12-12 17:34:39 +00:00
parent 633ca5bb61
commit 64f8e76a08
1 changed files with 144 additions and 11 deletions

View File

@ -129,6 +129,139 @@ Rejected Changes
rationale is given describing why the change was deemed
inappropriate.
* None yet
Proposed Interface
XXX open issues: naming convention (studlycaps or underline-separated?);
no interface for file uploads yet; need to look at all the various
packages to see if there's anything else missing; need to look at
the cgi.parse*() functions and see if they can be simplified, too.
Parsing functions: carry over most of the parse* functions from cgi.py
# The Response class borrows most of its methods from Zope's
# HTTPResponse class.
class Response:
"""
Attributes:
status: HTTP status code to return
headers: dictionary of response headers
body: string containing the body of the HTTP response
"""
def __init__(self, status=200, headers={}, body=""):
pass
def setStatus(self, status, reason=None):
"Set the numeric HTTP response code"
pass
def setHeader(self, name, value):
"Set an HTTP header"
pass
def setBody(self, body):
"Set the body of the response"
pass
def setCookie(self, name, value,
path = XXX, # What to use as defaults?
comment = XXX,
domain = XXX,
max-age = XXX,
expires = XXX,
secure = XXX
):
"Set a cookie"
pass
def expireCookie(self, name):
"Remove a cookie from the user"
pass
def redirect(self, url):
"Redirect the browser to another URL"
pass
def __str__(self):
"Convert entire response to a string"
pass
def dump(self):
"Return a string representation useful for debugging"
pass
# XXX methods for specific classes of error:serverError, badRequest, etc.?
class Request:
"""
Attributes:
.headers : dictionary containing HTTP headers
.cookies : dictionary of cookies
.form : data from the form
.env : environment dictionary
"""
def __init__(self, environ=os.environ, stdin=sys.stdin,
keep_blank_values=0, strict_parsing=0):
"""Initialize the request object, using the provided environment
and standard input."""
pass
# Should people just use the dictionaries directly?
def getHeader(self, name, default=None):
pass
def getCookie(self, name, default=None):
pass
def getField(self, name, default=None):
pass
def getURL(self, n=0, query_string=0):
"""Return the URL of the current request, chopping off 'n' path
components from the right. Eg. if the URL is
"http://foo.com/bar/baz/qux", n=2 would return
"http://foo.com/bar". Does not include the query string (if
any)
"""
def getBaseURL(self, n=0):
"""Return the base URL of the current request, adding 'n' path
components to the end to recreate more of the whole URL.
Eg. if the request URL is
"http://foo.com/q/bar/baz/qux", n=0 would return
"http://foo.com/", and n=2 "http://foo.com/q/bar".
Returned URL does not include the query string, if any.
"""
def dump(self):
"String representation suitable for debugging output"
pass
# Possibilities?
def getBrowser(self):
"Returns Mozilla/IE/Lynx/Opera/whatever"
def isSecure(self):
"Return true if this is an SSLified request"
def wrapper(func, logfile=None):
"""
Calls the function 'func', passing it the arguments
(request, response, logfile). Exceptions are trapped and
sent to the file 'logfile'.
"""
pass
Copyright