\section{\module{SimpleHTTPServer} --- Simple HTTP request handler} \declaremodule{standard}{SimpleHTTPServer} \sectionauthor{Moshe Zadka}{moshez@zadka.site.co.il} \modulesynopsis{This module provides a basic request handler for HTTP servers.} The \module{SimpleHTTPServer} module defines a request-handler class, interface compatible with \class{BaseHTTPServer.BaseHTTPRequestHandler} which serves files only from a base directory. The \module{SimpleHTTPServer} module defines the following class: \begin{classdesc}{SimpleHTTPRequestHandler}{request, client_address, server} This class is used, to serve files from current directory and below, directly mapping the directory structure to HTTP requests. A lot of the work is done by the base class \class{BaseHTTPServer.BaseHTTPRequestHandler}, such as parsing the request. This class implements the \function{do_GET()} and \function{do_HEAD()} functions. \end{classdesc} The \class{SimpleHTTPRequestHandler} defines the following member variables: \begin{memberdesc}{server_version} This will be \code{"SimpleHTTP/" + __version__}, where \code{__version__} is defined in the module. \end{memberdesc} \begin{memberdesc}{extensions_map} A dictionary mapping suffixes into MIME types. Default is signified by an empty string, and is considered to be \code{text/plain}. The mapping is used case-insensitively, and so should contain only lower-cased keys. \end{memberdesc} The \class{SimpleHTTPRequestHandler} defines the following methods: \begin{methoddesc}{do_HEAD}{} This method serves the \code{'HEAD'} request type: it sends the headers it would send for the equivalent \code{GET} request. See the \method{do_GET()} method for more complete explanation of the possible headers. \end{methoddesc} \begin{methoddesc}{do_GET}{} The request is mapped to a local file by interpreting the request as a path relative to the current working directory. If the request was mapped to a directory, a \code{403} respond is output, followed by the explanation \code{'Directory listing not supported'}. Any \exception{IOError} exception in opening the requested file, is mapped to a \code{404}, \code{'File not found'} error. Otherwise, the content type is guessed using the \var{extensions_map} variable. A \code{'Content-type:'} with the guessed content type is output, and then a blank line, signifying end of headers, and then the contents of the file. The file is always opened in binary mode. For example usage, see the implementation of the \function{test()} function. \end{methoddesc} \begin{seealso} \seemodule{BaseHTTPServer}{Base class implementation for Web server and request handler.} \end{seealso}