Pipes¶
Interface
¶
-
wptserve.pipes.
gzip
(request, response)¶ This pipe gzip-encodes response data.
It sets (or overwrites) these HTTP headers: Content-Encoding is set to gzip Content-Length is set to the length of the compressed content
-
wptserve.pipes.
header
(request, response, name, value, append=False)¶ Set a HTTP header.
Replaces any existing HTTP header of the same name unless append is set, in which case the header is appended without replacement.
Parameters: - name – Name of the header to set.
- value – Value to use for the header.
- append – True if existing headers should not be replaced
-
wptserve.pipes.
slice
(request, response, start, end=None)¶ Send a byte range of the response body
Parameters: - start – The starting offset. Follows python semantics including negative numbers.
- end – The ending offset, again with python semantics and None (spelled “null” in a query string) to indicate the end of the file.
-
wptserve.pipes.
status
(request, response, code)¶ Alter the status code.
Parameters: code – Status code to use for the response.
-
wptserve.pipes.
sub
(request, response, escape_type='html')¶ Substitute environment information about the server and request into the script.
Parameters: escape_type – String detailing the type of escaping to use. Known values are “html” and “none”, with “html” the default for historic reasons. The format is a very limited template language. Substitutions are enclosed by {{ and }}. There are several available substitutions:
- host
- A simple string value and represents the primary host from which the tests are being run.
- domains
- A dictionary of available domains indexed by subdomain name.
- ports
- A dictionary of lists of ports indexed by protocol.
- location
- A dictionary of parts of the request URL. Valid keys are ‘server, ‘scheme’, ‘host’, ‘hostname’, ‘port’, ‘path’ and ‘query’. ‘server’ is scheme://host:port, ‘host’ is hostname:port, and query includes the leading ‘?’, but other delimiters are omitted.
- headers
- A dictionary of HTTP headers in the request.
- header_or_default(header, default)
The value of an HTTP header, or a default value if it is absent. For example:
{{header_or_default(X-Test, test-header-absent)}}
- GET
- A dictionary of query parameters supplied with the request.
- uuid()
- A pesudo-random UUID suitable for usage with stash
- file_hash(algorithm, filepath)
The cryptographic hash of a file. Supported algorithms: md5, sha1, sha224, sha256, sha384, and sha512. For example:
{{file_hash(md5, dom/interfaces.html)}}
- fs_path(filepath)
- The absolute path to a file inside the wpt document root
So for example in a setup running on localhost with a www subdomain and a http server on ports 80 and 81:
{{host}} => localhost {{domains[www]}} => www.localhost {{ports[http][1]}} => 81
It is also possible to assign a value to a variable name, which must start with the $ character, using the “:” syntax e.g.:
{{$id:uuid()}}
Later substitutions in the same file may then refer to the variable by name e.g.:
{{$id}}
-
wptserve.pipes.
trickle
(request, response, delays)¶ Send the response in parts, with time delays.
Parameters: delays – A string of delays and amounts, in bytes, of the response to send. Each component is separated by a colon. Amounts in bytes are plain integers, whilst delays are floats prefixed with a single d e.g. d1:100:d2 Would cause a 1 second delay, would then send 100 bytes of the file, and then cause a 2 second delay, before sending the remainder of the file.
If the last token is of the form rN, instead of sending the remainder of the file, the previous N instructions will be repeated until the whole file has been sent e.g. d1:100:d2:r2 Causes a delay of 1s, then 100 bytes to be sent, then a 2s delay and then a further 100 bytes followed by a two second delay until the response has been fully sent.