aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorClombrong <cromblong@egregore.fun>2025-06-18 21:56:11 +0200
committerClombrong <cromblong@egregore.fun>2025-06-18 21:56:29 +0200
commitbdf6f81078dea3babcdf746f9717a3efa53abf8f (patch)
treed2340636b35c364645aa7b33b9887b5d95d74178 /lib
parent77ba1edd65af014989fc52d42718370d42932427 (diff)
refactor(stream): move auth_mecchanism from sasl to stream
Diffstat (limited to 'lib')
-rw-r--r--lib/sasl.ml9
-rw-r--r--lib/stream.ml2
2 files changed, 6 insertions, 5 deletions
diff --git a/lib/sasl.ml b/lib/sasl.ml
index 608d6fd..edab467 100644
--- a/lib/sasl.ml
+++ b/lib/sasl.ml
@@ -1,6 +1,5 @@
open Lwt.Syntax
-
-type auth_mechanism = PLAIN [@@deriving show { with_path = false }]
+open Stream
type auth_config = {
jid : string;
@@ -35,11 +34,11 @@ let send_auth_stanza (stream, push) localpart pass mechanism =
in
let parse_sasl_error = function
| `Start_element ((_, error), _) :: `End_element :: rest -> (read_sasl_error error, parse_descriptive_text rest)
- | _ -> raise (Stream.InvalidStanza (stanza |> of_list |> write_xml |> to_string))
+ | _ -> raise (InvalidStanza string_stanza)
in match stanza with
| `Start_element ((_, "success"), _) :: rest -> Ok (parse_additional_info rest)
| `Start_element ((_, "failure"), _) :: rest -> Error (parse_sasl_error rest)
- | _ -> raise (Stream.InvalidStanza string_stanza)
+ | _ -> raise (InvalidStanza string_stanza)
in let xmlns = "urn:ietf:params:xml:ns:xmpp-sasl" in
let stanza_list = [`Start_element
((xmlns, "auth"),
@@ -48,7 +47,7 @@ let send_auth_stanza (stream, push) localpart pass mechanism =
`Text [gen_auth mechanism];
`End_element]
in Some (Markup.of_list stanza_list) |> push;
- let* response = Stream.get stream
+ let* response = get stream
in try Markup.to_list response |> parse_sasl_response |> Lwt.return
with exn -> Lwt.fail exn
diff --git a/lib/stream.ml b/lib/stream.ml
index dff2b0e..5743318 100644
--- a/lib/stream.ml
+++ b/lib/stream.ml
@@ -4,6 +4,8 @@ open Markup
exception ClosedStream
exception InvalidStanza of string
+type auth_mechanism = PLAIN [@@deriving show { with_path = false }]
+
let get (stream : (signal, async) stream) : (signal, sync) stream Lwt.t =
(** [stanza stream] is a promise containing a full stanza of the fragments of [stream].*)