module TD.Data.TonConnectRequest
(TonConnectRequest(..)) where
import qualified Data.Aeson as A
import qualified Data.Aeson.Types as AT
import qualified TD.Lib.Internal as I
import qualified Data.ByteString as BS
import qualified Data.Text as T
data TonConnectRequest
= TonConnectRequest
{ TonConnectRequest -> Maybe Int
session_id :: Maybe Int
, TonConnectRequest -> Maybe Int
message_id :: Maybe Int
, TonConnectRequest -> Maybe ByteString
body :: Maybe BS.ByteString
, TonConnectRequest -> Maybe Int
expiration_date :: Maybe Int
, TonConnectRequest -> Maybe Text
topic :: Maybe T.Text
, TonConnectRequest -> Maybe Text
trace_id :: Maybe T.Text
}
deriving (TonConnectRequest -> TonConnectRequest -> Bool
(TonConnectRequest -> TonConnectRequest -> Bool)
-> (TonConnectRequest -> TonConnectRequest -> Bool)
-> Eq TonConnectRequest
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TonConnectRequest -> TonConnectRequest -> Bool
== :: TonConnectRequest -> TonConnectRequest -> Bool
$c/= :: TonConnectRequest -> TonConnectRequest -> Bool
/= :: TonConnectRequest -> TonConnectRequest -> Bool
Eq, Int -> TonConnectRequest -> ShowS
[TonConnectRequest] -> ShowS
TonConnectRequest -> String
(Int -> TonConnectRequest -> ShowS)
-> (TonConnectRequest -> String)
-> ([TonConnectRequest] -> ShowS)
-> Show TonConnectRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TonConnectRequest -> ShowS
showsPrec :: Int -> TonConnectRequest -> ShowS
$cshow :: TonConnectRequest -> String
show :: TonConnectRequest -> String
$cshowList :: [TonConnectRequest] -> ShowS
showList :: [TonConnectRequest] -> ShowS
Show)
instance I.ShortShow TonConnectRequest where
shortShow :: TonConnectRequest -> String
shortShow TonConnectRequest
{ session_id :: TonConnectRequest -> Maybe Int
session_id = Maybe Int
session_id_
, message_id :: TonConnectRequest -> Maybe Int
message_id = Maybe Int
message_id_
, body :: TonConnectRequest -> Maybe ByteString
body = Maybe ByteString
body_
, expiration_date :: TonConnectRequest -> Maybe Int
expiration_date = Maybe Int
expiration_date_
, topic :: TonConnectRequest -> Maybe Text
topic = Maybe Text
topic_
, trace_id :: TonConnectRequest -> Maybe Text
trace_id = Maybe Text
trace_id_
}
= String
"TonConnectRequest"
String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
[ String
"session_id" String -> Maybe Int -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Int
session_id_
, String
"message_id" String -> Maybe Int -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Int
message_id_
, String
"body" String -> Maybe ByteString -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe ByteString
body_
, String
"expiration_date" String -> Maybe Int -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Int
expiration_date_
, String
"topic" String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
topic_
, String
"trace_id" String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
trace_id_
]
instance AT.FromJSON TonConnectRequest where
parseJSON :: Value -> Parser TonConnectRequest
parseJSON v :: Value
v@(AT.Object Object
obj) = do
String
t <- Object
obj Object -> Key -> Parser String
forall a. FromJSON a => Object -> Key -> Parser a
A..: Key
"@type" :: AT.Parser String
case String
t of
String
"tonConnectRequest" -> Value -> Parser TonConnectRequest
parseTonConnectRequest Value
v
String
_ -> Parser TonConnectRequest
forall a. Monoid a => a
mempty
where
parseTonConnectRequest :: A.Value -> AT.Parser TonConnectRequest
parseTonConnectRequest :: Value -> Parser TonConnectRequest
parseTonConnectRequest = String
-> (Object -> Parser TonConnectRequest)
-> Value
-> Parser TonConnectRequest
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"TonConnectRequest" ((Object -> Parser TonConnectRequest)
-> Value -> Parser TonConnectRequest)
-> (Object -> Parser TonConnectRequest)
-> Value
-> Parser TonConnectRequest
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
Maybe Int
session_id_ <- (String -> Int) -> Maybe String -> Maybe Int
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap String -> Int
I.readInt64 (Maybe String -> Maybe Int)
-> Parser (Maybe String) -> Parser (Maybe Int)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser (Maybe String)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:? Key
"session_id"
Maybe Int
message_id_ <- Object
o Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:? Key
"message_id"
Maybe ByteString
body_ <- (String -> ByteString) -> Maybe String -> Maybe ByteString
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap String -> ByteString
I.readBytes (Maybe String -> Maybe ByteString)
-> Parser (Maybe String) -> Parser (Maybe ByteString)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser (Maybe String)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:? Key
"body"
Maybe Int
expiration_date_ <- Object
o Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:? Key
"expiration_date"
Maybe Text
topic_ <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:? Key
"topic"
Maybe Text
trace_id_ <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:? Key
"trace_id"
TonConnectRequest -> Parser TonConnectRequest
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (TonConnectRequest -> Parser TonConnectRequest)
-> TonConnectRequest -> Parser TonConnectRequest
forall a b. (a -> b) -> a -> b
$ TonConnectRequest
{ session_id :: Maybe Int
session_id = Maybe Int
session_id_
, message_id :: Maybe Int
message_id = Maybe Int
message_id_
, body :: Maybe ByteString
body = Maybe ByteString
body_
, expiration_date :: Maybe Int
expiration_date = Maybe Int
expiration_date_
, topic :: Maybe Text
topic = Maybe Text
topic_
, trace_id :: Maybe Text
trace_id = Maybe Text
trace_id_
}
parseJSON Value
_ = Parser TonConnectRequest
forall a. Monoid a => a
mempty