From 461c8f70d81209d6a4da6b9ab76b6487c13df07d Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Tue, 6 Nov 2018 01:20:32 -0500 Subject: splitJID: resource may include @ symbol. --- Presence/Util.hs | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/Presence/Util.hs b/Presence/Util.hs index a6e5b35f..ef98d415 100644 --- a/Presence/Util.hs +++ b/Presence/Util.hs @@ -23,17 +23,12 @@ unsplitJID (n,h,r) = username <> h <> resource splitJID :: Text -> (Maybe UserName,Text,Maybe ResourceName) splitJID bjid = - let xs = splitAll '@' bjid - ys = splitAll '/' (last xs) - splitAll c bjid = take 1 xs0 ++ map (Text.drop 1) (drop 1 xs0) - where xs0 = Text.groupBy (\x y-> y/=c) bjid - server = head ys - name = case xs of - (n:s:_) -> Just n - _ -> Nothing - rsrc = case ys of - (s:_:_) -> Just $ last ys - _ -> Nothing + let (uATh,slashrsc) = Text.break (=='/') bjid + rsrc = if Text.null slashrsc then Nothing + else Just $ Text.drop 1 slashrsc + (u,atserver) = Text.break (=='@') uATh + (name,server) = if Text.null atserver then (Nothing,u) + else (Just u,Text.drop 1 atserver) in (name,server,rsrc) -- cgit v1.2.3