diff options
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 *) |