Name Description Size
__init__.py 158
config.py wptserve configuration data Immutable configuration that's safe to be passed between processes. Inherits from Mapping for backwards compatibility with the old dict-based config :param data: - Extra configuration data 11340
constants.py 4022
handlers.py <!doctype html> <meta name="viewport" content="width=device-width"> <title>Directory listing for %(path)s</title> <h1>Directory listing for %(path)s</h1> <ul> %(items)s </ul> 19390
logger.py 109
pipes.py Alter the status code. :param code: Status code to use for the response. 18908
ranges.py 3166
request.py Data about the server environment .. attribute:: config Environment configuration information with information about the various servers running, their hostnames and ports. .. attribute:: stash Stash object holding state stored on the server between requests. 20731
response.py Object representing the response to a HTTP request :param handler: RequestHandler being used for this response :param request: Request that this is the response for .. attribute:: request Request associated with this Response. .. attribute:: encoding The encoding to use when converting unicode to strings for output. .. attribute:: add_required_headers Boolean indicating whether mandatory headers should be added to the response. .. attribute:: send_body_for_head_request Boolean, default False, indicating whether the body content should be sent when the request method is HEAD. .. attribute:: writer The ResponseWriter for this response .. attribute:: status Status tuple (code, message). Can be set to an integer in which case the message part is filled in automatically, or a tuple (code, message) in which case code is an int and message is a text or binary string. .. attribute:: headers List of HTTP headers to send with the response. Each item in the list is a tuple of (name, value). .. attribute:: content The body of the response. This can either be a string or a iterable of response parts. If it is an iterable, any item may be a string or a function of zero parameters which, when called, returns a string. 31447
router.py tokens: / or literal or match or * 6370
routes.py 230
server.py HTTP server designed for testing purposes. The server is designed to provide flexibility in the way that requests are handled, and to provide control both of exactly what bytes are put on the wire for the response, and in the timing of sending those bytes. The server is based on the stdlib HTTPServer, but with some notable differences in the way that requests are processed. Overall processing is handled by a WebTestRequestHandler, which is a subclass of BaseHTTPRequestHandler. This is responsible for parsing the incoming request. A RequestRewriter is then applied and may change the request data if it matches a supplied rule. Once the request data had been finalised, Request and Response objects are constructed. These are used by the other parts of the system to read information about the request and manipulate the response. Each request is handled by a particular handler function. The mapping between Request and the appropriate handler is determined by a Router. By default handlers are installed to interpret files under the document root with .py extensions as executable python files (see handlers.py for the api for such files), .asis files as bytestreams to be sent literally and all other files to be served statically. The handler functions are responsible for either populating the fields of the response object, which will then be written when the handler returns, or for directly writing to the output stream. 36896
sslutils
stash.py Key-value store for persisting data across HTTP/S and WS/S requests. This data store is specifically designed for persisting data across server requests. The synchronization is achieved by using the BaseManager from the multiprocessing module so different processes can acccess the same data. Stash can be used interchangeably between HTTP, HTTPS, WS and WSS servers. A thing to note about WS/S servers is that they require additional steps in the handlers for accessing the same underlying shared data in the Stash. This can usually be achieved by using load_env_config(). When using Stash interchangeably between HTTP/S and WS/S request, the path part of the key should be expliclitly specified if accessing the same key/value subset. The store has several unusual properties. Keys are of the form (path, uuid), where path is, by default, the path in the HTTP request and uuid is a unique id. In addition, the store is write-once, read-once, i.e. the value associated with a particular key cannot be changed once written and the read operation (called "take") is destructive. Taken together, these properties make it difficult for data to accidentally leak between different resources or different requests for the same resource. 8176
utils.py Decodes a binary string into a text string using iso-8859-1. Returns `str`. The function is a no-op if the argument already has a text type. iso-8859-1 is chosen because it is an 8-bit encoding whose code points range from 0x0 to 0xFF and the values are the same as the binary representations, so any binary string can be decoded into and encoded from iso-8859-1 without any errors or data loss. Python 3 also uses iso-8859-1 (or latin-1) extensively in http: https://github.com/python/cpython/blob/273fc220b25933e443c82af6888eb1871d032fb8/Lib/http/client.py#L213 5930
wptserve.py 1160
ws_h2_handshake.py This file provides the opening handshake processor for the Bootstrapping WebSockets with HTTP/2 protocol (RFC 8441). Specification: https://tools.ietf.org/html/rfc8441 2443