Hcs.Plug.Compress

hcs · API reference

Response compression plug.

Compresses response bodies using gzip or zstd based on Accept-Encoding.

type encoding = 
  | Gzip
  | Zstd
  | Identity
val parse_accept_encoding : Server.request -> encoding list

Parse Accept-Encoding header into list of supported encodings

val response_body_string : Response.t -> string
val reader_of_body_stream : 
  (unit -> Cstruct.t option) ->
  Bytesrw.Bytes.Reader.t

Convert body stream to bytesrw reader

val body_stream_of_reader : Bytesrw.Bytes.Reader.t -> unit -> Cstruct.t option

Convert bytesrw reader to body stream

val gzip_compress : ?level:Bytesrw_zlib.level -> string -> string

Compress string with gzip

exception Decompressed_body_too_large
val reader_to_string_limited : 
  max_output_size:int ->
  Bytesrw.Bytes.Reader.t ->
  string
val gzip_decompress : string -> string

Decompress gzip string

val gzip_decompress_limited : max_output_size:int -> string -> string
val zstd_compress : ?level:Bytesrw_zstd.Cctx_params.clevel -> string -> string

Compress string with zstd

val zstd_decompress : string -> string

Decompress zstd string

val zstd_decompress_limited : max_output_size:int -> string -> string
val gzip_compress_stream : 
  ?level:Bytesrw_zlib.level ->
  (unit -> Cstruct.t option) ->
  unit ->
  Cstruct.t option

Compress stream with gzip

val gzip_decompress_stream : 
  (unit -> Cstruct.t option) ->
  unit ->
  Cstruct.t option

Decompress gzip stream

val zstd_compress_stream : 
  ?level:Bytesrw_zstd.Cctx_params.clevel ->
  (unit -> Cstruct.t option) ->
  unit ->
  Cstruct.t option

Compress stream with zstd

val zstd_decompress_stream : 
  (unit -> Cstruct.t option) ->
  unit ->
  Cstruct.t option

Decompress zstd stream

val select_encoding : encoding list -> encoding option

Select best encoding from accepted list (prefers zstd > gzip)

val accepts_gzip : Server.request -> bool

Check if request accepts gzip

val accepts_zstd : Server.request -> bool

Check if request accepts zstd

val get_content_encoding : Server.request -> encoding option

Get Content-Encoding from request headers

val is_event_stream : Response.t -> bool

Create response compression plug.

Compresses response bodies based on Accept-Encoding header.

parameter min_size Minimum body size to compress (default: 256) parameter level Compression level (default: 6)

val create : 
  ?min_size:int ->
  ?level:Bytesrw_zlib.level ->
  unit ->
  (Server.request -> Server.response) ->
  Server.request ->
  Server.response
val decompress_request : 
  ?max_output_size:int ->
  unit ->
  (Server.request -> Server.response) ->
  Server.request ->
  Server.response

Create request decompression plug.

Decompresses request bodies based on Content-Encoding header.