aboutsummaryrefslogtreecommitdiff
path: root/portal/lib/ws/portal.ml
diff options
context:
space:
mode:
authorClombrong <cromblong@egregore.fun>2025-06-03 02:19:13 +0200
committerClombrong <cromblong@egregore.fun>2025-06-03 02:19:13 +0200
commit52cc186949f0bf94336a7f81dec4f7dee13782ab (patch)
tree82e870abbd19cec4ee554b024a6714f57478579d /portal/lib/ws/portal.ml
parenta55848c1bf6d79a83dbfbf91ec1faa0953e27780 (diff)
fix(open_stanza): use Markup.ml to construct the default open stanza
Diffstat (limited to 'portal/lib/ws/portal.ml')
-rw-r--r--portal/lib/ws/portal.ml21
1 files changed, 14 insertions, 7 deletions
diff --git a/portal/lib/ws/portal.ml b/portal/lib/ws/portal.ml
index f5491ca..e0c76b4 100644
--- a/portal/lib/ws/portal.ml
+++ b/portal/lib/ws/portal.ml
@@ -14,13 +14,20 @@ let stanza_open ?from domain =
If [from] is specified, the <open /> stanza has the from parameter.
*)
- Printf.sprintf
- {|<open xmlns="urn:ietf:params:xml:ns:xmpp-framing"
- to="%s"
- %s
- version="1.0" />|}
- domain
- (Option.fold ~none:"" ~some:(fun jid -> {|from="|} ^ jid ^ {|"|}) from)
+ let open Markup in
+ let stanza =
+ let attributes =
+ let open Option in
+ [(("", "xmlns"), "urn:ietf:params:xml:ns:xmpp-framing");
+ (("", "to"), domain)]
+ @ (map (fun jid -> (("", "from"), jid)) from |> to_list)
+ @ [(("", "version"), "1.0")]
+ in
+ [`Start_element
+ (("urn:ietf:params:xml:ns:xmpp-framing", "open"),
+ attributes);
+ `End_element]
+ in stanza |> of_list |> write_xml |> to_string
let stanza_close = {|<close xmlns="urn:ietf:params:xml:ns:xmpp-framing" />|}