diff options
author | Clombrong <cromblong@egregore.fun> | 2025-08-14 23:01:59 +0200 |
---|---|---|
committer | Clombrong <cromblong@egregore.fun> | 2025-08-15 00:14:28 +0200 |
commit | 5d31409b2e1a3624b23e894b606c1412546fc5ee (patch) | |
tree | e5829642358bec175685e23c5e0b77b9f1c101c6 /lib/jid.ml | |
parent | cbdbb587236f8d747ae5baf4b4f92e9458dff4f1 (diff) |
feat!: use new opaque domain type in code
Diffstat (limited to 'lib/jid.ml')
-rw-r--r-- | lib/jid.ml | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -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 *) |