Source file dream.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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
(* 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 Method_and_status =
struct
  include Dream__pure.Method
  include Dream__pure.Status
end

include Dream__pure.Inmost

(* Eliminate optional arguments from the public interface for now. *)
let next ~buffer ~close ~exn request =
  next ~buffer ~close ~exn request

include Dream__middleware.Log
include Dream__middleware.Echo

let logger =
  Dream__middleware.Log.logger

let default_log =
  Dream__middleware.Log.sub_log (Logs.Src.name Logs.default)

let error = default_log.error
let warning = default_log.warning
let info = default_log.info
let debug = default_log.debug

include Dream__middleware.Router
include Dream__middleware.Static

include Dream__middleware.Session
let sql_sessions = Dream__sql.Session.middleware

include Dream__middleware.Origin_referer_check
include Dream__middleware.Form
include Dream__middleware.Upload
include Dream__middleware.Csrf

let content_length =
  Dream__middleware.Content_length.content_length

include Dream__graphql.Graphql
include Dream__sql.Sql

include Dream__middleware.Error
include Dream__http.Http

include Dream__middleware.Lowercase_headers
include Dream__middleware.Catch
include Dream__middleware.Request_id
include Dream__middleware.Site_prefix

let error_template =
  Dream__http.Error_handler.customize

let random =
  Dream__cipher.Random.random

include Dream__pure.Formats

let test ?(prefix = "") handler request =
  let app =
    content_length
    @@ assign_request_id
    @@ chop_site_prefix prefix
    @@ handler
  in

  Lwt_main.run (app request)

let log =
  Dream__middleware.Log.convenience_log

include Dream__middleware.Tag