diff options
author | Clombrong <cromblong@egregore.fun> | 2025-06-24 16:12:14 +0200 |
---|---|---|
committer | Clombrong <cromblong@egregore.fun> | 2025-06-24 16:16:36 +0200 |
commit | ebb9d672d8078672b29414f4ecdaa173a29297c3 (patch) | |
tree | c358373784177f8f355be9a0fb3534ed49ceee87 /lib/stream.ml | |
parent | b799fe00791a5b76fe32c81a17a00aa144aa19c6 (diff) |
feat(stream): add function get for xml elements
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]. |