Skip to content

Commit 79c67f2

Browse files
authored
agent: JSON encoding for connection mode (#1576)
1 parent c892862 commit 79c67f2

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

src/Simplex/Messaging/Agent/Protocol.hs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,8 @@ where
174174

175175
import Control.Applicative (optional, (<|>))
176176
import Data.Aeson (FromJSON (..), ToJSON (..), Value (..), (.:), (.:?))
177+
import qualified Data.Aeson as J'
178+
import qualified Data.Aeson.Encoding as JE
177179
import qualified Data.Aeson.TH as J
178180
import qualified Data.Aeson.Types as JT
179181
import Data.Attoparsec.ByteString.Char8 (Parser)
@@ -192,6 +194,7 @@ import Data.Map.Strict (Map)
192194
import qualified Data.Map.Strict as M
193195
import Data.Maybe (fromMaybe, isJust)
194196
import Data.Text (Text)
197+
import qualified Data.Text as T
195198
import Data.Text.Encoding (decodeLatin1, encodeUtf8)
196199
import Data.Time.Clock (UTCTime)
197200
import 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+
11961209
connModeT :: Text -> Maybe ConnectionMode
11971210
connModeT = \case
11981211
"INV" -> Just CMInvitation

0 commit comments

Comments
 (0)