Module Opium.Cookie

Cookie management for both requests and responses.

module Signer : sig ... end

Sign an unsign cookies with secret.

type header = string * string

A single header represented as a key-value pair.

type expires = [
| `Session
| `Max_age of int64
| `Date of Ptime.t
]

expires describes when a cookie will expire.

  • `Session - nothing will be set
  • `Max_age - Max-Age will be set with the number
  • `Date - Expires will be set with a date
type same_site = [
| `None
| `Strict
| `Lax
]
type value = string * string

The value of a cookie is a tuple of (name, value)

type t = {
expires : expires;
scope : Uri.t;
same_site : same_site;
secure : bool;
http_only : bool;
value : value;
}

Constructors

make

val make : ?⁠expires:expires -> ?⁠scope:Uri.t -> ?⁠same_site:same_site -> ?⁠secure:bool -> ?⁠http_only:bool -> ?⁠sign_with:Signer.t -> value -> t

make cookie creates a cookie with the key-value pair cookie

It will default to the following values:

Note that if no value is given for scope, the browsers might use a default value. For instance, if the cookie is set from the response of http://example.com/users/login and does not specify a scope, some browsers will use /users as a scope. If you want the cookie to be valid for every endpoint of your application, you need to use "/" as the scope of your cookie.

of_set_cookie_header ?signed_with ?origin header creates a cookie from a Set-Cookie header header.

If the header is not a valid Set-Cookie header, None is returned.

Encoders

to_set_cookie_header t creates an HTTP header for the cookie t.

to_cookie_header ?now ?elapsed ?scope cookies creates an HTTP header for the list of cookies cookies.

Decoders

cookie_of_header ?signed_with key header returns the value of a the cookie with the key key in the header header.

If the cookie with the key key does not exist, or if the header is not a valid Cookie header, None will be returned.

cookies_of_header

val cookies_of_header : ?⁠signed_with:Signer.t -> header -> value list

cookies_of_header ?signed_with header returns the list of cookie values in the header header.

If the header is not a valid Cookie header, an empty list is returned.

cookie_of_headers ?signed_with key headers returns the value of a the cookie with the key key in the headers headers.

If the cookie with the key key does not exist, or if no header is not a valid Cookie header, None will be returned.

cookies_of_headers

val cookies_of_headers : ?⁠signed_with:Signer.t -> header list -> value list

cookies_of_headers ?signed_with headers returns the list of cookie values in the headers headers.

If no header is not a valid Cookie header, an empty list is returned.

Utilities

sexp_of_t

val sexp_of_t : t -> Sexplib0.Sexp.t

sexp_of_t t converts the cookie t to an s-expression.

pp

val pp : Stdlib.Format.formatter -> t -> unit

pp formats the cookie t as an s-expression.