rfc-http-validate
- Installation
- Validating HTTP Messages in Markdown
- Validating HTTP Messages in RFC XML
- Configuring Structured Type Information for Fields
- Use with I-D-Template
This is a simple script to validate HTTP messages (possibly containing Structured Fields) in xml2rfcv3 documents and kramdown-rfc documents.
It checks that the content of an HTTP message:
- Optionally, starts with a valid HTTP/1.1 request or status line
- Has one or more HTTP/1.1 header field lines, possibly with line folding (so that long lines can be formatted within the constraints of the RFC format)
- Optionally, has a response body, separated from the header fields with a single empty line
The start line will be checked that the method or status code is reasonable, and that the version identifier HTTP/1.1 is correct. The URL in requests will not be validated, however.
Header fields will be validated for general syntax. Additionally, header field names that are configured with structured type information (see below) will be validated according to that type.
The body, if present, is currently ignored (i.e., the Content-Length is not checked).
If an RFC8792 \\ wrapping header is present, lines will be unwrapped first (i.e., before unfolding, as per above). This is useful for long lines with binary content (which cannot contain whitespace); e.g.,
<sourcecode type="http-message">
# NOTE: '\' line wrapping per RFC 8792
Signature: sig1=:K2qGT5srn2OGbOIDzQ6kYT+ruaycnDAAUpKv+ePFfD0RAxn/1BUe\
Zx/Kdrq32DrfakQ6bPsvB9aqZqognNT6be4olHROIkeV879RrsrObury8L9SCEibe\
oHyqU/yCjphSmEdd7WD+zrchK57quskKwRefy2iEC5S2uAH0EPyOZKWlvbKmKu5q4\
CaB8X/I5/+HLZLGvDiezqi6/7p2Gngf5hwZ0lSdy39vyNMaaAT0tKo6nuVw0S1MVg\
1Q7MpWYZs0soHjttq0uLIA3DIbQfLiIvK6/l0BdWTU7+2uQj7lBkQAsFZHoA96ZZg\
FquQrXRlmYOh+Hx5D9fJkXcXe5tmAg==:
</sourcecode>
Installation
pipx is recommended:
pipx install rfc-http-validate
Validating HTTP Messages in Markdown
In Markdown, all you need to do is adorn your messages with http-messsage; for example:
~~~ http-message
HTTP/1.1 200 OK
Foo: bar, baz
~~~
Then, run:
rfc-http-validate my-draft.md
Validating HTTP Messages in RFC XML
In XML, this script examines all sourcecode and artwork elements; when one has a type of
http-message.
For example,
<sourcecode type="http-message">
Foo: bar; baz
Foo: one,
two
</sourcecode>
Then, run:
rfc-http-validate my-draft.xml
Note that in your XML, there must not be any whitespace at the start of lines, unless they're continuation of previous lines (folding, as seen above).
Configuring Structured Type Information for Fields
By default, the types of existing Structured Fields (including those that are compatible with Structured Fields; see Retrofit Structured Fields for HTTP) are known. Type information for other fields can be added on the command line or through a file.
To pass a type on the command line, use the --list, --dictionary or --item arguments as appropriate, followed by the field name. For example:
rfc-http-validate --list Foo --list Bar --item Baz my_draft.xml
Here, Foo and Bar will be validated as Structured Lists, while Baz will be validated as a Structured Item.
Alternatively, you can collect this information in a JSON file, with the top-level object keys being field names, and their values being list, dict or item as appropriate. Thus, the configuration in the example above could be expressed in a JSON file sf.json as:
{
"Foo": "list",
"Bar": "list",
"Baz": "item"
}
... and passed to the script like this:
rfc-http-validate --map sf.json my_draft.xml
Use with I-D-Template
To automatically lint files with MT's I-D-Template:
- Add
rfc-http-validatetorequirements.txt(creating it if necessary) - Add a
sf.jsonfile containing the field(s) your draft uses mapped to one ofitem,list, ordict - Add the following to
Makefile:
lint:: http-lint
rfc-http-validate ?= rfc-http-validate
.SECONDARY: $(drafts_xml)
.PHONY: http-lint
http-lint: $(addsuffix .http-lint.txt,$(addprefix .,$(drafts)))
.PHONY: .%.http-lint.txt
.%.http-lint.txt: %.xml $(DEPS_FILES)
$(trace) $< -s http-lint $(rfc-http-validate) -q -m sf.json $<
@touch $@
Release files for rfc-http-validate 0.3.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rfc_http_validate-0.3.6.tar.gz | 12.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rfc_http_validate-0.3.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.5 kB
Release files / rfc_http_validate-0.3.6.tar.gz
| Download URL | rfc_http_validate-0.3.6.tar.gz |
|---|---|
| Size | 12.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
51b8b874b50a432f26d23954792bae3b2388128c6f3607ae29c867a9c64bae6b
|
|
BLAKE2b-256 checksum How to use checksums |
b29c0faee8d1d6ed5dead57e3ac6a625cfd9426733738447578aba3f457234d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 19, 2026.
Transparency logRelease files / rfc_http_validate-0.3.6-py3-none-any.whl
| Download URL | rfc_http_validate-0.3.6-py3-none-any.whl |
|---|---|
| Size | 10.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c7028991f21deab9bdd91ec0912a04f056d6c2044fe947b34170f0dc8d2d3011
|
|
BLAKE2b-256 checksum How to use checksums |
fda60d23e71d419c1a509a576d2adb56d29f4eeaa10e7b26f9f03d1f11be4538
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 19, 2026.
Transparency log