From ed1c949226c30fad7170b66641ae48fc13159507 Mon Sep 17 00:00:00 2001 From: Anton Bachin Date: Sat, 11 Dec 2021 23:40:21 +0300 Subject: [PATCH] Add Dream.with_client_stream Primarily useful for the client, so it should be moved to dream-core in the future. Will also be useful for stream-transforming middlewares. --- src/dream.mli | 2 ++ src/pure/inmost.ml | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/dream.mli b/src/dream.mli index 1a813044..103e337c 100644 --- a/src/dream.mli +++ b/src/dream.mli @@ -733,6 +733,8 @@ val server_stream : 'a message -> stream val client_stream : 'a message -> stream (* TODO Document that this is for middlewares that are transforming a response stream or a WebSocket. *) +val with_client_stream : stream -> 'a message -> 'a message +(* TODO Normalize with with_stream, or add a separate with_server_stream. *) (* TODO Probably even close can be made optional. exn can be made optional. *) (* TODO Argument order? *) diff --git a/src/pure/inmost.ml b/src/pure/inmost.ml index 54984386..b76951fd 100644 --- a/src/pure/inmost.ml +++ b/src/pure/inmost.ml @@ -298,6 +298,9 @@ let client_stream message = let server_stream message = message.server_stream +let with_client_stream client_stream message = + update {message with client_stream} + (* TODO Pending the dream.mli interface reorganization for the new stream API. *) let next = @@ -499,8 +502,8 @@ let request upload = initial_multipart_state (); }; headers; - client_stream = Stream.(stream (string body) no_writer); - server_stream = Stream.(stream no_reader no_writer); + client_stream = Stream.(stream no_reader no_writer); + server_stream = Stream.(stream (string body) no_writer); locals = Scope.empty; first = request; last = ref request;