{% extends "frame.html" %} {% block body %}

The general form of a response is as follows:

code[MESSAGE]:[colon-separated list of features]

hVALUE=VALUE Set a header.
bVALUE Set the body. 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.
lVALUE A shortcut for setting the Location header. Equivalent to h"Location"=VALUE
dOFFSET Disconnect after OFFSET bytes.
pSECONDS,OFFSET Pause for SECONDS seconds after OFFSET bytes. SECONDS can be an integer or "f" to pause forever.
+./path/to/spec

OFFSET

Offsets are calculated relative to the base message, before any injections or other transforms are applied. They have 3 flavors:

VALUE

Literals

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'

Files

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"

Generated values

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:

ascii All ASCII characters
ascii_letters A-Za-z
ascii_lowercase a-z
ascii_uppercase A-Z
bytes All 256 byte values
digits 0-9
hexdigits 0-f
octdigits 0-8
punctuation
!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~
whitespace
\t\n\x0b\x0c\r and space
{% endblock %}