@@ -174,6 +174,8 @@ where
174174
175175import Control.Applicative (optional , (<|>) )
176176import Data.Aeson (FromJSON (.. ), ToJSON (.. ), Value (.. ), (.:) , (.:?) )
177+ import qualified Data.Aeson as J'
178+ import qualified Data.Aeson.Encoding as JE
177179import qualified Data.Aeson.TH as J
178180import qualified Data.Aeson.Types as JT
179181import Data.Attoparsec.ByteString.Char8 (Parser )
@@ -192,6 +194,7 @@ import Data.Map.Strict (Map)
192194import qualified Data.Map.Strict as M
193195import Data.Maybe (fromMaybe , isJust )
194196import Data.Text (Text )
197+ import qualified Data.Text as T
195198import Data.Text.Encoding (decodeLatin1 , encodeUtf8 )
196199import Data.Time.Clock (UTCTime )
197200import Data.Time.Clock.System (SystemTime )
@@ -1193,6 +1196,16 @@ instance Encoding ConnectionMode where
11931196 ' C' -> pure CMContact
11941197 _ -> fail " bad connection mode"
11951198
1199+ instance ToJSON ConnectionMode where
1200+ toJSON = J'. String . T. toLower . decodeLatin1 . strEncode
1201+ {-# INLINE toJSON #-}
1202+ toEncoding = JE. text . T. toLower . decodeLatin1 . strEncode
1203+ {-# INLINE toEncoding #-}
1204+
1205+ instance FromJSON ConnectionMode where
1206+ parseJSON = J'. withText " ConnectionMode" $ either fail pure . parseAll strP . encodeUtf8 . T. toUpper
1207+ {-# INLINE parseJSON #-}
1208+
11961209connModeT :: Text -> Maybe ConnectionMode
11971210connModeT = \ case
11981211 " INV" -> Just CMInvitation
0 commit comments