From 33208b87205e08b97af07ed6a55c999990a1b8dc Mon Sep 17 00:00:00 2001
From: Aldo Cortesi The general form of a response is as follows:
+ Language Spec
+ The mini-language at the heart of pathoc and pathod.
+
+Responses
+code[MESSAGE]:[colon-separated list of features]
| + hKEY=VALUE + | ++ Set a header. Both KEY and VALUE are full Value Specifiers. + | +
| + bVALUE + | ++ Set the body. VALUE is a Value + Specifier. When the body is set, pathod will + automatically set the appropriate Content-Length header. + | +
| + cVALUE + | +
+ A shortcut for setting the Content-Type header. Equivalent to:
+
+ h"Content-Type"=VALUE+ + |
+
| + iOFFSET,VALUE + | ++ Inject the specified value at the offset. OFFSET can be an + integer, or "r" to generate a random offset or "a" for an + offset just after all data has been sent. + | +
| + lVALUE + | +
+ A shortcut for setting the Location header. Equivalent to:
+
+ h"Location"=VALUE+ + |
+
| + dOFFSET + | ++ Disconnect after OFFSET bytes. The offset can also be "r", in which case pathod + will disconnect at a random point in the response. + | +
| + pSECONDS,OFFSET + | ++ Pause for SECONDS seconds after OFFSET bytes. SECONDS can also be "f" to pause + forever. OFFSET can also be "r" to generate a random offset, or "a" for an + offset just after all data has been sent. + | +
=./path/to/spec+ + +
Literal values are specified as a quoted strings:
+ +"foo"+ +
Either single or double quotes are accepted, and quotes can be escaped with + backslashes within the string:
+ +'fo\'o'+ +
Literal values can contain Python-style backslash escape sequences:
+ +'foo\r\nbar'+ + +
You can load a value from a specified file path. To do so, you have to specify + a _staticdir_ option to pathod on the command-line, like so:
+ +pathod -d ~/myassets+ +
All paths are relative paths under this directory. File loads are indicated by + starting the value specifier with the left angle bracket: + +
<my/path+ +
The path value can also be a quoted string, with the same syntax as literals:
+ +<"my/path"+ + +
An @-symbol lead-in specifies that generated data should be used. There are two + components to a generator specification - a size, and a data type. By default + pathod assumes a data type of "bytes".
+ +Here's a value specifier for generating 100 bytes: + +
@100+ +
You can use standard suffixes to indicate larger values. Here, for instance, is + a specifier for generating 100 megabytes:
+ +@100m+ +
Data is generated and served efficiently - if you really want to send a + terabyte of data to a client, pathod can do it. The supported suffixes are:
+ + +| b | 1024**0 (bytes) | +
| k | 1024**1 (kilobytes) | +
| m | 1024**2 (megabytes) | +
| g | 1024**3 (gigabytes) | +
| t | 1024**4 (terabytes) | +
Data types are separated from the size specification by a comma. This + specification generates 100mb of ASCII:
+ +@100m,ascii+ +
Supported data types are:
+ + +