package cohttp

  1. Overview
  2. Docs

Read and write the HTTP/1.1 transfer-encoding formats. Currently supported are chunked and content-length.

type encoding =
  1. | Chunked
    (*

    dynamic chunked encoding

    *)
  2. | Fixed of int64
    (*

    fixed size content

    *)
  3. | Unknown
    (*

    unknown body size, which leads to best-effort

    *)

The encoding format detected from the transfer-encoding and content-length headers

val encoding_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> encoding
val sexp_of_encoding : encoding -> Ppx_sexp_conv_lib.Sexp.t
type chunk =
  1. | Chunk of string
    (*

    chunk of data and not the end of stream

    *)
  2. | Final_chunk of string
    (*

    the last chunk of data, so no more should be read

    *)
  3. | Done
    (*

    no more body data is present

    *)

A chunk of body that also signals if there to more to arrive

val chunk_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> chunk
val sexp_of_chunk : chunk -> Ppx_sexp_conv_lib.Sexp.t
val string_of_encoding : encoding -> string

Convert the encoding format to a human-readable string

val has_body : encoding -> [ `No | `Unknown | `Yes ]

has_body encoding returns the appropriate variant that indicates whether the HTTP request or response has an associated body. It does not guess: instead Unknown is returned if there is no explicit association.