summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/stream.ml7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/stream.ml b/lib/stream.ml
index 0d182bb..4781161 100644
--- a/lib/stream.ml
+++ b/lib/stream.ml
@@ -30,6 +30,13 @@ let next (stream : (signal, async) stream) : (signal, sync) stream Lwt.t =
in ([fragment], if depth = 0 then None else Some depth)
in transform traverse_stanza 0 stream |> Markup_lwt.load
+let get (stream : (signal, async) stream) : Xml.element Lwt.t =
+ (** [get stream] is a promise containing a single Xml element of [stream]. *)
+ let* signal = next stream
+ in match Xml.tree signal with
+ | Some xml -> Lwt.return xml
+ | None -> Lwt.fail (InvalidStanza (signal |> write_xml |> to_string))
+
let start domain : Portal.t Lwt.t =
(** [start domain] is a promise containing a Portal (stream * push) connected to the
XMPP server [domain].