package dream

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file lowercase_headers.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
(* This file is part of Dream, released under the MIT license. See
   LICENSE.md for details, or visit https://github.com/aantron/dream.

   Copyright 2021 Anton Bachin *)



module Dream = Dream__pure.Inmost



(* TODO This middleware might need to be applied right in the h2 adapter,
   because error handlers might generate headers that cannot be rewritten
   inside the normal stack. *)
(* TODO This can be optimized not to convert a header if it is already
   lowercase. Another option is to use memoization to reduce GC pressure. *)
let lowercase_headers inner_handler request =
  if fst (Dream.version request) = 1 then
    inner_handler request
  else
    let%lwt response = inner_handler request in
    response
    |> Dream.all_headers
    |> List.map (fun (name, value) -> String.lowercase_ascii name, value)
    |> fun headers -> Dream.with_all_headers headers response
    |> Lwt.return
OCaml

Innovation. Community. Security.