Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/avsm/httpz/llms.txt

Use this file to discover all available pages before exploring further.

The Header_name module provides an enumeration of common HTTP headers for efficient header name comparison and processing. Unknown headers are represented as Other with the actual name stored in the header’s name_span field.

Type Definition

t
variant
HTTP header name enumeration.
Cache_control
variant
Cache-Control header
Connection
variant
Connection header
Date
variant
Date header
Transfer_encoding
variant
Transfer-Encoding header
Upgrade
variant
Upgrade header
Via
variant
Via header
Accept
variant
Accept header
Accept_charset
variant
Accept-Charset header
Accept_encoding
variant
Accept-Encoding header
Accept_language
variant
Accept-Language header
Accept_ranges
variant
Accept-Ranges header
Authorization
variant
Authorization header
Cookie header
Expect
variant
Expect header
Host
variant
Host header
If_match
variant
If-Match header
If_modified_since
variant
If-Modified-Since header
If_none_match
variant
If-None-Match header
If_range
variant
If-Range header
If_unmodified_since
variant
If-Unmodified-Since header
Range
variant
Range header
Referer
variant
Referer header
User_agent
variant
User-Agent header
Age
variant
Age header
Etag
variant
ETag header
Location
variant
Location header
Retry_after
variant
Retry-After header
Server
variant
Server header
Set-Cookie header
Www_authenticate
variant
WWW-Authenticate header
Allow
variant
Allow header
Content_disposition
variant
Content-Disposition header
Content_encoding
variant
Content-Encoding header
Content_language
variant
Content-Language header
Content_length
variant
Content-Length header
Content_location
variant
Content-Location header
Content_range
variant
Content-Range header
Content_type
variant
Content-Type header
Expires
variant
Expires header
Last_modified
variant
Last-Modified header
X_forwarded_for
variant
X-Forwarded-For header
X_forwarded_proto
variant
X-Forwarded-Proto header
X_forwarded_host
variant
X-Forwarded-Host header
X_request_id
variant
X-Request-Id header
X_correlation_id
variant
X-Correlation-Id header
Other
variant
Unknown header; the actual name is stored in the header’s name_span field

Parsing

of_span

val of_span : local_ Base_bigstring.t -> Span.t -> t
Parse header name from span. Returns a known header variant if recognized, otherwise Other.
buf
local_ Base_bigstring.t
required
The buffer containing the header name
span
Span.t
required
The span representing the header name in the buffer
Example:
let name = Header_name.of_span buffer header.name_span in
match name with
| Content_type -> (* Handle Content-Type *)
  ...
| Host -> (* Handle Host *)
  ...
| Other -> (* Handle unknown header *)
  let name_str = Span.to_string buffer header.name_span in
  ...

Conversion Functions

canonical

val canonical : t -> string
Canonical display name for known headers. Returns "(unknown)" for Other. Use this for response writing when you don’t need buffer access.
header_name
t
required
The header name to convert
Example:
let display_name = Header_name.canonical Content_type in
(* Returns: "Content-Type" *)

let unknown = Header_name.canonical Other in
(* Returns: "(unknown)" *)

to_string

val to_string : local_ Base_bigstring.t -> t -> string
Deprecated: Use canonical instead - the buffer parameter is unused.
Canonical display name for headers. Returns "(unknown)" for Other.
buf
local_ Base_bigstring.t
required
Buffer parameter (unused)
header_name
t
required
The header name to convert

lowercase

val lowercase : t -> string
Lowercase canonical name for known headers. Returns "" for Other.
header_name
t
required
The header name to convert
Example:
let lower = Header_name.lowercase Content_type in
(* Returns: "content-type" *)

let unknown = Header_name.lowercase Other in
(* Returns: "" *)

Pretty Printing

pp

val pp : Stdlib.Format.formatter -> t -> unit
Pretty-print header name.
formatter
Stdlib.Format.formatter
required
The formatter to print to
header_name
t
required
The header name to print
Example:
Format.printf "Header: %a@." Header_name.pp Content_type
(* Output: Header: Content-Type *)

Usage Examples

Processing Headers by Type

let process_header buffer header =
  let name = Header_name.of_span buffer header.name_span in
  match name with
  | Content_length ->
    let length = Span.parse_int64 buffer header.value_span in
    (* Handle content length *)
    ...
  | Content_type ->
    let mime = Span.to_string buffer header.value_span in
    (* Handle content type *)
    ...
  | Host ->
    (* Handle host header *)
    ...
  | Other ->
    (* Handle custom headers *)
    let name = Span.to_string buffer header.name_span in
    let value = Span.to_string buffer header.value_span in
    ...

Writing Response Headers

let write_header name value =
  let canonical_name = Header_name.canonical name in
  Printf.sprintf "%s: %s\r\n" canonical_name value