646 lines
32 KiB
HTML
646 lines
32 KiB
HTML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
<head>
|
|
<title>BaseHTTPServer.BaseHTTPRequestHandler</title>
|
|
<link rel="stylesheet" href="epydoc.css" type="text/css"></link>
|
|
</head>
|
|
<body bgcolor="white" text="black" link="blue" vlink="#204080"
|
|
alink="#204080">
|
|
|
|
<!-- =========== START OF NAVBAR =========== -->
|
|
<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
|
|
<tr valign="center">
|
|
<th class="navbar"> <a class="navbar" href="i2p-module.html">Home</a> </th>
|
|
<th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
|
|
<th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
|
|
<th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
|
|
<th class="navbar" width="100%"></th>
|
|
</tr>
|
|
</table>
|
|
<table width="100%" cellpadding="0" cellspacing="0">
|
|
<tr valign="top">
|
|
<td width="100%">
|
|
<font size="-1"><b class="breadcrumbs">
|
|
Module BaseHTTPServer ::
|
|
Class BaseHTTPRequestHandler
|
|
</b></font></br>
|
|
</td>
|
|
<td><table cellpadding="0" cellspacing="0">
|
|
<tr><td align="right"><font size="-2">[show private | <a href="../public/BaseHTTPServer.BaseHTTPRequestHandler-class.html">hide private</a>]</font></td></tr>
|
|
<tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a> | <a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html" target="_top">no frames</a>]</font></td></tr>
|
|
</table></td>
|
|
</tr></table>
|
|
|
|
<!-- =========== START OF CLASS DESCRIPTION =========== -->
|
|
<h2 class="class">Class BaseHTTPRequestHandler</h2>
|
|
|
|
<pre class="base-tree">
|
|
<a href="SocketServer.BaseRequestHandler-class.html"><code>BaseRequestHandler</code></a> --+
|
|
|
|
|
<a href="SocketServer.StreamRequestHandler-class.html"><code>StreamRequestHandler</code></a> --+
|
|
|
|
|
<b>BaseHTTPRequestHandler</b>
|
|
</pre><br />
|
|
|
|
<dl><dt><b>Known Subclasses:</b></dt>
|
|
<dd>
|
|
<a href="i2p.BaseHTTPServer.BaseHTTPRequestHandler-class.html"><code>BaseHTTPRequestHandler</code></a>,
|
|
<a href="SimpleHTTPServer.SimpleHTTPRequestHandler-class.html"><code>SimpleHTTPRequestHandler</code></a></dd></dl>
|
|
|
|
<hr/>
|
|
|
|
<pre class="literalblock">
|
|
HTTP request handler base class.
|
|
|
|
The following explanation of HTTP serves to guide you through the
|
|
code as well as to expose any misunderstandings I may have about
|
|
HTTP (so you don't need to read the code to figure out I'm wrong
|
|
:-).
|
|
|
|
HTTP (HyperText Transfer Protocol) is an extensible protocol on
|
|
top of a reliable stream transport (e.g. TCP/IP). The protocol
|
|
recognizes three parts to a request:
|
|
|
|
1. One line identifying the request type and path
|
|
2. An optional set of RFC-822-style headers
|
|
3. An optional data part
|
|
|
|
The headers and data are separated by a blank line.
|
|
|
|
The first line of the request has the form
|
|
|
|
<command> <path> <version>
|
|
|
|
where <command> is a (case-sensitive) keyword such as GET or POST,
|
|
<path> is a string containing path information for the request,
|
|
and <version> should be the string "HTTP/1.0" or "HTTP/1.1".
|
|
<path> is encoded using the URL encoding scheme (using %xx to signify
|
|
the ASCII character with hex code xx).
|
|
|
|
The specification specifies that lines are separated by CRLF but
|
|
for compatibility with the widest range of clients recommends
|
|
servers also handle LF. Similarly, whitespace in the request line
|
|
is treated sensibly (allowing multiple spaces between components
|
|
and allowing trailing whitespace).
|
|
|
|
Similarly, for output, lines ought to be separated by CRLF pairs
|
|
but most clients grok LF characters just fine.
|
|
|
|
If the first line of the request has the form
|
|
|
|
<command> <path>
|
|
|
|
(i.e. <version> is left out) then this is assumed to be an HTTP
|
|
0.9 request; this form has no optional headers and data part and
|
|
the reply consists of just the data.
|
|
|
|
The reply form of the HTTP 1.x protocol again has three parts:
|
|
|
|
1. One line giving the response code
|
|
2. An optional set of RFC-822-style headers
|
|
3. The data
|
|
|
|
Again, the headers and data are separated by a blank line.
|
|
|
|
The response code line has the form
|
|
|
|
<version> <responsecode> <responsestring>
|
|
|
|
where <version> is the protocol version ("HTTP/1.0" or "HTTP/1.1"),
|
|
<responsecode> is a 3-digit response code indicating success or
|
|
failure of the request, and <responsestring> is an optional
|
|
human-readable string explaining what the response code means.
|
|
|
|
This server parses the request and the headers, and then calls a
|
|
function specific to the request type (<command>). Specifically,
|
|
a request SPAM will be handled by a method do_SPAM(). If no
|
|
such method exists the server sends an error response to the
|
|
client. If it exists, it is called with no arguments:
|
|
|
|
do_SPAM()
|
|
|
|
Note that the request name is case sensitive (i.e. SPAM and spam
|
|
are different requests).
|
|
|
|
The various request details are stored in instance variables:
|
|
|
|
- client_address is the client IP address in the form (host,
|
|
port);
|
|
|
|
- command, path and version are the broken-down request line;
|
|
|
|
- headers is an instance of mimetools.Message (or a derived
|
|
class) containing the header information;
|
|
|
|
- rfile is a file object open for reading positioned at the
|
|
start of the optional input data part;
|
|
|
|
- wfile is a file object open for writing.
|
|
|
|
IT IS IMPORTANT TO ADHERE TO THE PROTOCOL FOR WRITING!
|
|
|
|
The first thing to be written must be the response line. Then
|
|
follow 0 or more header lines, then a blank line, and then the
|
|
actual data (if any). The meaning of the header lines depends on
|
|
the command executed by the server; in most cases, when data is
|
|
returned, there should be at least one header line of the form
|
|
|
|
Content-type: <type>/<subtype>
|
|
|
|
where <type> and <subtype> should be registered MIME types,
|
|
e.g. "text/html" or "text/plain".
|
|
</pre>
|
|
<hr/>
|
|
|
|
|
|
<!-- =========== START OF METHOD SUMMARY =========== -->
|
|
<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
|
|
<tr bgcolor="#70b0f0" class="summary">
|
|
<th colspan="2">Method Summary</th></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#address_string" class="summary-sig-name"><code>address_string</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
|
|
<br />
|
|
Return the client address formatted for logging.</td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#date_time_string" class="summary-sig-name"><code>date_time_string</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
|
|
<br />
|
|
Return the current date and time formatted for a message header.</td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#end_headers" class="summary-sig-name"><code>end_headers</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
|
|
<br />
|
|
Send the blank line ending the MIME headers.</td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#handle" class="summary-sig-name"><code>handle</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
|
|
<br />
|
|
Handle multiple requests if necessary.</td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#handle_one_request" class="summary-sig-name"><code>handle_one_request</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
|
|
<br />
|
|
Handle a single HTTP request.</td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#log_date_time_string" class="summary-sig-name"><code>log_date_time_string</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
|
|
<br />
|
|
Return the current time formatted for logging.</td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#log_error" class="summary-sig-name"><code>log_error</code></a>(<span class=summary-sig-arg>self</span>,
|
|
<span class="summary-sig-vararg">*args</span>)</span></code>
|
|
<br />
|
|
Log an error.</td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#log_message" class="summary-sig-name"><code>log_message</code></a>(<span class=summary-sig-arg>self</span>,
|
|
<span class=summary-sig-arg>format</span>,
|
|
<span class="summary-sig-vararg">*args</span>)</span></code>
|
|
<br />
|
|
Log an arbitrary message.</td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#log_request" class="summary-sig-name"><code>log_request</code></a>(<span class=summary-sig-arg>self</span>,
|
|
<span class=summary-sig-arg>code</span>,
|
|
<span class=summary-sig-arg>size</span>)</span></code>
|
|
<br />
|
|
Log an accepted request.</td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#parse_request" class="summary-sig-name"><code>parse_request</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
|
|
<br />
|
|
Parse a request (internal).</td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#send_error" class="summary-sig-name"><code>send_error</code></a>(<span class=summary-sig-arg>self</span>,
|
|
<span class=summary-sig-arg>code</span>,
|
|
<span class=summary-sig-arg>message</span>)</span></code>
|
|
<br />
|
|
Send and log an error reply.</td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#send_header" class="summary-sig-name"><code>send_header</code></a>(<span class=summary-sig-arg>self</span>,
|
|
<span class=summary-sig-arg>keyword</span>,
|
|
<span class=summary-sig-arg>value</span>)</span></code>
|
|
<br />
|
|
Send a MIME header.</td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#send_response" class="summary-sig-name"><code>send_response</code></a>(<span class=summary-sig-arg>self</span>,
|
|
<span class=summary-sig-arg>code</span>,
|
|
<span class=summary-sig-arg>message</span>)</span></code>
|
|
<br />
|
|
Send the response header and log the response code.</td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#version_string" class="summary-sig-name"><code>version_string</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
|
|
<br />
|
|
Return the server software version string.</td></tr>
|
|
<tr bgcolor="#e8f0f8" class="group">
|
|
<th colspan="2"> Inherited from StreamRequestHandler</th></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="SocketServer.StreamRequestHandler-class.html#finish" class="summary-sig-name"><code>finish</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
|
|
</td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="SocketServer.StreamRequestHandler-class.html#setup" class="summary-sig-name"><code>setup</code></a>(<span class=summary-sig-arg>self</span>)</span></code>
|
|
</td></tr>
|
|
<tr bgcolor="#e8f0f8" class="group">
|
|
<th colspan="2"> Inherited from BaseRequestHandler</th></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"> </font></td>
|
|
<td><code><span class="summary-sig"><a href="SocketServer.BaseRequestHandler-class.html#__init__" class="summary-sig-name"><code>__init__</code></a>(<span class=summary-sig-arg>self</span>,
|
|
<span class=summary-sig-arg>request</span>,
|
|
<span class=summary-sig-arg>client_address</span>,
|
|
<span class=summary-sig-arg>server</span>)</span></code>
|
|
</td></tr>
|
|
</table><br />
|
|
|
|
|
|
<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
|
|
<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
|
|
<tr bgcolor="#70b0f0" class="summary">
|
|
<th colspan="2">Class Variable Summary</th></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
|
|
<td><b><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#error_message_format"><code>error_message_format</code></a></b> = <span title="'<head>\n<title>Error response</title>\n</head>\n<body>\n<h1>Error response</h1>\n<p>Error code %(code)d.\n<p>Message: %(message)s.\n<p>Error code explanation: %(code)s = %(explain)s.\n</body>\n'"><code><span class="variable-quote">'</span><head>\n<title>Error response</t<span class="variable-ellipsis">...</span></code>
|
|
</span></td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>classobj</code></font></td>
|
|
<td><a name="MessageClass"></a><b><code>MessageClass</code></b> = <a href="mimetools.Message-class.html"><code>mimetools.Message</code></a></td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td>
|
|
<td><b><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#monthname"><code>monthname</code></a></b> = <span title="[None, 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']"><code>[None, 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'J<span class="variable-ellipsis">...</span></code>
|
|
</span></td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
|
|
<td><b><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#protocol_version"><code>protocol_version</code></a></b> = <span title="'HTTP/1.0'"><code><span class="variable-quote">'</span>HTTP/1.0<span class="variable-quote">'</span> </code>
|
|
</span></td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>dict</code></font></td>
|
|
<td><b><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#responses"><code>responses</code></a></b> = <span title="{400: ('Bad request', 'Bad request syntax or unsupported method'), 401: ('Unauthorized', 'No permission -- see authorization schemes'), 402: ('Payment required', 'No payment -- see charging schemes'), 403: ('Forbidden', 'Request forbidden -- authorization will not help'), 404: ('Not Found', 'Nothing matches the given URI'), 405: ('Method Not Allowed', 'Specified method is invalid for this server.'), 406: ('Not Acceptable', 'URI not available in preferred format.'), 407: ('Proxy Authentication Required', 'You must authenticate with this proxy before proceeding.'), 408: ('Request Time-out', '..."><code>{400: ('Bad request', 'Bad request syntax or<span class="variable-ellipsis">...</span></code>
|
|
</span></td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
|
|
<td><b><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#server_version"><code>server_version</code></a></b> = <span title="'BaseHTTP/0.3'"><code><span class="variable-quote">'</span>BaseHTTP/0.3<span class="variable-quote">'</span> </code>
|
|
</span></td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>str</code></font></td>
|
|
<td><b><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#sys_version"><code>sys_version</code></a></b> = <span title="'Python/2.3.4'"><code><span class="variable-quote">'</span>Python/2.3.4<span class="variable-quote">'</span> </code>
|
|
</span></td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>list</code></font></td>
|
|
<td><b><a href="BaseHTTPServer.BaseHTTPRequestHandler-class.html#weekdayname"><code>weekdayname</code></a></b> = <span title="['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']"><code>['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat',<span class="variable-ellipsis">...</span></code>
|
|
</span></td></tr>
|
|
<tr bgcolor="#e8f0f8" class="group">
|
|
<th colspan="2"> Inherited from StreamRequestHandler</th></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
|
|
<td><b><a href="SocketServer.StreamRequestHandler-class.html#rbufsize"><code>rbufsize</code></a></b> = <span title="-1">-1 </span></td></tr>
|
|
<tr><td align="right" valign="top" width="15%"><font size="-1"><code>int</code></font></td>
|
|
<td><b><a href="SocketServer.StreamRequestHandler-class.html#wbufsize"><code>wbufsize</code></a></b> = <span title="0">0 </span></td></tr>
|
|
</table><br />
|
|
|
|
|
|
<!-- =========== START OF METHOD DETAILS =========== -->
|
|
<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
|
|
<tr bgcolor="#70b0f0" class="details">
|
|
<th colspan="2">Method Details</th></tr>
|
|
</table>
|
|
|
|
<a name="address_string"></a>
|
|
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
|
|
<h3><span class="sig"><span class="sig-name">address_string</span>(<span class=sig-arg>self</span>)</span>
|
|
</h3>
|
|
<p>Return the client address formatted for logging.</p>
|
|
This version looks up the full hostname using gethostbyaddr(), and
|
|
tries to find a name that contains at least one dot.
|
|
<dl><dt></dt><dd>
|
|
</dd></dl>
|
|
</td></tr></table>
|
|
|
|
<a name="date_time_string"></a>
|
|
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
|
|
<h3><span class="sig"><span class="sig-name">date_time_string</span>(<span class=sig-arg>self</span>)</span>
|
|
</h3>
|
|
Return the current date and time formatted for a message header.
|
|
<dl><dt></dt><dd>
|
|
</dd></dl>
|
|
</td></tr></table>
|
|
|
|
<a name="end_headers"></a>
|
|
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
|
|
<h3><span class="sig"><span class="sig-name">end_headers</span>(<span class=sig-arg>self</span>)</span>
|
|
</h3>
|
|
Send the blank line ending the MIME headers.
|
|
<dl><dt></dt><dd>
|
|
</dd></dl>
|
|
</td></tr></table>
|
|
|
|
<a name="handle"></a>
|
|
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
|
|
<h3><span class="sig"><span class="sig-name">handle</span>(<span class=sig-arg>self</span>)</span>
|
|
</h3>
|
|
Handle multiple requests if necessary.
|
|
<dl><dt></dt><dd>
|
|
<dl><dt><b>Overrides:</b></dt>
|
|
<dd><a href="SocketServer.BaseRequestHandler-class.html#handle"><code>SocketServer.BaseRequestHandler.handle</code></a></dd>
|
|
</dl>
|
|
</dd></dl>
|
|
</td></tr></table>
|
|
|
|
<a name="handle_one_request"></a>
|
|
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
|
|
<h3><span class="sig"><span class="sig-name">handle_one_request</span>(<span class=sig-arg>self</span>)</span>
|
|
</h3>
|
|
<p>Handle a single HTTP request.</p>
|
|
You normally don't need to override this method; see the class
|
|
__doc__ string for information on how to handle specific HTTP commands
|
|
such as GET and POST.
|
|
<dl><dt></dt><dd>
|
|
</dd></dl>
|
|
</td></tr></table>
|
|
|
|
<a name="log_date_time_string"></a>
|
|
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
|
|
<h3><span class="sig"><span class="sig-name">log_date_time_string</span>(<span class=sig-arg>self</span>)</span>
|
|
</h3>
|
|
Return the current time formatted for logging.
|
|
<dl><dt></dt><dd>
|
|
</dd></dl>
|
|
</td></tr></table>
|
|
|
|
<a name="log_error"></a>
|
|
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
|
|
<h3><span class="sig"><span class="sig-name">log_error</span>(<span class=sig-arg>self</span>,
|
|
<span class="sig-vararg">*args</span>)</span>
|
|
</h3>
|
|
<p>Log an error.</p>
|
|
<p>This is called when a request cannot be fulfilled. By default it
|
|
passes the message on to log_message().</p>
|
|
<p>Arguments are the same as for log_message().</p>
|
|
XXX This should go to the separate error log.
|
|
<dl><dt></dt><dd>
|
|
</dd></dl>
|
|
</td></tr></table>
|
|
|
|
<a name="log_message"></a>
|
|
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
|
|
<h3><span class="sig"><span class="sig-name">log_message</span>(<span class=sig-arg>self</span>,
|
|
<span class=sig-arg>format</span>,
|
|
<span class="sig-vararg">*args</span>)</span>
|
|
</h3>
|
|
<p>Log an arbitrary message.</p>
|
|
<p>This is used by all other logging functions. Override it if you have
|
|
specific logging wishes.</p>
|
|
<p>The first argument, FORMAT, is a format string for the message to be
|
|
logged. If the format string contains any % escapes requiring
|
|
parameters, they should be specified as subsequent arguments (it's just
|
|
like printf!).</p>
|
|
The client host and current date/time are prefixed to every
|
|
message.
|
|
<dl><dt></dt><dd>
|
|
</dd></dl>
|
|
</td></tr></table>
|
|
|
|
<a name="log_request"></a>
|
|
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
|
|
<h3><span class="sig"><span class="sig-name">log_request</span>(<span class=sig-arg>self</span>,
|
|
<span class=sig-arg>code</span>=<span class=sig-default>'-'</span>,
|
|
<span class=sig-arg>size</span>=<span class=sig-default>'-'</span>)</span>
|
|
</h3>
|
|
<p>Log an accepted request.</p>
|
|
This is called by send_reponse().
|
|
<dl><dt></dt><dd>
|
|
</dd></dl>
|
|
</td></tr></table>
|
|
|
|
<a name="parse_request"></a>
|
|
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
|
|
<h3><span class="sig"><span class="sig-name">parse_request</span>(<span class=sig-arg>self</span>)</span>
|
|
</h3>
|
|
<p>Parse a request (internal).</p>
|
|
<p>The request should be stored in self.raw_requestline; the results
|
|
are in self.command, self.path, self.request_version and
|
|
self.headers.</p>
|
|
Return True for success, False for failure; on failure, an error is
|
|
sent back.
|
|
<dl><dt></dt><dd>
|
|
</dd></dl>
|
|
</td></tr></table>
|
|
|
|
<a name="send_error"></a>
|
|
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
|
|
<h3><span class="sig"><span class="sig-name">send_error</span>(<span class=sig-arg>self</span>,
|
|
<span class=sig-arg>code</span>,
|
|
<span class=sig-arg>message</span>=<span class=sig-default>None</span>)</span>
|
|
</h3>
|
|
<p>Send and log an error reply.</p>
|
|
<p>Arguments are the error code, and a detailed message. The detailed
|
|
message defaults to the short entry matching the response code.</p>
|
|
This sends an error response (so it must be called before any output
|
|
has been generated), logs the error, and finally sends a piece of HTML
|
|
explaining the error to the user.
|
|
<dl><dt></dt><dd>
|
|
</dd></dl>
|
|
</td></tr></table>
|
|
|
|
<a name="send_header"></a>
|
|
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
|
|
<h3><span class="sig"><span class="sig-name">send_header</span>(<span class=sig-arg>self</span>,
|
|
<span class=sig-arg>keyword</span>,
|
|
<span class=sig-arg>value</span>)</span>
|
|
</h3>
|
|
Send a MIME header.
|
|
<dl><dt></dt><dd>
|
|
</dd></dl>
|
|
</td></tr></table>
|
|
|
|
<a name="send_response"></a>
|
|
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
|
|
<h3><span class="sig"><span class="sig-name">send_response</span>(<span class=sig-arg>self</span>,
|
|
<span class=sig-arg>code</span>,
|
|
<span class=sig-arg>message</span>=<span class=sig-default>None</span>)</span>
|
|
</h3>
|
|
<p>Send the response header and log the response code.</p>
|
|
Also send two standard headers with the server software version and
|
|
the current date.
|
|
<dl><dt></dt><dd>
|
|
</dd></dl>
|
|
</td></tr></table>
|
|
|
|
<a name="version_string"></a>
|
|
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
|
|
<h3><span class="sig"><span class="sig-name">version_string</span>(<span class=sig-arg>self</span>)</span>
|
|
</h3>
|
|
Return the server software version string.
|
|
<dl><dt></dt><dd>
|
|
</dd></dl>
|
|
</td></tr></table>
|
|
<br />
|
|
|
|
|
|
<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
|
|
<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
|
|
<tr bgcolor="#70b0f0" class="details">
|
|
<th colspan="2">Class Variable Details</th></tr>
|
|
</table>
|
|
<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
|
|
<a name="error_message_format"></a>
|
|
<h3>error_message_format</h3>
|
|
<dl>
|
|
<dt></dt>
|
|
<dd>
|
|
<dl>
|
|
<dt><b>Type:</b></dt>
|
|
<dd>
|
|
<code>str</code>
|
|
|
|
</dd>
|
|
<span title="'<head>\n<title>Error response</title>\n</head>\n<body>\n<h1>Error response</h1>\n<p>Error code %(code)d.\n<p>Message: %(message)s.\n<p>Error code explanation: %(code)s = %(explain)s.\n</body>\n'"> <dt><b>Value:</b></dt>
|
|
<dd><table><tr><td>
|
|
<pre class="variable">
|
|
<span class="variable-quote">'''</span><head>
|
|
<title>Error response</title>
|
|
</head>
|
|
<body>
|
|
<h1>Error response</h1>
|
|
<p>Error code %(code)d.
|
|
<p>Message: %(message)s.
|
|
<p>Error code explanation: %(code)s = %(explain)s.
|
|
<span class="variable-ellipsis">...</span> </pre>
|
|
</td></tr></table></dd>
|
|
</span> </dl>
|
|
</dd>
|
|
</dl></td></tr></table>
|
|
<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
|
|
<a name="monthname"></a>
|
|
<h3>monthname</h3>
|
|
<dl>
|
|
<dt></dt>
|
|
<dd>
|
|
<dl>
|
|
<dt><b>Type:</b></dt>
|
|
<dd>
|
|
<code>list</code>
|
|
|
|
</dd>
|
|
<span title="[None, 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']"> <dt><b>Value:</b></dt>
|
|
<dd><table><tr><td>
|
|
<pre class="variable">
|
|
[None, 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug'] </pre>
|
|
</td></tr></table></dd>
|
|
</span> </dl>
|
|
</dd>
|
|
</dl></td></tr></table>
|
|
<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
|
|
<a name="protocol_version"></a>
|
|
<h3>protocol_version</h3>
|
|
<dl>
|
|
<dt></dt>
|
|
<dd>
|
|
<dl>
|
|
<dt><b>Type:</b></dt>
|
|
<dd>
|
|
<code>str</code>
|
|
|
|
</dd>
|
|
<span title="'HTTP/1.0'"> <dt><b>Value:</b></dt>
|
|
<dd><table><tr><td>
|
|
<pre class="variable">
|
|
<span class="variable-quote">'</span>HTTP/1.0<span class="variable-quote">'</span> </pre>
|
|
</td></tr></table></dd>
|
|
</span> </dl>
|
|
</dd>
|
|
</dl></td></tr></table>
|
|
<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
|
|
<a name="responses"></a>
|
|
<h3>responses</h3>
|
|
<dl>
|
|
<dt></dt>
|
|
<dd>
|
|
<dl>
|
|
<dt><b>Type:</b></dt>
|
|
<dd>
|
|
<code>dict</code>
|
|
|
|
</dd>
|
|
<span title="{400: ('Bad request', 'Bad request syntax or unsupported method'), 401: ('Unauthorized', 'No permission -- see authorization schemes'), 402: ('Payment required', 'No payment -- see charging schemes'), 403: ('Forbidden', 'Request forbidden -- authorization will not help'), 404: ('Not Found', 'Nothing matches the given URI'), 405: ('Method Not Allowed', 'Specified method is invalid for this server.'), 406: ('Not Acceptable', 'URI not available in preferred format.'), 407: ('Proxy Authentication Required', 'You must authenticate with this proxy before proceeding.'), 408: ('Request Time-out', '..."> <dt><b>Value:</b></dt>
|
|
<dd><table><tr><td>
|
|
<pre class="variable">
|
|
{100: ('Continue', 'Request received, please continue'),
|
|
101: ('Switching Protocols',
|
|
'Switching to new protocol; obey Upgrade header'),
|
|
200: ('OK', 'Request fulfilled, document follows'),
|
|
201: ('Created', 'Document created, URL follows'),
|
|
202: ('Accepted', 'Request accepted, processing continues off-line'),
|
|
203: ('Non-Authoritative Information', 'Request fulfilled from cache'<span class="variable-linewrap">\</span>
|
|
),
|
|
<span class="variable-ellipsis">...</span> </pre>
|
|
</td></tr></table></dd>
|
|
</span> </dl>
|
|
</dd>
|
|
</dl></td></tr></table>
|
|
<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
|
|
<a name="server_version"></a>
|
|
<h3>server_version</h3>
|
|
<dl>
|
|
<dt></dt>
|
|
<dd>
|
|
<dl>
|
|
<dt><b>Type:</b></dt>
|
|
<dd>
|
|
<code>str</code>
|
|
|
|
</dd>
|
|
<span title="'BaseHTTP/0.3'"> <dt><b>Value:</b></dt>
|
|
<dd><table><tr><td>
|
|
<pre class="variable">
|
|
<span class="variable-quote">'</span>BaseHTTP/0.3<span class="variable-quote">'</span> </pre>
|
|
</td></tr></table></dd>
|
|
</span> </dl>
|
|
</dd>
|
|
</dl></td></tr></table>
|
|
<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
|
|
<a name="sys_version"></a>
|
|
<h3>sys_version</h3>
|
|
<dl>
|
|
<dt></dt>
|
|
<dd>
|
|
<dl>
|
|
<dt><b>Type:</b></dt>
|
|
<dd>
|
|
<code>str</code>
|
|
|
|
</dd>
|
|
<span title="'Python/2.3.4'"> <dt><b>Value:</b></dt>
|
|
<dd><table><tr><td>
|
|
<pre class="variable">
|
|
<span class="variable-quote">'</span>Python/2.3.4<span class="variable-quote">'</span> </pre>
|
|
</td></tr></table></dd>
|
|
</span> </dl>
|
|
</dd>
|
|
</dl></td></tr></table>
|
|
<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
|
|
<a name="weekdayname"></a>
|
|
<h3>weekdayname</h3>
|
|
<dl>
|
|
<dt></dt>
|
|
<dd>
|
|
<dl>
|
|
<dt><b>Type:</b></dt>
|
|
<dd>
|
|
<code>list</code>
|
|
|
|
</dd>
|
|
<span title="['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']"> <dt><b>Value:</b></dt>
|
|
<dd><table><tr><td>
|
|
<pre class="variable">
|
|
['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] </pre>
|
|
</td></tr></table></dd>
|
|
</span> </dl>
|
|
</dd>
|
|
</dl></td></tr></table>
|
|
<br />
|
|
|
|
|
|
<!-- =========== START OF NAVBAR =========== -->
|
|
<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
|
|
<tr valign="center">
|
|
<th class="navbar"> <a class="navbar" href="i2p-module.html">Home</a> </th>
|
|
<th class="navbar"> <a class="navbar" href="trees.html">Trees</a> </th>
|
|
<th class="navbar"> <a class="navbar" href="indices.html">Index</a> </th>
|
|
<th class="navbar"> <a class="navbar" href="help.html">Help</a> </th>
|
|
<th class="navbar" width="100%"></th>
|
|
</tr>
|
|
</table>
|
|
|
|
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
|
<tr>
|
|
<td align="left"><font size="-2">Generated by Epydoc 2.1 on Mon Aug 02 01:07:41 2004</font></td>
|
|
<td align="right"><a href="http://epydoc.sourceforge.net"
|
|
><font size="-2">http://epydoc.sf.net</font></a></td>
|
|
</tr>
|
|
</table>
|
|
</body>
|
|
</html>
|