From 5d31409b2e1a3624b23e894b606c1412546fc5ee Mon Sep 17 00:00:00 2001 From: Clombrong Date: Thu, 14 Aug 2025 23:01:59 +0200 Subject: feat!: use new opaque domain type in code --- lib/jid.ml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'lib/jid.ml') diff --git a/lib/jid.ml b/lib/jid.ml index 2f071b9..9a1ec9d 100644 --- a/lib/jid.ml +++ b/lib/jid.ml @@ -1,7 +1,7 @@ (** An XMPP JID. If there is no localpart or resourcepart, they're [None]. *) type t = { localpart : string option; - domainpart : string; + domainpart : Portal.domain; resourcepart : string option; } @@ -65,6 +65,7 @@ let of_string (jid : string) : t = begin let b = (value ~default:0 domain_begin) in sub jid b ((value ~default:(length jid) domain_end) - b) + |> Portal.domain_of_string end; resourcepart = map (fun i -> sub jid (i + 1) (length jid - i - 1)) domain_end; } @@ -72,7 +73,7 @@ let of_string (jid : string) : t = let to_string ({ localpart; domainpart; resourcepart } : t) = let local = Option.fold ~none:"" ~some:(fun l -> l ^ "@") localpart and resource = Option.fold ~none:"" ~some:(fun r -> "/" ^ r) resourcepart - in local ^ domainpart ^ resource + in local ^ (Portal.domain_to_string domainpart) ^ resource let show ({ localpart; domainpart; resourcepart } : t) = let show_opt = Option.fold ~none:"None" ~some:(Format.sprintf {|Some "%s"|}) @@ -80,7 +81,7 @@ let show ({ localpart; domainpart; resourcepart } : t) = {|{ localpart = %s; domainpart = "%s"; resourcepart = %s }|} - (show_opt localpart) domainpart (show_opt resourcepart) + (show_opt localpart) (Portal.domain_to_string domainpart) (show_opt resourcepart) (* RFC7622 3.5 examples *) -- cgit v1.2.3