summaryrefslogtreecommitdiff
path: root/bs5/server/api/stream.ml
blob: 8bfaa865fff07943f253d18d47b46d11ba902d7d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
let streams =
  [
    Dream.post "/stream" (fun request ->
        let request_stream = Dream.body_stream request in

        Dream.stream
          ~headers:[ ("Content-Type", "application/octet-stream") ]
          (fun response_stream ->
            let rec loop () =
              match%lwt Dream.read request_stream with
              | None -> Dream.close response_stream
              | Some chunk ->
                  let%lwt () = Dream.write response_stream chunk in
                  let%lwt () = Dream.flush response_stream in
                  loop ()
            in
            loop ()));
  ]