diff options
author | Moonchild <moonchild@palemoon.org> | 2021-02-25 01:03:57 +0000 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2021-02-25 01:03:57 +0000 |
commit | ceadffab6b357723981a429e11222daf6cd6dcfb (patch) | |
tree | 5603053048d6a460f79b22bdf165fb74d32d39b0 /testing/web-platform/tests/tools/wptserve/docs/pipes.rst | |
parent | 14fb2f966e9b54598c451e3cb35b4aa0480dafed (diff) | |
parent | ad5a13bd501e379517da1a944c104a11d951a3f5 (diff) | |
download | UXP-RC_20210225.tar UXP-RC_20210225.tar.gz UXP-RC_20210225.tar.lz UXP-RC_20210225.tar.xz UXP-RC_20210225.zip |
Merge branch 'master' into releaseRC_20210225
Diffstat (limited to 'testing/web-platform/tests/tools/wptserve/docs/pipes.rst')
-rw-r--r-- | testing/web-platform/tests/tools/wptserve/docs/pipes.rst | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/testing/web-platform/tests/tools/wptserve/docs/pipes.rst b/testing/web-platform/tests/tools/wptserve/docs/pipes.rst deleted file mode 100644 index c606140d4..000000000 --- a/testing/web-platform/tests/tools/wptserve/docs/pipes.rst +++ /dev/null @@ -1,157 +0,0 @@ -Pipes -====== - -Pipes are functions that may be used when serving files to alter parts -of the response. These are invoked by adding a pipe= query parameter -taking a | separated list of pipe functions and parameters. The pipe -functions are applied to the response from left to right. For example:: - - GET /sample.txt?pipe=slice(1,200)|status(404). - -This would serve bytes 1 to 199, inclusive, of foo.txt with the HTTP status -code 404. - -There are several built-in pipe functions, and it is possible to add -more using the `@pipe` decorator on a function, if required. - -.. note:: - Because of the way pipes compose, using some pipe functions prevents the - content-length of the response from being known in advance. In these cases - the server will close the connection to indicate the end of the response, - preventing the use of HTTP 1.1 keepalive. - -Built-In Pipes --------------- - -sub -~~~ - -Used to substitute variables from the server environment, or from the -request into the response. - -Substitutions are marked in a file using a block delimited by `{{` -and `}}`. Inside the block the following variables are available: - - `{{host}}` - The host name of the server excluding any subdomain part. - - `{{domains[]}}` - The domain name of a particular subdomain - e.g. `{{domains[www]}}` for the `www` subdomain. - - `{{ports[][]}}` - The port number of servers, by protocol - e.g. `{{ports[http][0]}}` for the first (and, depending on setup, - possibly only) http server - - `{{headers[]}}` - The HTTP headers in the request - e.g. `{{headers[X-Test]}}` for a hypothetical `X-Test` header. - - `{{GET[]}}` - The query parameters for the request - e.g. `{{GET[id]}}` for an id parameter sent with the request. - -So, for example, to write a javascript file called `xhr.js` that -depends on the host name of the server, without hardcoding, one might -write:: - - var server_url = http://{{host}}:{{ports[http][0]}}/path/to/resource; - //Create the actual XHR and so on - -The file would then be included as: - - <script src="xhr.js?pipe=sub"></script> - -This pipe can also be enabled by using a filename `*.sub.ext`, e.g. the file above could be called `xhr.sub.js`. - -status -~~~~~~ - -Used to set the HTTP status of the response, for example:: - - example.js?pipe=status(410) - -headers -~~~~~~~ - -Used to add or replace http headers in the response. Takes two or -three arguments; the header name, the header value and whether to -append the header rather than replace an existing header (default: -False). So, for example, a request for:: - - example.html?pipe=header(Content-Type,text/plain) - -causes example.html to be returned with a text/plain content type -whereas:: - - example.html?pipe=header(Content-Type,text/plain,True) - -Will cause example.html to be returned with both text/html and -text/plain content-type headers. - -slice -~~~~~ - -Used to send only part of a response body. Takes the start and, -optionally, end bytes as arguments, although either can be null to -indicate the start or end of the file, respectively. So for example:: - - example.txt?pipe=slice(10,20) - -Would result in a response with a body containing 10 bytes of -example.txt including byte 10 but excluding byte 20. - -:: - - example.txt?pipe=slice(10) - -Would cause all bytes from byte 10 of example.txt to be sent, but:: - - example.txt?pipe=slice(null,20) - -Would send the first 20 bytes of example.txt. - -trickle -~~~~~~~ - -.. note:: - Using this function will force a connection close. - -Used to send the body of a response in chunks with delays. Takes a -single argument that is a microsyntax consisting of colon-separated -commands. There are three types of commands: - -* Bare numbers represent a number of bytes to send - -* Numbers prefixed `d` indicate a delay in seconds - -* Numbers prefixed `r` must only appear at the end of the command, and - indicate that the preceding N items must be repeated until there is - no more content to send. The number of items to repeat must be even. - -In the absence of a repetition command, the entire remainder of the content is -sent at once when the command list is exhausted. So for example:: - - example.txt?pipe=trickle(d1) - -causes a 1s delay before sending the entirety of example.txt. - -:: - - example.txt?pipe=trickle(100:d1) - -causes 100 bytes of example.txt to be sent, followed by a 1s delay, -and then the remainder of the file to be sent. On the other hand:: - - example.txt?pipe=trickle(100:d1:r2) - -Will cause the file to be sent in 100 byte chunks separated by a 1s -delay until the whole content has been sent. - - -:mod:`Interface <pipes>` ------------------------- - -.. automodule:: wptserve.pipes - :members: |