module TD.Data.PushMessageContent
  (PushMessageContent(..)) 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.Animation as Animation
import qualified Data.Text as T
import qualified TD.Data.Audio as Audio
import qualified TD.Data.Document as Document
import qualified TD.Data.Photo as Photo
import qualified TD.Data.GiveawayPrize as GiveawayPrize
import qualified TD.Data.Sticker as Sticker
import qualified TD.Data.Video as Video
import qualified TD.Data.VideoNote as VideoNote
import qualified TD.Data.VoiceNote as VoiceNote

-- | Contains content of a push message notification
data PushMessageContent
  = PushMessageContentHidden -- ^ A general message with hidden content
    { PushMessageContent -> Maybe Bool
is_pinned :: Maybe Bool -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentAnimation -- ^ An animation message (GIF-style).
    { PushMessageContent -> Maybe Animation
animation :: Maybe Animation.Animation -- ^ Message content; may be null
    , PushMessageContent -> Maybe Text
caption   :: Maybe T.Text              -- ^ Animation caption
    , is_pinned :: Maybe Bool                -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentAudio -- ^ An audio message
    { PushMessageContent -> Maybe Audio
audio     :: Maybe Audio.Audio -- ^ Message content; may be null
    , is_pinned :: Maybe Bool        -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentContact -- ^ A message with a user contact
    { PushMessageContent -> Maybe Text
name      :: Maybe T.Text -- ^ Contact's name
    , is_pinned :: Maybe Bool   -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentContactRegistered -- ^ A contact has registered with Telegram
  | PushMessageContentDocument -- ^ A document message (a general file)
    { PushMessageContent -> Maybe Document
document  :: Maybe Document.Document -- ^ Message content; may be null
    , is_pinned :: Maybe Bool              -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentGame -- ^ A message with a game
    { PushMessageContent -> Maybe Text
title     :: Maybe T.Text -- ^ Game title, empty for pinned game message
    , is_pinned :: Maybe Bool   -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentGameScore -- ^ A new high score was achieved in a game
    { title     :: Maybe T.Text -- ^ Game title, empty for pinned message
    , PushMessageContent -> Maybe Int
score     :: Maybe Int    -- ^ New score, 0 for pinned message
    , is_pinned :: Maybe Bool   -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentInvoice -- ^ A message with an invoice from a bot
    { PushMessageContent -> Maybe Text
price     :: Maybe T.Text -- ^ Product price
    , is_pinned :: Maybe Bool   -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentLocation -- ^ A message with a location
    { PushMessageContent -> Maybe Bool
is_live   :: Maybe Bool -- ^ True, if the location is live
    , is_pinned :: Maybe Bool -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentPaidMedia -- ^ A message with paid media
    { PushMessageContent -> Maybe Int
star_count :: Maybe Int  -- ^ Number of Telegram Stars needed to buy access to the media in the message; 0 for pinned message
    , is_pinned  :: Maybe Bool -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentPhoto -- ^ A photo message
    { PushMessageContent -> Maybe Photo
photo     :: Maybe Photo.Photo -- ^ Message content; may be null
    , caption   :: Maybe T.Text      -- ^ Photo caption
    , PushMessageContent -> Maybe Bool
is_secret :: Maybe Bool        -- ^ True, if the photo is secret
    , is_pinned :: Maybe Bool        -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentPoll -- ^ A message with a poll
    { PushMessageContent -> Maybe Text
question   :: Maybe T.Text -- ^ Poll question
    , PushMessageContent -> Maybe Bool
is_regular :: Maybe Bool   -- ^ True, if the poll is regular and not in quiz mode
    , is_pinned  :: Maybe Bool   -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentPremiumGiftCode -- ^ A message with a Telegram Premium gift code created for the user
    { PushMessageContent -> Maybe Int
month_count :: Maybe Int -- ^ Number of months the Telegram Premium subscription will be active after code activation
    }
  | PushMessageContentGiveaway -- ^ A message with a giveaway
    { PushMessageContent -> Maybe Int
winner_count :: Maybe Int                         -- ^ Number of users which will receive giveaway prizes; 0 for pinned message
    , PushMessageContent -> Maybe GiveawayPrize
prize        :: Maybe GiveawayPrize.GiveawayPrize -- ^ Prize of the giveaway; may be null for pinned message
    , is_pinned    :: Maybe Bool                        -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentGift -- ^ A message with a gift
    { star_count :: Maybe Int -- ^ Number of Telegram Stars that sender paid for the gift
    }
  | PushMessageContentScreenshotTaken -- ^ A screenshot of a message in the chat has been taken
  | PushMessageContentSticker -- ^ A message with a sticker
    { PushMessageContent -> Maybe Sticker
sticker   :: Maybe Sticker.Sticker -- ^ Message content; may be null
    , PushMessageContent -> Maybe Text
emoji     :: Maybe T.Text          -- ^ Emoji corresponding to the sticker; may be empty
    , is_pinned :: Maybe Bool            -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentStory -- ^ A message with a story
    { is_pinned :: Maybe Bool -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentText -- ^ A text message
    { PushMessageContent -> Maybe Text
text      :: Maybe T.Text -- ^ Message text
    , is_pinned :: Maybe Bool   -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentVideo -- ^ A video message
    { PushMessageContent -> Maybe Video
video     :: Maybe Video.Video -- ^ Message content; may be null
    , caption   :: Maybe T.Text      -- ^ Video caption
    , is_secret :: Maybe Bool        -- ^ True, if the video is secret
    , is_pinned :: Maybe Bool        -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentVideoNote -- ^ A video note message
    { PushMessageContent -> Maybe VideoNote
video_note :: Maybe VideoNote.VideoNote -- ^ Message content; may be null
    , is_pinned  :: Maybe Bool                -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentVoiceNote -- ^ A voice note message
    { PushMessageContent -> Maybe VoiceNote
voice_note :: Maybe VoiceNote.VoiceNote -- ^ Message content; may be null
    , is_pinned  :: Maybe Bool                -- ^ True, if the message is a pinned message with the specified content
    }
  | PushMessageContentBasicGroupChatCreate -- ^ A newly created basic group
  | PushMessageContentChatAddMembers -- ^ New chat members were invited to a group
    { PushMessageContent -> Maybe Text
member_name     :: Maybe T.Text -- ^ Name of the added member
    , PushMessageContent -> Maybe Bool
is_current_user :: Maybe Bool   -- ^ True, if the current user was added to the group
    , PushMessageContent -> Maybe Bool
is_returned     :: Maybe Bool   -- ^ True, if the user has returned to the group themselves
    }
  | PushMessageContentChatChangePhoto -- ^ A chat photo was edited
  | PushMessageContentChatChangeTitle -- ^ A chat title was edited
    { title :: Maybe T.Text -- ^ New chat title
    }
  | PushMessageContentChatSetBackground -- ^ A chat background was edited
    { PushMessageContent -> Maybe Bool
is_same :: Maybe Bool -- ^ True, if the set background is the same as the background of the current user
    }
  | PushMessageContentChatSetTheme -- ^ A chat theme was edited
    { PushMessageContent -> Maybe Text
theme_name :: Maybe T.Text -- ^ If non-empty, name of a new theme, set for the chat. Otherwise, the chat theme was reset to the default one
    }
  | PushMessageContentChatDeleteMember -- ^ A chat member was deleted
    { member_name     :: Maybe T.Text -- ^ Name of the deleted member
    , is_current_user :: Maybe Bool   -- ^ True, if the current user was deleted from the group
    , PushMessageContent -> Maybe Bool
is_left         :: Maybe Bool   -- ^ True, if the user has left the group themselves
    }
  | PushMessageContentChatJoinByLink -- ^ A new member joined the chat via an invite link
  | PushMessageContentChatJoinByRequest -- ^ A new member was accepted to the chat by an administrator
  | PushMessageContentRecurringPayment -- ^ A new recurring payment was made by the current user
    { PushMessageContent -> Maybe Text
amount :: Maybe T.Text -- ^ The paid amount
    }
  | PushMessageContentSuggestProfilePhoto -- ^ A profile photo was suggested to the user
  | PushMessageContentMessageForwards -- ^ A forwarded messages
    { PushMessageContent -> Maybe Int
total_count :: Maybe Int -- ^ Number of forwarded messages
    }
  | PushMessageContentMediaAlbum -- ^ A media album
    { total_count   :: Maybe Int  -- ^ Number of messages in the album
    , PushMessageContent -> Maybe Bool
has_photos    :: Maybe Bool -- ^ True, if the album has at least one photo
    , PushMessageContent -> Maybe Bool
has_videos    :: Maybe Bool -- ^ True, if the album has at least one video file
    , PushMessageContent -> Maybe Bool
has_audios    :: Maybe Bool -- ^ True, if the album has at least one audio file
    , PushMessageContent -> Maybe Bool
has_documents :: Maybe Bool -- ^ True, if the album has at least one document
    }
  deriving (PushMessageContent -> PushMessageContent -> Bool
(PushMessageContent -> PushMessageContent -> Bool)
-> (PushMessageContent -> PushMessageContent -> Bool)
-> Eq PushMessageContent
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PushMessageContent -> PushMessageContent -> Bool
== :: PushMessageContent -> PushMessageContent -> Bool
$c/= :: PushMessageContent -> PushMessageContent -> Bool
/= :: PushMessageContent -> PushMessageContent -> Bool
Eq, Int -> PushMessageContent -> ShowS
[PushMessageContent] -> ShowS
PushMessageContent -> String
(Int -> PushMessageContent -> ShowS)
-> (PushMessageContent -> String)
-> ([PushMessageContent] -> ShowS)
-> Show PushMessageContent
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PushMessageContent -> ShowS
showsPrec :: Int -> PushMessageContent -> ShowS
$cshow :: PushMessageContent -> String
show :: PushMessageContent -> String
$cshowList :: [PushMessageContent] -> ShowS
showList :: [PushMessageContent] -> ShowS
Show)

instance I.ShortShow PushMessageContent where
  shortShow :: PushMessageContent -> String
shortShow PushMessageContentHidden
    { is_pinned :: PushMessageContent -> Maybe Bool
is_pinned = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentHidden"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"is_pinned" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentAnimation
    { animation :: PushMessageContent -> Maybe Animation
animation = Maybe Animation
animation_
    , caption :: PushMessageContent -> Maybe Text
caption   = Maybe Text
caption_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentAnimation"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"animation" String -> Maybe Animation -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Animation
animation_
        , String
"caption"   String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
caption_
        , String
"is_pinned" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentAudio
    { audio :: PushMessageContent -> Maybe Audio
audio     = Maybe Audio
audio_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentAudio"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"audio"     String -> Maybe Audio -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Audio
audio_
        , String
"is_pinned" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentContact
    { name :: PushMessageContent -> Maybe Text
name      = Maybe Text
name_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentContact"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"name"      String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
name_
        , String
"is_pinned" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContent
PushMessageContentContactRegistered
      = String
"PushMessageContentContactRegistered"
  shortShow PushMessageContentDocument
    { document :: PushMessageContent -> Maybe Document
document  = Maybe Document
document_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentDocument"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"document"  String -> Maybe Document -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Document
document_
        , String
"is_pinned" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentGame
    { title :: PushMessageContent -> Maybe Text
title     = Maybe Text
title_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentGame"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"title"     String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
title_
        , String
"is_pinned" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentGameScore
    { title :: PushMessageContent -> Maybe Text
title     = Maybe Text
title_
    , score :: PushMessageContent -> Maybe Int
score     = Maybe Int
score_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentGameScore"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"title"     String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
title_
        , String
"score"     String -> Maybe Int -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Int
score_
        , String
"is_pinned" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentInvoice
    { price :: PushMessageContent -> Maybe Text
price     = Maybe Text
price_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentInvoice"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"price"     String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
price_
        , String
"is_pinned" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentLocation
    { is_live :: PushMessageContent -> Maybe Bool
is_live   = Maybe Bool
is_live_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentLocation"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"is_live"   String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_live_
        , String
"is_pinned" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentPaidMedia
    { star_count :: PushMessageContent -> Maybe Int
star_count = Maybe Int
star_count_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned  = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentPaidMedia"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"star_count" String -> Maybe Int -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Int
star_count_
        , String
"is_pinned"  String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentPhoto
    { photo :: PushMessageContent -> Maybe Photo
photo     = Maybe Photo
photo_
    , caption :: PushMessageContent -> Maybe Text
caption   = Maybe Text
caption_
    , is_secret :: PushMessageContent -> Maybe Bool
is_secret = Maybe Bool
is_secret_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentPhoto"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"photo"     String -> Maybe Photo -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Photo
photo_
        , String
"caption"   String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
caption_
        , String
"is_secret" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_secret_
        , String
"is_pinned" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentPoll
    { question :: PushMessageContent -> Maybe Text
question   = Maybe Text
question_
    , is_regular :: PushMessageContent -> Maybe Bool
is_regular = Maybe Bool
is_regular_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned  = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentPoll"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"question"   String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
question_
        , String
"is_regular" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_regular_
        , String
"is_pinned"  String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentPremiumGiftCode
    { month_count :: PushMessageContent -> Maybe Int
month_count = Maybe Int
month_count_
    }
      = String
"PushMessageContentPremiumGiftCode"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"month_count" String -> Maybe Int -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Int
month_count_
        ]
  shortShow PushMessageContentGiveaway
    { winner_count :: PushMessageContent -> Maybe Int
winner_count = Maybe Int
winner_count_
    , prize :: PushMessageContent -> Maybe GiveawayPrize
prize        = Maybe GiveawayPrize
prize_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned    = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentGiveaway"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"winner_count" String -> Maybe Int -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Int
winner_count_
        , String
"prize"        String -> Maybe GiveawayPrize -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe GiveawayPrize
prize_
        , String
"is_pinned"    String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentGift
    { star_count :: PushMessageContent -> Maybe Int
star_count = Maybe Int
star_count_
    }
      = String
"PushMessageContentGift"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"star_count" String -> Maybe Int -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Int
star_count_
        ]
  shortShow PushMessageContent
PushMessageContentScreenshotTaken
      = String
"PushMessageContentScreenshotTaken"
  shortShow PushMessageContentSticker
    { sticker :: PushMessageContent -> Maybe Sticker
sticker   = Maybe Sticker
sticker_
    , emoji :: PushMessageContent -> Maybe Text
emoji     = Maybe Text
emoji_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentSticker"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"sticker"   String -> Maybe Sticker -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Sticker
sticker_
        , String
"emoji"     String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
emoji_
        , String
"is_pinned" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentStory
    { is_pinned :: PushMessageContent -> Maybe Bool
is_pinned = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentStory"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"is_pinned" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentText
    { text :: PushMessageContent -> Maybe Text
text      = Maybe Text
text_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentText"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"text"      String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
text_
        , String
"is_pinned" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentVideo
    { video :: PushMessageContent -> Maybe Video
video     = Maybe Video
video_
    , caption :: PushMessageContent -> Maybe Text
caption   = Maybe Text
caption_
    , is_secret :: PushMessageContent -> Maybe Bool
is_secret = Maybe Bool
is_secret_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentVideo"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"video"     String -> Maybe Video -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Video
video_
        , String
"caption"   String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
caption_
        , String
"is_secret" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_secret_
        , String
"is_pinned" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentVideoNote
    { video_note :: PushMessageContent -> Maybe VideoNote
video_note = Maybe VideoNote
video_note_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned  = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentVideoNote"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"video_note" String -> Maybe VideoNote -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe VideoNote
video_note_
        , String
"is_pinned"  String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContentVoiceNote
    { voice_note :: PushMessageContent -> Maybe VoiceNote
voice_note = Maybe VoiceNote
voice_note_
    , is_pinned :: PushMessageContent -> Maybe Bool
is_pinned  = Maybe Bool
is_pinned_
    }
      = String
"PushMessageContentVoiceNote"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"voice_note" String -> Maybe VoiceNote -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe VoiceNote
voice_note_
        , String
"is_pinned"  String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_pinned_
        ]
  shortShow PushMessageContent
PushMessageContentBasicGroupChatCreate
      = String
"PushMessageContentBasicGroupChatCreate"
  shortShow PushMessageContentChatAddMembers
    { member_name :: PushMessageContent -> Maybe Text
member_name     = Maybe Text
member_name_
    , is_current_user :: PushMessageContent -> Maybe Bool
is_current_user = Maybe Bool
is_current_user_
    , is_returned :: PushMessageContent -> Maybe Bool
is_returned     = Maybe Bool
is_returned_
    }
      = String
"PushMessageContentChatAddMembers"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"member_name"     String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
member_name_
        , String
"is_current_user" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_current_user_
        , String
"is_returned"     String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_returned_
        ]
  shortShow PushMessageContent
PushMessageContentChatChangePhoto
      = String
"PushMessageContentChatChangePhoto"
  shortShow PushMessageContentChatChangeTitle
    { title :: PushMessageContent -> Maybe Text
title = Maybe Text
title_
    }
      = String
"PushMessageContentChatChangeTitle"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"title" String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
title_
        ]
  shortShow PushMessageContentChatSetBackground
    { is_same :: PushMessageContent -> Maybe Bool
is_same = Maybe Bool
is_same_
    }
      = String
"PushMessageContentChatSetBackground"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"is_same" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_same_
        ]
  shortShow PushMessageContentChatSetTheme
    { theme_name :: PushMessageContent -> Maybe Text
theme_name = Maybe Text
theme_name_
    }
      = String
"PushMessageContentChatSetTheme"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"theme_name" String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
theme_name_
        ]
  shortShow PushMessageContentChatDeleteMember
    { member_name :: PushMessageContent -> Maybe Text
member_name     = Maybe Text
member_name_
    , is_current_user :: PushMessageContent -> Maybe Bool
is_current_user = Maybe Bool
is_current_user_
    , is_left :: PushMessageContent -> Maybe Bool
is_left         = Maybe Bool
is_left_
    }
      = String
"PushMessageContentChatDeleteMember"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"member_name"     String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
member_name_
        , String
"is_current_user" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_current_user_
        , String
"is_left"         String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
is_left_
        ]
  shortShow PushMessageContent
PushMessageContentChatJoinByLink
      = String
"PushMessageContentChatJoinByLink"
  shortShow PushMessageContent
PushMessageContentChatJoinByRequest
      = String
"PushMessageContentChatJoinByRequest"
  shortShow PushMessageContentRecurringPayment
    { amount :: PushMessageContent -> Maybe Text
amount = Maybe Text
amount_
    }
      = String
"PushMessageContentRecurringPayment"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"amount" String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
amount_
        ]
  shortShow PushMessageContent
PushMessageContentSuggestProfilePhoto
      = String
"PushMessageContentSuggestProfilePhoto"
  shortShow PushMessageContentMessageForwards
    { total_count :: PushMessageContent -> Maybe Int
total_count = Maybe Int
total_count_
    }
      = String
"PushMessageContentMessageForwards"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"total_count" String -> Maybe Int -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Int
total_count_
        ]
  shortShow PushMessageContentMediaAlbum
    { total_count :: PushMessageContent -> Maybe Int
total_count   = Maybe Int
total_count_
    , has_photos :: PushMessageContent -> Maybe Bool
has_photos    = Maybe Bool
has_photos_
    , has_videos :: PushMessageContent -> Maybe Bool
has_videos    = Maybe Bool
has_videos_
    , has_audios :: PushMessageContent -> Maybe Bool
has_audios    = Maybe Bool
has_audios_
    , has_documents :: PushMessageContent -> Maybe Bool
has_documents = Maybe Bool
has_documents_
    }
      = String
"PushMessageContentMediaAlbum"
        String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
        [ String
"total_count"   String -> Maybe Int -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Int
total_count_
        , String
"has_photos"    String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
has_photos_
        , String
"has_videos"    String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
has_videos_
        , String
"has_audios"    String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
has_audios_
        , String
"has_documents" String -> Maybe Bool -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Bool
has_documents_
        ]

instance AT.FromJSON PushMessageContent where
  parseJSON :: Value -> Parser PushMessageContent
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
"pushMessageContentHidden"               -> Value -> Parser PushMessageContent
parsePushMessageContentHidden Value
v
      String
"pushMessageContentAnimation"            -> Value -> Parser PushMessageContent
parsePushMessageContentAnimation Value
v
      String
"pushMessageContentAudio"                -> Value -> Parser PushMessageContent
parsePushMessageContentAudio Value
v
      String
"pushMessageContentContact"              -> Value -> Parser PushMessageContent
parsePushMessageContentContact Value
v
      String
"pushMessageContentContactRegistered"    -> PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PushMessageContent
PushMessageContentContactRegistered
      String
"pushMessageContentDocument"             -> Value -> Parser PushMessageContent
parsePushMessageContentDocument Value
v
      String
"pushMessageContentGame"                 -> Value -> Parser PushMessageContent
parsePushMessageContentGame Value
v
      String
"pushMessageContentGameScore"            -> Value -> Parser PushMessageContent
parsePushMessageContentGameScore Value
v
      String
"pushMessageContentInvoice"              -> Value -> Parser PushMessageContent
parsePushMessageContentInvoice Value
v
      String
"pushMessageContentLocation"             -> Value -> Parser PushMessageContent
parsePushMessageContentLocation Value
v
      String
"pushMessageContentPaidMedia"            -> Value -> Parser PushMessageContent
parsePushMessageContentPaidMedia Value
v
      String
"pushMessageContentPhoto"                -> Value -> Parser PushMessageContent
parsePushMessageContentPhoto Value
v
      String
"pushMessageContentPoll"                 -> Value -> Parser PushMessageContent
parsePushMessageContentPoll Value
v
      String
"pushMessageContentPremiumGiftCode"      -> Value -> Parser PushMessageContent
parsePushMessageContentPremiumGiftCode Value
v
      String
"pushMessageContentGiveaway"             -> Value -> Parser PushMessageContent
parsePushMessageContentGiveaway Value
v
      String
"pushMessageContentGift"                 -> Value -> Parser PushMessageContent
parsePushMessageContentGift Value
v
      String
"pushMessageContentScreenshotTaken"      -> PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PushMessageContent
PushMessageContentScreenshotTaken
      String
"pushMessageContentSticker"              -> Value -> Parser PushMessageContent
parsePushMessageContentSticker Value
v
      String
"pushMessageContentStory"                -> Value -> Parser PushMessageContent
parsePushMessageContentStory Value
v
      String
"pushMessageContentText"                 -> Value -> Parser PushMessageContent
parsePushMessageContentText Value
v
      String
"pushMessageContentVideo"                -> Value -> Parser PushMessageContent
parsePushMessageContentVideo Value
v
      String
"pushMessageContentVideoNote"            -> Value -> Parser PushMessageContent
parsePushMessageContentVideoNote Value
v
      String
"pushMessageContentVoiceNote"            -> Value -> Parser PushMessageContent
parsePushMessageContentVoiceNote Value
v
      String
"pushMessageContentBasicGroupChatCreate" -> PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PushMessageContent
PushMessageContentBasicGroupChatCreate
      String
"pushMessageContentChatAddMembers"       -> Value -> Parser PushMessageContent
parsePushMessageContentChatAddMembers Value
v
      String
"pushMessageContentChatChangePhoto"      -> PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PushMessageContent
PushMessageContentChatChangePhoto
      String
"pushMessageContentChatChangeTitle"      -> Value -> Parser PushMessageContent
parsePushMessageContentChatChangeTitle Value
v
      String
"pushMessageContentChatSetBackground"    -> Value -> Parser PushMessageContent
parsePushMessageContentChatSetBackground Value
v
      String
"pushMessageContentChatSetTheme"         -> Value -> Parser PushMessageContent
parsePushMessageContentChatSetTheme Value
v
      String
"pushMessageContentChatDeleteMember"     -> Value -> Parser PushMessageContent
parsePushMessageContentChatDeleteMember Value
v
      String
"pushMessageContentChatJoinByLink"       -> PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PushMessageContent
PushMessageContentChatJoinByLink
      String
"pushMessageContentChatJoinByRequest"    -> PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PushMessageContent
PushMessageContentChatJoinByRequest
      String
"pushMessageContentRecurringPayment"     -> Value -> Parser PushMessageContent
parsePushMessageContentRecurringPayment Value
v
      String
"pushMessageContentSuggestProfilePhoto"  -> PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PushMessageContent
PushMessageContentSuggestProfilePhoto
      String
"pushMessageContentMessageForwards"      -> Value -> Parser PushMessageContent
parsePushMessageContentMessageForwards Value
v
      String
"pushMessageContentMediaAlbum"           -> Value -> Parser PushMessageContent
parsePushMessageContentMediaAlbum Value
v
      String
_                                        -> Parser PushMessageContent
forall a. Monoid a => a
mempty
    
    where
      parsePushMessageContentHidden :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentHidden :: Value -> Parser PushMessageContent
parsePushMessageContentHidden = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentHidden" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Bool
is_pinned_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentHidden
          { is_pinned :: Maybe Bool
is_pinned = Maybe Bool
is_pinned_
          }
      parsePushMessageContentAnimation :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentAnimation :: Value -> Parser PushMessageContent
parsePushMessageContentAnimation = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentAnimation" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Animation
animation_ <- Object
o Object -> Key -> Parser (Maybe Animation)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"animation"
        Maybe Text
caption_   <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"caption"
        Maybe Bool
is_pinned_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentAnimation
          { animation :: Maybe Animation
animation = Maybe Animation
animation_
          , caption :: Maybe Text
caption   = Maybe Text
caption_
          , is_pinned :: Maybe Bool
is_pinned = Maybe Bool
is_pinned_
          }
      parsePushMessageContentAudio :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentAudio :: Value -> Parser PushMessageContent
parsePushMessageContentAudio = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentAudio" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Audio
audio_     <- Object
o Object -> Key -> Parser (Maybe Audio)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"audio"
        Maybe Bool
is_pinned_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentAudio
          { audio :: Maybe Audio
audio     = Maybe Audio
audio_
          , is_pinned :: Maybe Bool
is_pinned = Maybe Bool
is_pinned_
          }
      parsePushMessageContentContact :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentContact :: Value -> Parser PushMessageContent
parsePushMessageContentContact = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentContact" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Text
name_      <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"name"
        Maybe Bool
is_pinned_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentContact
          { name :: Maybe Text
name      = Maybe Text
name_
          , is_pinned :: Maybe Bool
is_pinned = Maybe Bool
is_pinned_
          }
      parsePushMessageContentDocument :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentDocument :: Value -> Parser PushMessageContent
parsePushMessageContentDocument = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentDocument" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Document
document_  <- Object
o Object -> Key -> Parser (Maybe Document)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"document"
        Maybe Bool
is_pinned_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentDocument
          { document :: Maybe Document
document  = Maybe Document
document_
          , is_pinned :: Maybe Bool
is_pinned = Maybe Bool
is_pinned_
          }
      parsePushMessageContentGame :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentGame :: Value -> Parser PushMessageContent
parsePushMessageContentGame = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentGame" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Text
title_     <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"title"
        Maybe Bool
is_pinned_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentGame
          { title :: Maybe Text
title     = Maybe Text
title_
          , is_pinned :: Maybe Bool
is_pinned = Maybe Bool
is_pinned_
          }
      parsePushMessageContentGameScore :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentGameScore :: Value -> Parser PushMessageContent
parsePushMessageContentGameScore = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentGameScore" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Text
title_     <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"title"
        Maybe Int
score_     <- Object
o Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"score"
        Maybe Bool
is_pinned_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentGameScore
          { title :: Maybe Text
title     = Maybe Text
title_
          , score :: Maybe Int
score     = Maybe Int
score_
          , is_pinned :: Maybe Bool
is_pinned = Maybe Bool
is_pinned_
          }
      parsePushMessageContentInvoice :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentInvoice :: Value -> Parser PushMessageContent
parsePushMessageContentInvoice = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentInvoice" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Text
price_     <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"price"
        Maybe Bool
is_pinned_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentInvoice
          { price :: Maybe Text
price     = Maybe Text
price_
          , is_pinned :: Maybe Bool
is_pinned = Maybe Bool
is_pinned_
          }
      parsePushMessageContentLocation :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentLocation :: Value -> Parser PushMessageContent
parsePushMessageContentLocation = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentLocation" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Bool
is_live_   <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_live"
        Maybe Bool
is_pinned_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentLocation
          { is_live :: Maybe Bool
is_live   = Maybe Bool
is_live_
          , is_pinned :: Maybe Bool
is_pinned = Maybe Bool
is_pinned_
          }
      parsePushMessageContentPaidMedia :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentPaidMedia :: Value -> Parser PushMessageContent
parsePushMessageContentPaidMedia = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentPaidMedia" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Int
star_count_ <- Object
o Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"star_count"
        Maybe Bool
is_pinned_  <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentPaidMedia
          { star_count :: Maybe Int
star_count = Maybe Int
star_count_
          , is_pinned :: Maybe Bool
is_pinned  = Maybe Bool
is_pinned_
          }
      parsePushMessageContentPhoto :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentPhoto :: Value -> Parser PushMessageContent
parsePushMessageContentPhoto = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentPhoto" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Photo
photo_     <- Object
o Object -> Key -> Parser (Maybe Photo)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"photo"
        Maybe Text
caption_   <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"caption"
        Maybe Bool
is_secret_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_secret"
        Maybe Bool
is_pinned_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentPhoto
          { photo :: Maybe Photo
photo     = Maybe Photo
photo_
          , caption :: Maybe Text
caption   = Maybe Text
caption_
          , is_secret :: Maybe Bool
is_secret = Maybe Bool
is_secret_
          , is_pinned :: Maybe Bool
is_pinned = Maybe Bool
is_pinned_
          }
      parsePushMessageContentPoll :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentPoll :: Value -> Parser PushMessageContent
parsePushMessageContentPoll = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentPoll" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Text
question_   <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"question"
        Maybe Bool
is_regular_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_regular"
        Maybe Bool
is_pinned_  <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentPoll
          { question :: Maybe Text
question   = Maybe Text
question_
          , is_regular :: Maybe Bool
is_regular = Maybe Bool
is_regular_
          , is_pinned :: Maybe Bool
is_pinned  = Maybe Bool
is_pinned_
          }
      parsePushMessageContentPremiumGiftCode :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentPremiumGiftCode :: Value -> Parser PushMessageContent
parsePushMessageContentPremiumGiftCode = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentPremiumGiftCode" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Int
month_count_ <- Object
o Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"month_count"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentPremiumGiftCode
          { month_count :: Maybe Int
month_count = Maybe Int
month_count_
          }
      parsePushMessageContentGiveaway :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentGiveaway :: Value -> Parser PushMessageContent
parsePushMessageContentGiveaway = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentGiveaway" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Int
winner_count_ <- Object
o Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"winner_count"
        Maybe GiveawayPrize
prize_        <- Object
o Object -> Key -> Parser (Maybe GiveawayPrize)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"prize"
        Maybe Bool
is_pinned_    <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentGiveaway
          { winner_count :: Maybe Int
winner_count = Maybe Int
winner_count_
          , prize :: Maybe GiveawayPrize
prize        = Maybe GiveawayPrize
prize_
          , is_pinned :: Maybe Bool
is_pinned    = Maybe Bool
is_pinned_
          }
      parsePushMessageContentGift :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentGift :: Value -> Parser PushMessageContent
parsePushMessageContentGift = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentGift" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Int
star_count_ <- Object
o Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"star_count"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentGift
          { star_count :: Maybe Int
star_count = Maybe Int
star_count_
          }
      parsePushMessageContentSticker :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentSticker :: Value -> Parser PushMessageContent
parsePushMessageContentSticker = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentSticker" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Sticker
sticker_   <- Object
o Object -> Key -> Parser (Maybe Sticker)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"sticker"
        Maybe Text
emoji_     <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"emoji"
        Maybe Bool
is_pinned_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentSticker
          { sticker :: Maybe Sticker
sticker   = Maybe Sticker
sticker_
          , emoji :: Maybe Text
emoji     = Maybe Text
emoji_
          , is_pinned :: Maybe Bool
is_pinned = Maybe Bool
is_pinned_
          }
      parsePushMessageContentStory :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentStory :: Value -> Parser PushMessageContent
parsePushMessageContentStory = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentStory" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Bool
is_pinned_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentStory
          { is_pinned :: Maybe Bool
is_pinned = Maybe Bool
is_pinned_
          }
      parsePushMessageContentText :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentText :: Value -> Parser PushMessageContent
parsePushMessageContentText = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentText" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Text
text_      <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"text"
        Maybe Bool
is_pinned_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentText
          { text :: Maybe Text
text      = Maybe Text
text_
          , is_pinned :: Maybe Bool
is_pinned = Maybe Bool
is_pinned_
          }
      parsePushMessageContentVideo :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentVideo :: Value -> Parser PushMessageContent
parsePushMessageContentVideo = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentVideo" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Video
video_     <- Object
o Object -> Key -> Parser (Maybe Video)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"video"
        Maybe Text
caption_   <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"caption"
        Maybe Bool
is_secret_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_secret"
        Maybe Bool
is_pinned_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentVideo
          { video :: Maybe Video
video     = Maybe Video
video_
          , caption :: Maybe Text
caption   = Maybe Text
caption_
          , is_secret :: Maybe Bool
is_secret = Maybe Bool
is_secret_
          , is_pinned :: Maybe Bool
is_pinned = Maybe Bool
is_pinned_
          }
      parsePushMessageContentVideoNote :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentVideoNote :: Value -> Parser PushMessageContent
parsePushMessageContentVideoNote = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentVideoNote" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe VideoNote
video_note_ <- Object
o Object -> Key -> Parser (Maybe VideoNote)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"video_note"
        Maybe Bool
is_pinned_  <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentVideoNote
          { video_note :: Maybe VideoNote
video_note = Maybe VideoNote
video_note_
          , is_pinned :: Maybe Bool
is_pinned  = Maybe Bool
is_pinned_
          }
      parsePushMessageContentVoiceNote :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentVoiceNote :: Value -> Parser PushMessageContent
parsePushMessageContentVoiceNote = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentVoiceNote" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe VoiceNote
voice_note_ <- Object
o Object -> Key -> Parser (Maybe VoiceNote)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"voice_note"
        Maybe Bool
is_pinned_  <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_pinned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentVoiceNote
          { voice_note :: Maybe VoiceNote
voice_note = Maybe VoiceNote
voice_note_
          , is_pinned :: Maybe Bool
is_pinned  = Maybe Bool
is_pinned_
          }
      parsePushMessageContentChatAddMembers :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentChatAddMembers :: Value -> Parser PushMessageContent
parsePushMessageContentChatAddMembers = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentChatAddMembers" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Text
member_name_     <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"member_name"
        Maybe Bool
is_current_user_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_current_user"
        Maybe Bool
is_returned_     <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_returned"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentChatAddMembers
          { member_name :: Maybe Text
member_name     = Maybe Text
member_name_
          , is_current_user :: Maybe Bool
is_current_user = Maybe Bool
is_current_user_
          , is_returned :: Maybe Bool
is_returned     = Maybe Bool
is_returned_
          }
      parsePushMessageContentChatChangeTitle :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentChatChangeTitle :: Value -> Parser PushMessageContent
parsePushMessageContentChatChangeTitle = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentChatChangeTitle" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Text
title_ <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"title"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentChatChangeTitle
          { title :: Maybe Text
title = Maybe Text
title_
          }
      parsePushMessageContentChatSetBackground :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentChatSetBackground :: Value -> Parser PushMessageContent
parsePushMessageContentChatSetBackground = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentChatSetBackground" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Bool
is_same_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_same"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentChatSetBackground
          { is_same :: Maybe Bool
is_same = Maybe Bool
is_same_
          }
      parsePushMessageContentChatSetTheme :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentChatSetTheme :: Value -> Parser PushMessageContent
parsePushMessageContentChatSetTheme = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentChatSetTheme" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Text
theme_name_ <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"theme_name"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentChatSetTheme
          { theme_name :: Maybe Text
theme_name = Maybe Text
theme_name_
          }
      parsePushMessageContentChatDeleteMember :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentChatDeleteMember :: Value -> Parser PushMessageContent
parsePushMessageContentChatDeleteMember = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentChatDeleteMember" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Text
member_name_     <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"member_name"
        Maybe Bool
is_current_user_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_current_user"
        Maybe Bool
is_left_         <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"is_left"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentChatDeleteMember
          { member_name :: Maybe Text
member_name     = Maybe Text
member_name_
          , is_current_user :: Maybe Bool
is_current_user = Maybe Bool
is_current_user_
          , is_left :: Maybe Bool
is_left         = Maybe Bool
is_left_
          }
      parsePushMessageContentRecurringPayment :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentRecurringPayment :: Value -> Parser PushMessageContent
parsePushMessageContentRecurringPayment = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentRecurringPayment" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Text
amount_ <- Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"amount"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentRecurringPayment
          { amount :: Maybe Text
amount = Maybe Text
amount_
          }
      parsePushMessageContentMessageForwards :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentMessageForwards :: Value -> Parser PushMessageContent
parsePushMessageContentMessageForwards = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentMessageForwards" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Int
total_count_ <- Object
o Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"total_count"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentMessageForwards
          { total_count :: Maybe Int
total_count = Maybe Int
total_count_
          }
      parsePushMessageContentMediaAlbum :: A.Value -> AT.Parser PushMessageContent
      parsePushMessageContentMediaAlbum :: Value -> Parser PushMessageContent
parsePushMessageContentMediaAlbum = String
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
A.withObject String
"PushMessageContentMediaAlbum" ((Object -> Parser PushMessageContent)
 -> Value -> Parser PushMessageContent)
-> (Object -> Parser PushMessageContent)
-> Value
-> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
        Maybe Int
total_count_   <- Object
o Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"total_count"
        Maybe Bool
has_photos_    <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"has_photos"
        Maybe Bool
has_videos_    <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"has_videos"
        Maybe Bool
has_audios_    <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"has_audios"
        Maybe Bool
has_documents_ <- Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
A..:?  Key
"has_documents"
        PushMessageContent -> Parser PushMessageContent
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PushMessageContent -> Parser PushMessageContent)
-> PushMessageContent -> Parser PushMessageContent
forall a b. (a -> b) -> a -> b
$ PushMessageContentMediaAlbum
          { total_count :: Maybe Int
total_count   = Maybe Int
total_count_
          , has_photos :: Maybe Bool
has_photos    = Maybe Bool
has_photos_
          , has_videos :: Maybe Bool
has_videos    = Maybe Bool
has_videos_
          , has_audios :: Maybe Bool
has_audios    = Maybe Bool
has_audios_
          , has_documents :: Maybe Bool
has_documents = Maybe Bool
has_documents_
          }
  parseJSON Value
_ = Parser PushMessageContent
forall a. Monoid a => a
mempty