Kaydet (Commit) 5d076961 authored tarafından Georg Brandl's avatar Georg Brandl

Patch #1417555: SimpleHTTPServer now returns Last-Modified headers.

üst bcd548bd
...@@ -217,11 +217,16 @@ Returns the server software's version string. This is a combination ...@@ -217,11 +217,16 @@ Returns the server software's version string. This is a combination
of the \member{server_version} and \member{sys_version} class variables. of the \member{server_version} and \member{sys_version} class variables.
\end{methoddesc} \end{methoddesc}
\begin{methoddesc}{date_time_string}{} \begin{methoddesc}{date_time_string}{\optional{timestamp}}
Returns the current date and time, formatted for a message header. Returns the date and time given by \var{timestamp} (which must be in the
format returned by \function{time.time()}), formatted for a message header.
If \var{timestamp} is omitted, it uses the current date and time.
The result looks like \code{'Sun, 06 Nov 1994 08:49:37 GMT'}.
\versionadded[The \var{timestamp} parameter]{2.5}
\end{methoddesc} \end{methoddesc}
\begin{methoddesc}{log_data_time_string}{} \begin{methoddesc}{log_date_time_string}{}
Returns the current date and time, formatted for logging. Returns the current date and time, formatted for logging.
\end{methoddesc} \end{methoddesc}
......
...@@ -65,13 +65,18 @@ error. Otherwise, the content type is guessed by calling the ...@@ -65,13 +65,18 @@ error. Otherwise, the content type is guessed by calling the
\var{extensions_map} variable. \var{extensions_map} variable.
A \code{'Content-type:'} header with the guessed content type is A \code{'Content-type:'} header with the guessed content type is
output, followed by a blank line signifying the end of the headers, output, followed by a \code{'Content-Length:'} header with the file's
size and a \code{'Last-Modified:'} header with the file's modification
time.
Then follows a blank line signifying the end of the headers,
and then the contents of the file are output. If the file's MIME type and then the contents of the file are output. If the file's MIME type
starts with \code{text/} the file is opened in text mode; otherwise starts with \code{text/} the file is opened in text mode; otherwise
binary mode is used. binary mode is used.
For example usage, see the implementation of the \function{test()} For example usage, see the implementation of the \function{test()}
function. function.
\versionadded[The \code{'Last-Modified'} header]{2.5}
\end{methoddesc} \end{methoddesc}
......
...@@ -436,10 +436,11 @@ class BaseHTTPRequestHandler(SocketServer.StreamRequestHandler): ...@@ -436,10 +436,11 @@ class BaseHTTPRequestHandler(SocketServer.StreamRequestHandler):
"""Return the server software version string.""" """Return the server software version string."""
return self.server_version + ' ' + self.sys_version return self.server_version + ' ' + self.sys_version
def date_time_string(self): def date_time_string(self, timestamp=None):
"""Return the current date and time formatted for a message header.""" """Return the current date and time formatted for a message header."""
now = time.time() if timestamp is None:
year, month, day, hh, mm, ss, wd, y, z = time.gmtime(now) timestamp = time.time()
year, month, day, hh, mm, ss, wd, y, z = time.gmtime(timestamp)
s = "%s, %02d %3s %4d %02d:%02d:%02d GMT" % ( s = "%s, %02d %3s %4d %02d:%02d:%02d GMT" % (
self.weekdayname[wd], self.weekdayname[wd],
day, self.monthname[month], year, day, self.monthname[month], year,
......
...@@ -85,7 +85,9 @@ class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): ...@@ -85,7 +85,9 @@ class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
return None return None
self.send_response(200) self.send_response(200)
self.send_header("Content-type", ctype) self.send_header("Content-type", ctype)
self.send_header("Content-Length", str(os.fstat(f.fileno())[6])) fs = os.fstat(f.fileno())
self.send_header("Content-Length", str(fs[6]))
self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
self.end_headers() self.end_headers()
return f return f
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment