diff options
author | Clombrong <cromblong@egregore.fun> | 2025-06-18 21:56:11 +0200 |
---|---|---|
committer | Clombrong <cromblong@egregore.fun> | 2025-06-18 21:56:29 +0200 |
commit | bdf6f81078dea3babcdf746f9717a3efa53abf8f (patch) | |
tree | d2340636b35c364645aa7b33b9887b5d95d74178 /lib | |
parent | 77ba1edd65af014989fc52d42718370d42932427 (diff) |
refactor(stream): move auth_mecchanism from sasl to stream
Diffstat (limited to 'lib')
-rw-r--r-- | lib/sasl.ml | 9 | ||||
-rw-r--r-- | lib/stream.ml | 2 |
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].*) |