module TD.Query.ProcessWebProxyCarrierMessage
  (ProcessWebProxyCarrierMessage(..)
  , defaultProcessWebProxyCarrierMessage
  ) where

import qualified Data.Aeson as A
import qualified Data.Aeson.Types as AT
import qualified TD.Lib.Internal as I
import qualified TD.Data.WebProxyCarrierMessage as WebProxyCarrierMessage

-- | Passes a message, which the page of a web proxy carrier passed to postMessage of the bridge object, to TDLib. Must be called in the order in which the messages were passed. Can be called before authorization. Returns 'TD.Data.Ok.Ok'
data ProcessWebProxyCarrierMessage
  = ProcessWebProxyCarrierMessage
    { ProcessWebProxyCarrierMessage -> Maybe Int
carrier_id :: Maybe Int                                           -- ^ Identifier of the carrier
    , ProcessWebProxyCarrierMessage -> Maybe WebProxyCarrierMessage
message    :: Maybe WebProxyCarrierMessage.WebProxyCarrierMessage -- ^ The received message
    }
  deriving (ProcessWebProxyCarrierMessage
-> ProcessWebProxyCarrierMessage -> Bool
(ProcessWebProxyCarrierMessage
 -> ProcessWebProxyCarrierMessage -> Bool)
-> (ProcessWebProxyCarrierMessage
    -> ProcessWebProxyCarrierMessage -> Bool)
-> Eq ProcessWebProxyCarrierMessage
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ProcessWebProxyCarrierMessage
-> ProcessWebProxyCarrierMessage -> Bool
== :: ProcessWebProxyCarrierMessage
-> ProcessWebProxyCarrierMessage -> Bool
$c/= :: ProcessWebProxyCarrierMessage
-> ProcessWebProxyCarrierMessage -> Bool
/= :: ProcessWebProxyCarrierMessage
-> ProcessWebProxyCarrierMessage -> Bool
Eq, Int -> ProcessWebProxyCarrierMessage -> ShowS
[ProcessWebProxyCarrierMessage] -> ShowS
ProcessWebProxyCarrierMessage -> String
(Int -> ProcessWebProxyCarrierMessage -> ShowS)
-> (ProcessWebProxyCarrierMessage -> String)
-> ([ProcessWebProxyCarrierMessage] -> ShowS)
-> Show ProcessWebProxyCarrierMessage
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ProcessWebProxyCarrierMessage -> ShowS
showsPrec :: Int -> ProcessWebProxyCarrierMessage -> ShowS
$cshow :: ProcessWebProxyCarrierMessage -> String
show :: ProcessWebProxyCarrierMessage -> String
$cshowList :: [ProcessWebProxyCarrierMessage] -> ShowS
showList :: [ProcessWebProxyCarrierMessage] -> ShowS
Show)

instance I.ShortShow ProcessWebProxyCarrierMessage where
  shortShow :: ProcessWebProxyCarrierMessage -> String
shortShow
    ProcessWebProxyCarrierMessage
      { carrier_id :: ProcessWebProxyCarrierMessage -> Maybe Int
carrier_id = Maybe Int
carrier_id_
      , message :: ProcessWebProxyCarrierMessage -> Maybe WebProxyCarrierMessage
message    = Maybe WebProxyCarrierMessage
message_
      }
        = String
"ProcessWebProxyCarrierMessage"
          String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
          [ String
"carrier_id" String -> Maybe Int -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Int
carrier_id_
          , String
"message"    String -> Maybe WebProxyCarrierMessage -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe WebProxyCarrierMessage
message_
          ]

instance AT.ToJSON ProcessWebProxyCarrierMessage where
  toJSON :: ProcessWebProxyCarrierMessage -> Value
toJSON
    ProcessWebProxyCarrierMessage
      { carrier_id :: ProcessWebProxyCarrierMessage -> Maybe Int
carrier_id = Maybe Int
carrier_id_
      , message :: ProcessWebProxyCarrierMessage -> Maybe WebProxyCarrierMessage
message    = Maybe WebProxyCarrierMessage
message_
      }
        = [Pair] -> Value
A.object
          [ Key
"@type"      Key -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
A..= Text -> Value
AT.String Text
"processWebProxyCarrierMessage"
          , Key
"carrier_id" Key -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
A..= Maybe Int
carrier_id_
          , Key
"message"    Key -> Maybe WebProxyCarrierMessage -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
A..= Maybe WebProxyCarrierMessage
message_
          ]

defaultProcessWebProxyCarrierMessage :: ProcessWebProxyCarrierMessage
defaultProcessWebProxyCarrierMessage :: ProcessWebProxyCarrierMessage
defaultProcessWebProxyCarrierMessage =
  ProcessWebProxyCarrierMessage
    { carrier_id :: Maybe Int
carrier_id = Maybe Int
forall a. Maybe a
Nothing
    , message :: Maybe WebProxyCarrierMessage
message    = Maybe WebProxyCarrierMessage
forall a. Maybe a
Nothing
    }