diff options
Diffstat (limited to 'lib/stream.ml')
-rw-r--r-- | lib/stream.ml | 7 |
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]. |