{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Telegram.Bot.API.InlineMode.InlineQueryResult where
import Data.Aeson
( FromJSON (..), ToJSON (..), KeyValue ((.=)), Value (..)
, withObject, (.:), (.:?)
)
import Data.Aeson.Types (Parser)
import Data.Hashable (Hashable)
import Data.Text (Text)
import GHC.Generics (Generic)
import Telegram.Bot.API.Internal.Utils
import Telegram.Bot.API.Types
import Telegram.Bot.API.InlineMode.InputMessageContent
import Telegram.Bot.API.Internal.TH (makeDefault)
import qualified Data.Text as Text
newtype InlineQueryResultId = InlineQueryResultId Text
deriving (InlineQueryResultId -> InlineQueryResultId -> Bool
(InlineQueryResultId -> InlineQueryResultId -> Bool)
-> (InlineQueryResultId -> InlineQueryResultId -> Bool)
-> Eq InlineQueryResultId
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: InlineQueryResultId -> InlineQueryResultId -> Bool
== :: InlineQueryResultId -> InlineQueryResultId -> Bool
$c/= :: InlineQueryResultId -> InlineQueryResultId -> Bool
/= :: InlineQueryResultId -> InlineQueryResultId -> Bool
Eq, Int -> InlineQueryResultId -> ShowS
[InlineQueryResultId] -> ShowS
InlineQueryResultId -> String
(Int -> InlineQueryResultId -> ShowS)
-> (InlineQueryResultId -> String)
-> ([InlineQueryResultId] -> ShowS)
-> Show InlineQueryResultId
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> InlineQueryResultId -> ShowS
showsPrec :: Int -> InlineQueryResultId -> ShowS
$cshow :: InlineQueryResultId -> String
show :: InlineQueryResultId -> String
$cshowList :: [InlineQueryResultId] -> ShowS
showList :: [InlineQueryResultId] -> ShowS
Show, (forall x. InlineQueryResultId -> Rep InlineQueryResultId x)
-> (forall x. Rep InlineQueryResultId x -> InlineQueryResultId)
-> Generic InlineQueryResultId
forall x. Rep InlineQueryResultId x -> InlineQueryResultId
forall x. InlineQueryResultId -> Rep InlineQueryResultId x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. InlineQueryResultId -> Rep InlineQueryResultId x
from :: forall x. InlineQueryResultId -> Rep InlineQueryResultId x
$cto :: forall x. Rep InlineQueryResultId x -> InlineQueryResultId
to :: forall x. Rep InlineQueryResultId x -> InlineQueryResultId
Generic, [InlineQueryResultId] -> Value
[InlineQueryResultId] -> Encoding
InlineQueryResultId -> Bool
InlineQueryResultId -> Value
InlineQueryResultId -> Encoding
(InlineQueryResultId -> Value)
-> (InlineQueryResultId -> Encoding)
-> ([InlineQueryResultId] -> Value)
-> ([InlineQueryResultId] -> Encoding)
-> (InlineQueryResultId -> Bool)
-> ToJSON InlineQueryResultId
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: InlineQueryResultId -> Value
toJSON :: InlineQueryResultId -> Value
$ctoEncoding :: InlineQueryResultId -> Encoding
toEncoding :: InlineQueryResultId -> Encoding
$ctoJSONList :: [InlineQueryResultId] -> Value
toJSONList :: [InlineQueryResultId] -> Value
$ctoEncodingList :: [InlineQueryResultId] -> Encoding
toEncodingList :: [InlineQueryResultId] -> Encoding
$comitField :: InlineQueryResultId -> Bool
omitField :: InlineQueryResultId -> Bool
ToJSON, Maybe InlineQueryResultId
Value -> Parser [InlineQueryResultId]
Value -> Parser InlineQueryResultId
(Value -> Parser InlineQueryResultId)
-> (Value -> Parser [InlineQueryResultId])
-> Maybe InlineQueryResultId
-> FromJSON InlineQueryResultId
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser InlineQueryResultId
parseJSON :: Value -> Parser InlineQueryResultId
$cparseJSONList :: Value -> Parser [InlineQueryResultId]
parseJSONList :: Value -> Parser [InlineQueryResultId]
$comittedField :: Maybe InlineQueryResultId
omittedField :: Maybe InlineQueryResultId
FromJSON, Eq InlineQueryResultId
Eq InlineQueryResultId =>
(Int -> InlineQueryResultId -> Int)
-> (InlineQueryResultId -> Int) -> Hashable InlineQueryResultId
Int -> InlineQueryResultId -> Int
InlineQueryResultId -> Int
forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a
$chashWithSalt :: Int -> InlineQueryResultId -> Int
hashWithSalt :: Int -> InlineQueryResultId -> Int
$chash :: InlineQueryResultId -> Int
hash :: InlineQueryResultId -> Int
Hashable)
data InlineQueryResultGeneric = InlineQueryResultGeneric
{ InlineQueryResultGeneric -> InlineQueryResultId
inlineQueryResultId :: InlineQueryResultId
, InlineQueryResultGeneric -> Maybe Text
inlineQueryResultTitle :: Maybe Text
, InlineQueryResultGeneric -> Maybe Text
inlineQueryResultCaption :: Maybe Text
, InlineQueryResultGeneric -> Maybe Text
inlineQueryResultParseMode :: Maybe Text
, InlineQueryResultGeneric -> Maybe [MessageEntity]
inlineQueryResultCaptionEntities :: Maybe [MessageEntity]
, InlineQueryResultGeneric -> Maybe InlineKeyboardMarkup
inlineQueryResultReplyMarkup :: Maybe InlineKeyboardMarkup
, InlineQueryResultGeneric -> Maybe InputMessageContent
inlineQueryResultInputMessageContent :: Maybe InputMessageContent
, InlineQueryResultGeneric -> Maybe Text
inlineQueryResultDescription :: Maybe Text
}
deriving ((forall x.
InlineQueryResultGeneric -> Rep InlineQueryResultGeneric x)
-> (forall x.
Rep InlineQueryResultGeneric x -> InlineQueryResultGeneric)
-> Generic InlineQueryResultGeneric
forall x.
Rep InlineQueryResultGeneric x -> InlineQueryResultGeneric
forall x.
InlineQueryResultGeneric -> Rep InlineQueryResultGeneric x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
InlineQueryResultGeneric -> Rep InlineQueryResultGeneric x
from :: forall x.
InlineQueryResultGeneric -> Rep InlineQueryResultGeneric x
$cto :: forall x.
Rep InlineQueryResultGeneric x -> InlineQueryResultGeneric
to :: forall x.
Rep InlineQueryResultGeneric x -> InlineQueryResultGeneric
Generic, Int -> InlineQueryResultGeneric -> ShowS
[InlineQueryResultGeneric] -> ShowS
InlineQueryResultGeneric -> String
(Int -> InlineQueryResultGeneric -> ShowS)
-> (InlineQueryResultGeneric -> String)
-> ([InlineQueryResultGeneric] -> ShowS)
-> Show InlineQueryResultGeneric
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> InlineQueryResultGeneric -> ShowS
showsPrec :: Int -> InlineQueryResultGeneric -> ShowS
$cshow :: InlineQueryResultGeneric -> String
show :: InlineQueryResultGeneric -> String
$cshowList :: [InlineQueryResultGeneric] -> ShowS
showList :: [InlineQueryResultGeneric] -> ShowS
Show)
instance ToJSON InlineQueryResultGeneric where toJSON :: InlineQueryResultGeneric -> Value
toJSON = InlineQueryResultGeneric -> Value
forall a (d :: Meta) (f :: * -> *).
(Generic a, GToJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
a -> Value
gtoJSON
instance FromJSON InlineQueryResultGeneric where parseJSON :: Value -> Parser InlineQueryResultGeneric
parseJSON = Value -> Parser InlineQueryResultGeneric
forall a (d :: Meta) (f :: * -> *).
(Generic a, GFromJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
Value -> Parser a
gparseJSON
data InlineQueryResultGenericThumbnail = InlineQueryResultGenericThumbnail
{ InlineQueryResultGenericThumbnail -> InlineQueryResultGeneric
inlineQueryResultGenericGeneric :: InlineQueryResultGeneric
, InlineQueryResultGenericThumbnail -> Maybe Text
inlineQueryResultGenericThumbnailUrl :: Maybe Text
, InlineQueryResultGenericThumbnail -> Maybe Text
inlineQueryResultGenericThumbnailMimeType :: Maybe Text
, InlineQueryResultGenericThumbnail -> Maybe Integer
inlineQueryResultGenericThumbnailWidth :: Maybe Integer
, InlineQueryResultGenericThumbnail -> Maybe Integer
inlineQueryResultGenericThumbnailHeight :: Maybe Integer
}
deriving ((forall x.
InlineQueryResultGenericThumbnail
-> Rep InlineQueryResultGenericThumbnail x)
-> (forall x.
Rep InlineQueryResultGenericThumbnail x
-> InlineQueryResultGenericThumbnail)
-> Generic InlineQueryResultGenericThumbnail
forall x.
Rep InlineQueryResultGenericThumbnail x
-> InlineQueryResultGenericThumbnail
forall x.
InlineQueryResultGenericThumbnail
-> Rep InlineQueryResultGenericThumbnail x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
InlineQueryResultGenericThumbnail
-> Rep InlineQueryResultGenericThumbnail x
from :: forall x.
InlineQueryResultGenericThumbnail
-> Rep InlineQueryResultGenericThumbnail x
$cto :: forall x.
Rep InlineQueryResultGenericThumbnail x
-> InlineQueryResultGenericThumbnail
to :: forall x.
Rep InlineQueryResultGenericThumbnail x
-> InlineQueryResultGenericThumbnail
Generic, Int -> InlineQueryResultGenericThumbnail -> ShowS
[InlineQueryResultGenericThumbnail] -> ShowS
InlineQueryResultGenericThumbnail -> String
(Int -> InlineQueryResultGenericThumbnail -> ShowS)
-> (InlineQueryResultGenericThumbnail -> String)
-> ([InlineQueryResultGenericThumbnail] -> ShowS)
-> Show InlineQueryResultGenericThumbnail
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> InlineQueryResultGenericThumbnail -> ShowS
showsPrec :: Int -> InlineQueryResultGenericThumbnail -> ShowS
$cshow :: InlineQueryResultGenericThumbnail -> String
show :: InlineQueryResultGenericThumbnail -> String
$cshowList :: [InlineQueryResultGenericThumbnail] -> ShowS
showList :: [InlineQueryResultGenericThumbnail] -> ShowS
Show)
instance ToJSON InlineQueryResultGenericThumbnail where
toJSON :: InlineQueryResultGenericThumbnail -> Value
toJSON InlineQueryResultGenericThumbnail{Maybe Integer
Maybe Text
InlineQueryResultGeneric
inlineQueryResultGenericGeneric :: InlineQueryResultGenericThumbnail -> InlineQueryResultGeneric
inlineQueryResultGenericThumbnailUrl :: InlineQueryResultGenericThumbnail -> Maybe Text
inlineQueryResultGenericThumbnailMimeType :: InlineQueryResultGenericThumbnail -> Maybe Text
inlineQueryResultGenericThumbnailWidth :: InlineQueryResultGenericThumbnail -> Maybe Integer
inlineQueryResultGenericThumbnailHeight :: InlineQueryResultGenericThumbnail -> Maybe Integer
inlineQueryResultGenericGeneric :: InlineQueryResultGeneric
inlineQueryResultGenericThumbnailUrl :: Maybe Text
inlineQueryResultGenericThumbnailMimeType :: Maybe Text
inlineQueryResultGenericThumbnailWidth :: Maybe Integer
inlineQueryResultGenericThumbnailHeight :: Maybe Integer
..}
= Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGeneric -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGeneric
inlineQueryResultGenericGeneric)
[ Key
"thumbnail_url" Key -> Maybe Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Text
inlineQueryResultGenericThumbnailUrl
, Key
"thumbnail_mime_type" Key -> Maybe Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Text
inlineQueryResultGenericThumbnailMimeType
, Key
"thumbnail_width" Key -> Maybe Integer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Integer
inlineQueryResultGenericThumbnailWidth
, Key
"thumbnail_height" Key -> Maybe Integer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Integer
inlineQueryResultGenericThumbnailHeight
]
instance FromJSON InlineQueryResultGenericThumbnail where
parseJSON :: Value -> Parser InlineQueryResultGenericThumbnail
parseJSON = String
-> (Object -> Parser InlineQueryResultGenericThumbnail)
-> Value
-> Parser InlineQueryResultGenericThumbnail
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"InlineQueryResult" \Object
o -> InlineQueryResultGeneric
-> Maybe Text
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResultGenericThumbnail
InlineQueryResultGenericThumbnail
(InlineQueryResultGeneric
-> Maybe Text
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResultGenericThumbnail)
-> Parser InlineQueryResultGeneric
-> Parser
(Maybe Text
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResultGenericThumbnail)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGeneric
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
Parser
(Maybe Text
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResultGenericThumbnail)
-> Parser (Maybe Text)
-> Parser
(Maybe Text
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResultGenericThumbnail)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"thumbnail_url"
Parser
(Maybe Text
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResultGenericThumbnail)
-> Parser (Maybe Text)
-> Parser
(Maybe Integer
-> Maybe Integer -> InlineQueryResultGenericThumbnail)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"thumbnail_mime_type"
Parser
(Maybe Integer
-> Maybe Integer -> InlineQueryResultGenericThumbnail)
-> Parser (Maybe Integer)
-> Parser (Maybe Integer -> InlineQueryResultGenericThumbnail)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"thumbnail_width"
Parser (Maybe Integer -> InlineQueryResultGenericThumbnail)
-> Parser (Maybe Integer)
-> Parser InlineQueryResultGenericThumbnail
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"thumbnail_height"
data InlineQueryResult
= InlineQueryResultArticle
{ InlineQueryResult -> InlineQueryResultGenericThumbnail
inlineQueryResultArticleGeneric :: InlineQueryResultGenericThumbnail
, InlineQueryResult -> Maybe Text
inlineQueryResultArticleUrl :: Maybe Text
, InlineQueryResult -> Maybe Bool
inlineQueryResultArticleHideUrl :: Maybe Bool
}
| InlineQueryResultPhoto
{ InlineQueryResult -> InlineQueryResultGenericThumbnail
inlineQueryResultPhotoGeneric :: InlineQueryResultGenericThumbnail
, InlineQueryResult -> Text
inlineQueryResultPhotoPhotoUrl :: Text
, InlineQueryResult -> Maybe Integer
inlineQueryResultPhotoPhotoWidth :: Maybe Integer
, InlineQueryResult -> Maybe Integer
inlineQueryResultPhotoPhotoHeight :: Maybe Integer
}
| InlineQueryResultGif
{ InlineQueryResult -> InlineQueryResultGenericThumbnail
inlineQueryResultGifGeneric :: InlineQueryResultGenericThumbnail
, InlineQueryResult -> Text
inlineQueryResultGifGifUrl :: Text
, InlineQueryResult -> Maybe Integer
inlineQueryResultGifGifWidth :: Maybe Integer
, InlineQueryResult -> Maybe Integer
inlineQueryResultGifGifHeight :: Maybe Integer
, InlineQueryResult -> Maybe Integer
inlineQueryResultGifGifDuration :: Maybe Integer
}
| InlineQueryResultMpeg4Gif
{ InlineQueryResult -> InlineQueryResultGenericThumbnail
inlineQueryResultMpeg4GifGeneric :: InlineQueryResultGenericThumbnail
, InlineQueryResult -> Text
inlineQueryResultMpeg4GifMpeg4Url :: Text
, InlineQueryResult -> Maybe Integer
inlineQueryResultMpeg4GifMpeg4Width :: Maybe Integer
, InlineQueryResult -> Maybe Integer
inlineQueryResultMpeg4GifMpeg4Height :: Maybe Integer
, InlineQueryResult -> Maybe Integer
inlineQueryResultMpeg4GifMpeg4Duration :: Maybe Integer
}
| InlineQueryResultVideo
{ InlineQueryResult -> InlineQueryResultGenericThumbnail
inlineQueryResultVideoGeneric :: InlineQueryResultGenericThumbnail
, InlineQueryResult -> Text
inlineQueryResultVideoVideoUrl :: Text
, InlineQueryResult -> Text
inlineQueryResultVideoMimeType :: Text
, InlineQueryResult -> Maybe Integer
inlineQueryResultVideoVideoWidth :: Maybe Integer
, InlineQueryResult -> Maybe Integer
inlineQueryResultVideoVideoHeight :: Maybe Integer
, InlineQueryResult -> Maybe Integer
inlineQueryResultVideoVideoDuration :: Maybe Integer
}
| InlineQueryResultAudio
{ InlineQueryResult -> InlineQueryResultGeneric
inlineQueryResultAudioGeneric :: InlineQueryResultGeneric
, InlineQueryResult -> Text
inlineQueryResultAudioAudioUrl :: Text
, InlineQueryResult -> Maybe Text
inlineQueryResultAudioPerformer :: Maybe Text
, InlineQueryResult -> Maybe Integer
inlineQueryResultAudioAudioDuration :: Maybe Integer
}
| InlineQueryResultVoice
{ InlineQueryResult -> InlineQueryResultGeneric
inlineQueryResultVoiceGeneric :: InlineQueryResultGeneric
, InlineQueryResult -> Text
inlineQueryResultVoiceVoiceUrl :: Text
, InlineQueryResult -> Maybe Integer
inlineQueryResultVoiceVoiceDuration :: Maybe Integer
}
| InlineQueryResultDocument
{ InlineQueryResult -> InlineQueryResultGenericThumbnail
inlineQueryResultDocumentGeneric :: InlineQueryResultGenericThumbnail
, InlineQueryResult -> Text
inlineQueryResultDocumentDocumentUrl :: Text
, InlineQueryResult -> Text
inlineQueryResultDocumentMimeType :: Text
}
| InlineQueryResultLocation
{ InlineQueryResult -> InlineQueryResultGenericThumbnail
inlineQueryResultLocationGeneric :: InlineQueryResultGenericThumbnail
, InlineQueryResult -> Float
inlineQueryResultLocationLatitude :: Float
, InlineQueryResult -> Float
inlineQueryResultLocationLongitude :: Float
, InlineQueryResult -> Maybe Float
inlineQueryResultLocationHorizontalAccuracy :: Maybe Float
, InlineQueryResult -> Maybe Seconds
inlineQueryResultLocationLivePeriod :: Maybe Seconds
, InlineQueryResult -> Maybe Int
inlineQueryResultLocationHeading :: Maybe Int
, InlineQueryResult -> Maybe Int
inlineQueryResultLocationProximityAlertRadius :: Maybe Int
}
| InlineQueryResultVenue
{ InlineQueryResult -> InlineQueryResultGenericThumbnail
inlineQueryResultVenueGeneric :: InlineQueryResultGenericThumbnail
, InlineQueryResult -> Float
inlineQueryResultVenueLatitude :: Float
, InlineQueryResult -> Float
inlineQueryResultVenueLongitude :: Float
, InlineQueryResult -> Text
inlineQueryResultVenueAddress :: Text
, InlineQueryResult -> Maybe Text
inlineQueryResultVenueFoursquareId :: Maybe Text
, InlineQueryResult -> Maybe Text
inlineQueryResultVenueFoursquareType :: Maybe Text
, InlineQueryResult -> Maybe Text
inlineQueryResultVenueGooglePlaceId :: Maybe Text
, InlineQueryResult -> Maybe Text
inlineQueryResultVenueGooglePlaceType :: Maybe Text
}
| InlineQueryResultContact
{ InlineQueryResult -> InlineQueryResultGenericThumbnail
inlineQueryResultContactGeneric :: InlineQueryResultGenericThumbnail
, InlineQueryResult -> Text
inlineQueryResultContactPhoneNumber :: Text
, InlineQueryResult -> Text
inlineQueryResultContactFirstName :: Text
, InlineQueryResult -> Maybe Text
inlineQueryResultContactLastName :: Maybe Text
, InlineQueryResult -> Maybe Text
inlineQueryResultContactVcard :: Maybe Text
}
| InlineQueryResultGame
{ InlineQueryResult -> InlineQueryResultGeneric
inlineQueryResultGameGeneric :: InlineQueryResultGeneric
, InlineQueryResult -> Text
inlineQueryResultGameGameShortName :: Text
}
| InlineQueryResultCachedPhoto
{ InlineQueryResult -> InlineQueryResultGeneric
inlineQueryResultCachedPhotoGeneric :: InlineQueryResultGeneric
, InlineQueryResult -> FileId
inlineQueryResultCachedPhotoPhotoFileId :: FileId
}
| InlineQueryResultCachedGif
{ InlineQueryResult -> InlineQueryResultGeneric
inlineQueryResultCachedGifGeneric :: InlineQueryResultGeneric
, InlineQueryResult -> FileId
iinlineQueryResultCachedGifGifFileId :: FileId
}
| InlineQueryResultCachedMpeg4Gif
{ InlineQueryResult -> InlineQueryResultGeneric
inlineQueryResultCachedMpeg4GifGeneric :: InlineQueryResultGeneric
, InlineQueryResult -> FileId
inlineQueryResultCachedMpeg4GifMpeg4FileId :: FileId
}
| InlineQueryResultCachedSticker
{ InlineQueryResult -> InlineQueryResultGeneric
inlineQueryResultCachedStickerGeneric :: InlineQueryResultGeneric
, InlineQueryResult -> FileId
inlineQueryResultCachedStickerStickerFileId :: FileId
}
| InlineQueryResultCachedDocument
{ InlineQueryResult -> InlineQueryResultGeneric
inlineQueryResultCachedDocumentGeneric :: InlineQueryResultGeneric
, InlineQueryResult -> FileId
inlineQueryResultCachedDocumentDocumentFileId :: FileId
}
| InlineQueryResultCachedVideo
{ InlineQueryResult -> InlineQueryResultGeneric
inlineQueryResultCachedVideoGeneric :: InlineQueryResultGeneric
, InlineQueryResult -> FileId
inlineQueryResultCachedVideoVideoFileId :: FileId
}
| InlineQueryResultCachedVoice
{ InlineQueryResult -> InlineQueryResultGeneric
inlineQueryResultCachedVoiceGeneric :: InlineQueryResultGeneric
, InlineQueryResult -> FileId
inlineQueryResultCachedVoiceVoiceFileId :: FileId
}
| InlineQueryResultCachedAudio
{ InlineQueryResult -> InlineQueryResultGeneric
inlineQueryResultCachedAudioGeneric :: InlineQueryResultGeneric
, InlineQueryResult -> FileId
inlineQueryResultCachedAudioAudioFileId :: FileId
}
deriving ((forall x. InlineQueryResult -> Rep InlineQueryResult x)
-> (forall x. Rep InlineQueryResult x -> InlineQueryResult)
-> Generic InlineQueryResult
forall x. Rep InlineQueryResult x -> InlineQueryResult
forall x. InlineQueryResult -> Rep InlineQueryResult x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. InlineQueryResult -> Rep InlineQueryResult x
from :: forall x. InlineQueryResult -> Rep InlineQueryResult x
$cto :: forall x. Rep InlineQueryResult x -> InlineQueryResult
to :: forall x. Rep InlineQueryResult x -> InlineQueryResult
Generic, Int -> InlineQueryResult -> ShowS
[InlineQueryResult] -> ShowS
InlineQueryResult -> String
(Int -> InlineQueryResult -> ShowS)
-> (InlineQueryResult -> String)
-> ([InlineQueryResult] -> ShowS)
-> Show InlineQueryResult
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> InlineQueryResult -> ShowS
showsPrec :: Int -> InlineQueryResult -> ShowS
$cshow :: InlineQueryResult -> String
show :: InlineQueryResult -> String
$cshowList :: [InlineQueryResult] -> ShowS
showList :: [InlineQueryResult] -> ShowS
Show)
instance ToJSON InlineQueryResult where
toJSON :: InlineQueryResult -> Value
toJSON = \case
InlineQueryResultArticle InlineQueryResultGenericThumbnail
g Maybe Text
url Maybe Bool
hideUrl ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGenericThumbnail -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGenericThumbnail
g)
(Text -> [Pair] -> [Pair]
addType Text
"article"
[ Key
"url" Key -> Maybe Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Text
url
, Key
"hide_url" Key -> Maybe Bool -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Bool
hideUrl
])
InlineQueryResultPhoto InlineQueryResultGenericThumbnail
g Text
photoUrl Maybe Integer
photoWidth Maybe Integer
photoHeight ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGenericThumbnail -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGenericThumbnail
g)
(Text -> [Pair] -> [Pair]
addType Text
"photo"
[ Key
"photo_url" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
photoUrl
, Key
"photo_width" Key -> Maybe Integer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Integer
photoWidth
, Key
"photo_height" Key -> Maybe Integer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Integer
photoHeight
])
InlineQueryResultGif InlineQueryResultGenericThumbnail
g Text
gifUrl Maybe Integer
gifWidth Maybe Integer
gifHeight Maybe Integer
gifDuration ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGenericThumbnail -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGenericThumbnail
g)
(Text -> [Pair] -> [Pair]
addType Text
"gif"
[ Key
"gif_url" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
gifUrl
, Key
"gif_width" Key -> Maybe Integer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Integer
gifWidth
, Key
"gif_height" Key -> Maybe Integer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Integer
gifHeight
, Key
"gif_duration" Key -> Maybe Integer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Integer
gifDuration
])
InlineQueryResultMpeg4Gif InlineQueryResultGenericThumbnail
g Text
mpeg4Url Maybe Integer
mpeg4Width Maybe Integer
mpeg4Height Maybe Integer
mpeg4Duration ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGenericThumbnail -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGenericThumbnail
g)
(Text -> [Pair] -> [Pair]
addType Text
"mpeg4_gif"
[ Key
"mpeg4_url" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
mpeg4Url
, Key
"mpeg4_width" Key -> Maybe Integer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Integer
mpeg4Width
, Key
"mpeg4_height" Key -> Maybe Integer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Integer
mpeg4Height
, Key
"mpeg4_duration" Key -> Maybe Integer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Integer
mpeg4Duration
])
InlineQueryResultVideo InlineQueryResultGenericThumbnail
g Text
videoUrl Text
mimeType Maybe Integer
videoWidth Maybe Integer
videoHeight Maybe Integer
videoDuration ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGenericThumbnail -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGenericThumbnail
g)
(Text -> [Pair] -> [Pair]
addType Text
"video"
[ Key
"video_url" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
videoUrl
, Key
"mime_type" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
mimeType
, Key
"video_width" Key -> Maybe Integer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Integer
videoWidth
, Key
"video_height" Key -> Maybe Integer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Integer
videoHeight
, Key
"video_duration" Key -> Maybe Integer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Integer
videoDuration
])
InlineQueryResultAudio InlineQueryResultGeneric
g Text
audioUrl Maybe Text
performer Maybe Integer
audioDuration ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGeneric -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGeneric
g)
(Text -> [Pair] -> [Pair]
addType Text
"audio"
[ Key
"audio_url" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
audioUrl
, Key
"performer" Key -> Maybe Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Text
performer
, Key
"audio_duration" Key -> Maybe Integer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Integer
audioDuration
])
InlineQueryResultVoice InlineQueryResultGeneric
g Text
voiceUrl Maybe Integer
voiceDuration ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGeneric -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGeneric
g)
(Text -> [Pair] -> [Pair]
addType Text
"voice"
[ Key
"voice_url" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
voiceUrl
, Key
"voice_duration" Key -> Maybe Integer -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Integer
voiceDuration
])
InlineQueryResultDocument InlineQueryResultGenericThumbnail
g Text
documentUrl Text
mimeType ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGenericThumbnail -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGenericThumbnail
g)
(Text -> [Pair] -> [Pair]
addType Text
"document"
[ Key
"document_url" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
documentUrl
, Key
"mime_type" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
mimeType
])
InlineQueryResultLocation InlineQueryResultGenericThumbnail
g Float
latitude Float
longitude Maybe Float
horizontalAccuracy Maybe Seconds
livePeriod Maybe Int
heading Maybe Int
proximityAlertRadius ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGenericThumbnail -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGenericThumbnail
g)
(Text -> [Pair] -> [Pair]
addType Text
"location"
[ Key
"latitude" Key -> Float -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Float
latitude
, Key
"longitude" Key -> Float -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Float
longitude
, Key
"horizontal_accuracy" Key -> Maybe Float -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Float
horizontalAccuracy
, Key
"live_period" Key -> Maybe Seconds -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Seconds
livePeriod
, Key
"heading" Key -> Maybe Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Int
heading
, Key
"proximity_alert_radius" Key -> Maybe Int -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Int
proximityAlertRadius
])
InlineQueryResultVenue InlineQueryResultGenericThumbnail
g Float
latitude Float
longitude Text
address Maybe Text
foursquareId Maybe Text
foursquareType Maybe Text
googlePlaceId Maybe Text
googlePlaceType ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGenericThumbnail -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGenericThumbnail
g)
(Text -> [Pair] -> [Pair]
addType Text
"venue"
[ Key
"latitude" Key -> Float -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Float
latitude
, Key
"longitude" Key -> Float -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Float
longitude
, Key
"address" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
address
, Key
"foursquare_id" Key -> Maybe Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Text
foursquareId
, Key
"foursquare_type" Key -> Maybe Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Text
foursquareType
, Key
"google_place_id" Key -> Maybe Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Text
googlePlaceId
, Key
"google_place_type" Key -> Maybe Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Text
googlePlaceType
])
InlineQueryResultContact InlineQueryResultGenericThumbnail
g Text
phoneNumber Text
firstName Maybe Text
lastName Maybe Text
vcard ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGenericThumbnail -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGenericThumbnail
g)
(Text -> [Pair] -> [Pair]
addType Text
"contact"
[ Key
"phone_number" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
phoneNumber
, Key
"first_name" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
firstName
, Key
"last_name" Key -> Maybe Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Text
lastName
, Key
"vcard" Key -> Maybe Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Maybe Text
vcard
])
InlineQueryResultGame InlineQueryResultGeneric
g Text
gameShortName ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGeneric -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGeneric
g)
(Text -> [Pair] -> [Pair]
addType Text
"game"
[ Key
"game_short_name" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text
gameShortName
])
InlineQueryResultCachedPhoto InlineQueryResultGeneric
g FileId
photoFileId ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGeneric -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGeneric
g)
(Text -> [Pair] -> [Pair]
addType Text
"photo"
[ Key
"photo_file_id" Key -> FileId -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= FileId
photoFileId
])
InlineQueryResultCachedGif InlineQueryResultGeneric
g FileId
gifFileId ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGeneric -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGeneric
g)
(Text -> [Pair] -> [Pair]
addType Text
"gif"
[ Key
"gif_file_id" Key -> FileId -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= FileId
gifFileId
])
InlineQueryResultCachedMpeg4Gif InlineQueryResultGeneric
g FileId
mpeg4FileId ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGeneric -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGeneric
g)
(Text -> [Pair] -> [Pair]
addType Text
"mpeg4_gif"
[ Key
"mpeg4_file_id" Key -> FileId -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= FileId
mpeg4FileId
])
InlineQueryResultCachedSticker InlineQueryResultGeneric
g FileId
stickerFileId ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGeneric -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGeneric
g)
(Text -> [Pair] -> [Pair]
addType Text
"sticker"
[ Key
"sticker_file_id" Key -> FileId -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= FileId
stickerFileId
])
InlineQueryResultCachedDocument InlineQueryResultGeneric
g FileId
documentFileId ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGeneric -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGeneric
g)
(Text -> [Pair] -> [Pair]
addType Text
"document"
[ Key
"document_file_id" Key -> FileId -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= FileId
documentFileId
])
InlineQueryResultCachedVideo InlineQueryResultGeneric
g FileId
videoFileId ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGeneric -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGeneric
g)
(Text -> [Pair] -> [Pair]
addType Text
"video"
[ Key
"video_file_id" Key -> FileId -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= FileId
videoFileId
])
InlineQueryResultCachedVoice InlineQueryResultGeneric
g FileId
voiceFileId ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGeneric -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGeneric
g)
(Text -> [Pair] -> [Pair]
addType Text
"voice"
[ Key
"voice_file_id" Key -> FileId -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= FileId
voiceFileId
])
InlineQueryResultCachedAudio InlineQueryResultGeneric
g FileId
audioFileId ->
Value -> [Pair] -> Value
addJsonFields (InlineQueryResultGeneric -> Value
forall a. ToJSON a => a -> Value
toJSON InlineQueryResultGeneric
g)
(Text -> [Pair] -> [Pair]
addType Text
"audio"
[ Key
"audio_file_id" Key -> FileId -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= FileId
audioFileId
])
instance FromJSON InlineQueryResult where
parseJSON :: Value -> Parser InlineQueryResult
parseJSON = String
-> (Object -> Parser InlineQueryResult)
-> Value
-> Parser InlineQueryResult
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"InlineQueryResult" \Object
o ->
(Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"type" :: Parser Text) Parser Text
-> (Text -> Parser InlineQueryResult) -> Parser InlineQueryResult
forall a b. Parser a -> (a -> Parser b) -> Parser b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Text
"article" -> InlineQueryResultGenericThumbnail
-> Maybe Text -> Maybe Bool -> InlineQueryResult
InlineQueryResultArticle
(InlineQueryResultGenericThumbnail
-> Maybe Text -> Maybe Bool -> InlineQueryResult)
-> Parser InlineQueryResultGenericThumbnail
-> Parser (Maybe Text -> Maybe Bool -> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGenericThumbnail
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
Parser (Maybe Text -> Maybe Bool -> InlineQueryResult)
-> Parser (Maybe Text) -> Parser (Maybe Bool -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"url"
Parser (Maybe Bool -> InlineQueryResult)
-> Parser (Maybe Bool) -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"hide_url"
Text
"photo" -> Object -> Key -> Parser (Maybe FileId)
parseFileId Object
o Key
"photo_file_id" Parser (Maybe FileId)
-> (Maybe FileId -> Parser InlineQueryResult)
-> Parser InlineQueryResult
forall a b. Parser a -> (a -> Parser b) -> Parser b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe FileId
Nothing -> InlineQueryResultGenericThumbnail
-> Text -> Maybe Integer -> Maybe Integer -> InlineQueryResult
InlineQueryResultPhoto
(InlineQueryResultGenericThumbnail
-> Text -> Maybe Integer -> Maybe Integer -> InlineQueryResult)
-> Parser InlineQueryResultGenericThumbnail
-> Parser
(Text -> Maybe Integer -> Maybe Integer -> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGenericThumbnail
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
Parser
(Text -> Maybe Integer -> Maybe Integer -> InlineQueryResult)
-> Parser Text
-> Parser (Maybe Integer -> Maybe Integer -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"photo_url"
Parser (Maybe Integer -> Maybe Integer -> InlineQueryResult)
-> Parser (Maybe Integer)
-> Parser (Maybe Integer -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"photo_width"
Parser (Maybe Integer -> InlineQueryResult)
-> Parser (Maybe Integer) -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"photo_height"
Just FileId
fileId -> InlineQueryResultGeneric -> FileId -> InlineQueryResult
InlineQueryResultCachedPhoto (InlineQueryResultGeneric -> FileId -> InlineQueryResult)
-> Parser InlineQueryResultGeneric
-> Parser (FileId -> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGeneric
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o) Parser (FileId -> InlineQueryResult)
-> Parser FileId -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> FileId -> Parser FileId
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure FileId
fileId
Text
"gif" -> Object -> Key -> Parser (Maybe FileId)
parseFileId Object
o Key
"gif_file_id" Parser (Maybe FileId)
-> (Maybe FileId -> Parser InlineQueryResult)
-> Parser InlineQueryResult
forall a b. Parser a -> (a -> Parser b) -> Parser b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe FileId
Nothing -> InlineQueryResultGenericThumbnail
-> Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult
InlineQueryResultGif
(InlineQueryResultGenericThumbnail
-> Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult)
-> Parser InlineQueryResultGenericThumbnail
-> Parser
(Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGenericThumbnail
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
Parser
(Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult)
-> Parser Text
-> Parser
(Maybe Integer
-> Maybe Integer -> Maybe Integer -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"gif_url"
Parser
(Maybe Integer
-> Maybe Integer -> Maybe Integer -> InlineQueryResult)
-> Parser (Maybe Integer)
-> Parser (Maybe Integer -> Maybe Integer -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"gif_width"
Parser (Maybe Integer -> Maybe Integer -> InlineQueryResult)
-> Parser (Maybe Integer)
-> Parser (Maybe Integer -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"gif_height"
Parser (Maybe Integer -> InlineQueryResult)
-> Parser (Maybe Integer) -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"gif_duration"
Just FileId
fileId -> InlineQueryResultGeneric -> FileId -> InlineQueryResult
InlineQueryResultCachedGif (InlineQueryResultGeneric -> FileId -> InlineQueryResult)
-> Parser InlineQueryResultGeneric
-> Parser (FileId -> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGeneric
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o) Parser (FileId -> InlineQueryResult)
-> Parser FileId -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> FileId -> Parser FileId
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure FileId
fileId
Text
"mpeg4_gif" -> Object -> Key -> Parser (Maybe FileId)
parseFileId Object
o Key
"mpeg4_file_id" Parser (Maybe FileId)
-> (Maybe FileId -> Parser InlineQueryResult)
-> Parser InlineQueryResult
forall a b. Parser a -> (a -> Parser b) -> Parser b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe FileId
Nothing -> InlineQueryResultGenericThumbnail
-> Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult
InlineQueryResultMpeg4Gif
(InlineQueryResultGenericThumbnail
-> Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult)
-> Parser InlineQueryResultGenericThumbnail
-> Parser
(Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGenericThumbnail
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
Parser
(Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult)
-> Parser Text
-> Parser
(Maybe Integer
-> Maybe Integer -> Maybe Integer -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"mpeg4_url"
Parser
(Maybe Integer
-> Maybe Integer -> Maybe Integer -> InlineQueryResult)
-> Parser (Maybe Integer)
-> Parser (Maybe Integer -> Maybe Integer -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"mpeg4_width"
Parser (Maybe Integer -> Maybe Integer -> InlineQueryResult)
-> Parser (Maybe Integer)
-> Parser (Maybe Integer -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"mpeg4_height"
Parser (Maybe Integer -> InlineQueryResult)
-> Parser (Maybe Integer) -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"mpeg4_duration"
Just FileId
fileId -> InlineQueryResultGeneric -> FileId -> InlineQueryResult
InlineQueryResultCachedMpeg4Gif
(InlineQueryResultGeneric -> FileId -> InlineQueryResult)
-> Parser InlineQueryResultGeneric
-> Parser (FileId -> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGeneric
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
Parser (FileId -> InlineQueryResult)
-> Parser FileId -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> FileId -> Parser FileId
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure FileId
fileId
Text
"video" -> Object -> Key -> Parser (Maybe FileId)
parseFileId Object
o Key
"video_file_id" Parser (Maybe FileId)
-> (Maybe FileId -> Parser InlineQueryResult)
-> Parser InlineQueryResult
forall a b. Parser a -> (a -> Parser b) -> Parser b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe FileId
Nothing -> InlineQueryResultGenericThumbnail
-> Text
-> Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult
InlineQueryResultVideo
(InlineQueryResultGenericThumbnail
-> Text
-> Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult)
-> Parser InlineQueryResultGenericThumbnail
-> Parser
(Text
-> Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGenericThumbnail
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
Parser
(Text
-> Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult)
-> Parser Text
-> Parser
(Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"video_url"
Parser
(Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult)
-> Parser Text
-> Parser
(Maybe Integer
-> Maybe Integer -> Maybe Integer -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"mime_type"
Parser
(Maybe Integer
-> Maybe Integer -> Maybe Integer -> InlineQueryResult)
-> Parser (Maybe Integer)
-> Parser (Maybe Integer -> Maybe Integer -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"video_width"
Parser (Maybe Integer -> Maybe Integer -> InlineQueryResult)
-> Parser (Maybe Integer)
-> Parser (Maybe Integer -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"video_height"
Parser (Maybe Integer -> InlineQueryResult)
-> Parser (Maybe Integer) -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"video_duration"
Just FileId
fileId -> InlineQueryResultGeneric -> FileId -> InlineQueryResult
InlineQueryResultCachedVideo
(InlineQueryResultGeneric -> FileId -> InlineQueryResult)
-> Parser InlineQueryResultGeneric
-> Parser (FileId -> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGeneric
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
Parser (FileId -> InlineQueryResult)
-> Parser FileId -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> FileId -> Parser FileId
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure FileId
fileId
Text
"audio" -> Object -> Key -> Parser (Maybe FileId)
parseFileId Object
o Key
"audio_file_id" Parser (Maybe FileId)
-> (Maybe FileId -> Parser InlineQueryResult)
-> Parser InlineQueryResult
forall a b. Parser a -> (a -> Parser b) -> Parser b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe FileId
Nothing -> InlineQueryResultGeneric
-> Text -> Maybe Text -> Maybe Integer -> InlineQueryResult
InlineQueryResultAudio
(InlineQueryResultGeneric
-> Text -> Maybe Text -> Maybe Integer -> InlineQueryResult)
-> Parser InlineQueryResultGeneric
-> Parser
(Text -> Maybe Text -> Maybe Integer -> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGeneric
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
Parser (Text -> Maybe Text -> Maybe Integer -> InlineQueryResult)
-> Parser Text
-> Parser (Maybe Text -> Maybe Integer -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"audio_url"
Parser (Maybe Text -> Maybe Integer -> InlineQueryResult)
-> Parser (Maybe Text)
-> Parser (Maybe Integer -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"performer"
Parser (Maybe Integer -> InlineQueryResult)
-> Parser (Maybe Integer) -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"duration"
Just FileId
fileId -> InlineQueryResultGeneric -> FileId -> InlineQueryResult
InlineQueryResultCachedAudio (InlineQueryResultGeneric -> FileId -> InlineQueryResult)
-> Parser InlineQueryResultGeneric
-> Parser (FileId -> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGeneric
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o) Parser (FileId -> InlineQueryResult)
-> Parser FileId -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> FileId -> Parser FileId
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure FileId
fileId
Text
"voice" -> Object -> Key -> Parser (Maybe FileId)
parseFileId Object
o Key
"voice_file_id" Parser (Maybe FileId)
-> (Maybe FileId -> Parser InlineQueryResult)
-> Parser InlineQueryResult
forall a b. Parser a -> (a -> Parser b) -> Parser b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe FileId
Nothing -> InlineQueryResultGeneric
-> Text -> Maybe Integer -> InlineQueryResult
InlineQueryResultVoice
(InlineQueryResultGeneric
-> Text -> Maybe Integer -> InlineQueryResult)
-> Parser InlineQueryResultGeneric
-> Parser (Text -> Maybe Integer -> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGeneric
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
Parser (Text -> Maybe Integer -> InlineQueryResult)
-> Parser Text -> Parser (Maybe Integer -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"voice_url"
Parser (Maybe Integer -> InlineQueryResult)
-> Parser (Maybe Integer) -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"voice_duration"
Just FileId
fileId -> InlineQueryResultGeneric -> FileId -> InlineQueryResult
InlineQueryResultCachedVoice (InlineQueryResultGeneric -> FileId -> InlineQueryResult)
-> Parser InlineQueryResultGeneric
-> Parser (FileId -> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGeneric
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o) Parser (FileId -> InlineQueryResult)
-> Parser FileId -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> FileId -> Parser FileId
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure FileId
fileId
Text
"document" -> Object -> Key -> Parser (Maybe FileId)
parseFileId Object
o Key
"document_file_id" Parser (Maybe FileId)
-> (Maybe FileId -> Parser InlineQueryResult)
-> Parser InlineQueryResult
forall a b. Parser a -> (a -> Parser b) -> Parser b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Maybe FileId
Nothing -> InlineQueryResultGenericThumbnail
-> Text -> Text -> InlineQueryResult
InlineQueryResultDocument
(InlineQueryResultGenericThumbnail
-> Text -> Text -> InlineQueryResult)
-> Parser InlineQueryResultGenericThumbnail
-> Parser (Text -> Text -> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGenericThumbnail
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
Parser (Text -> Text -> InlineQueryResult)
-> Parser Text -> Parser (Text -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"document_url"
Parser (Text -> InlineQueryResult)
-> Parser Text -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"mime_type"
Just FileId
fileId -> InlineQueryResultGeneric -> FileId -> InlineQueryResult
InlineQueryResultCachedDocument (InlineQueryResultGeneric -> FileId -> InlineQueryResult)
-> Parser InlineQueryResultGeneric
-> Parser (FileId -> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGeneric
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o) Parser (FileId -> InlineQueryResult)
-> Parser FileId -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> FileId -> Parser FileId
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure FileId
fileId
Text
"location" -> InlineQueryResultGenericThumbnail
-> Float
-> Float
-> Maybe Float
-> Maybe Seconds
-> Maybe Int
-> Maybe Int
-> InlineQueryResult
InlineQueryResultLocation
(InlineQueryResultGenericThumbnail
-> Float
-> Float
-> Maybe Float
-> Maybe Seconds
-> Maybe Int
-> Maybe Int
-> InlineQueryResult)
-> Parser InlineQueryResultGenericThumbnail
-> Parser
(Float
-> Float
-> Maybe Float
-> Maybe Seconds
-> Maybe Int
-> Maybe Int
-> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGenericThumbnail
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
Parser
(Float
-> Float
-> Maybe Float
-> Maybe Seconds
-> Maybe Int
-> Maybe Int
-> InlineQueryResult)
-> Parser Float
-> Parser
(Float
-> Maybe Float
-> Maybe Seconds
-> Maybe Int
-> Maybe Int
-> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Float
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"latitude"
Parser
(Float
-> Maybe Float
-> Maybe Seconds
-> Maybe Int
-> Maybe Int
-> InlineQueryResult)
-> Parser Float
-> Parser
(Maybe Float
-> Maybe Seconds -> Maybe Int -> Maybe Int -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Float
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"longitude"
Parser
(Maybe Float
-> Maybe Seconds -> Maybe Int -> Maybe Int -> InlineQueryResult)
-> Parser (Maybe Float)
-> Parser
(Maybe Seconds -> Maybe Int -> Maybe Int -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Float)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"horizontal_accuracy"
Parser
(Maybe Seconds -> Maybe Int -> Maybe Int -> InlineQueryResult)
-> Parser (Maybe Seconds)
-> Parser (Maybe Int -> Maybe Int -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Seconds)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"live_period"
Parser (Maybe Int -> Maybe Int -> InlineQueryResult)
-> Parser (Maybe Int) -> Parser (Maybe Int -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"heading"
Parser (Maybe Int -> InlineQueryResult)
-> Parser (Maybe Int) -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"proximity_alert_radius"
Text
"venue" -> InlineQueryResultGenericThumbnail
-> Float
-> Float
-> Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> InlineQueryResult
InlineQueryResultVenue
(InlineQueryResultGenericThumbnail
-> Float
-> Float
-> Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> InlineQueryResult)
-> Parser InlineQueryResultGenericThumbnail
-> Parser
(Float
-> Float
-> Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGenericThumbnail
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
Parser
(Float
-> Float
-> Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> InlineQueryResult)
-> Parser Float
-> Parser
(Float
-> Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Float
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"latitude"
Parser
(Float
-> Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> InlineQueryResult)
-> Parser Float
-> Parser
(Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Float
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"longitude"
Parser
(Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> InlineQueryResult)
-> Parser Text
-> Parser
(Maybe Text
-> Maybe Text -> Maybe Text -> Maybe Text -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"address"
Parser
(Maybe Text
-> Maybe Text -> Maybe Text -> Maybe Text -> InlineQueryResult)
-> Parser (Maybe Text)
-> Parser
(Maybe Text -> Maybe Text -> Maybe Text -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"foursquare_id"
Parser
(Maybe Text -> Maybe Text -> Maybe Text -> InlineQueryResult)
-> Parser (Maybe Text)
-> Parser (Maybe Text -> Maybe Text -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"foursquare_type"
Parser (Maybe Text -> Maybe Text -> InlineQueryResult)
-> Parser (Maybe Text) -> Parser (Maybe Text -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"google_place_id"
Parser (Maybe Text -> InlineQueryResult)
-> Parser (Maybe Text) -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"google_place_type"
Text
"contact" -> InlineQueryResultGenericThumbnail
-> Text -> Text -> Maybe Text -> Maybe Text -> InlineQueryResult
InlineQueryResultContact
(InlineQueryResultGenericThumbnail
-> Text -> Text -> Maybe Text -> Maybe Text -> InlineQueryResult)
-> Parser InlineQueryResultGenericThumbnail
-> Parser
(Text -> Text -> Maybe Text -> Maybe Text -> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGenericThumbnail
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
Parser
(Text -> Text -> Maybe Text -> Maybe Text -> InlineQueryResult)
-> Parser Text
-> Parser (Text -> Maybe Text -> Maybe Text -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"phone_number"
Parser (Text -> Maybe Text -> Maybe Text -> InlineQueryResult)
-> Parser Text
-> Parser (Maybe Text -> Maybe Text -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"first_name"
Parser (Maybe Text -> Maybe Text -> InlineQueryResult)
-> Parser (Maybe Text) -> Parser (Maybe Text -> InlineQueryResult)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"last_name"
Parser (Maybe Text -> InlineQueryResult)
-> Parser (Maybe Text) -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"vcard"
Text
"game" -> InlineQueryResultGeneric -> Text -> InlineQueryResult
InlineQueryResultGame
(InlineQueryResultGeneric -> Text -> InlineQueryResult)
-> Parser InlineQueryResultGeneric
-> Parser (Text -> InlineQueryResult)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser InlineQueryResultGeneric
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
Parser (Text -> InlineQueryResult)
-> Parser Text -> Parser InlineQueryResult
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"game_short_name"
Text
t -> String -> Parser InlineQueryResult
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser InlineQueryResult)
-> String -> Parser InlineQueryResult
forall a b. (a -> b) -> a -> b
$ Text -> String
Text.unpack (Text
"Unknown type: " Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
t)
where
parseFileId :: Object -> Key -> Parser (Maybe FileId)
parseFileId Object
o Key
fileField = Object
o Object -> Key -> Parser (Maybe FileId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
fileField :: Parser (Maybe FileId)
defInlineQueryResultArticle :: InlineQueryResultGenericThumbnail -> InlineQueryResult
defInlineQueryResultArticle :: InlineQueryResultGenericThumbnail -> InlineQueryResult
defInlineQueryResultArticle InlineQueryResultGenericThumbnail
g = InlineQueryResultGenericThumbnail
-> Maybe Text -> Maybe Bool -> InlineQueryResult
InlineQueryResultArticle InlineQueryResultGenericThumbnail
g Maybe Text
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing
defInlineQueryResultPhotoUrl :: InlineQueryResultGenericThumbnail -> Text -> InlineQueryResult
defInlineQueryResultPhotoUrl :: InlineQueryResultGenericThumbnail -> Text -> InlineQueryResult
defInlineQueryResultPhotoUrl InlineQueryResultGenericThumbnail
g Text
photoUrl = InlineQueryResultGenericThumbnail
-> Text -> Maybe Integer -> Maybe Integer -> InlineQueryResult
InlineQueryResultPhoto InlineQueryResultGenericThumbnail
g Text
photoUrl Maybe Integer
forall a. Maybe a
Nothing Maybe Integer
forall a. Maybe a
Nothing
defInlineQueryResultGif :: InlineQueryResultGenericThumbnail -> Text -> InlineQueryResult
defInlineQueryResultGif :: InlineQueryResultGenericThumbnail -> Text -> InlineQueryResult
defInlineQueryResultGif InlineQueryResultGenericThumbnail
g Text
gifUrl = InlineQueryResultGenericThumbnail
-> Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult
InlineQueryResultGif InlineQueryResultGenericThumbnail
g Text
gifUrl Maybe Integer
forall a. Maybe a
Nothing Maybe Integer
forall a. Maybe a
Nothing Maybe Integer
forall a. Maybe a
Nothing
defInlineQueryResultMpeg4Gif :: InlineQueryResultGenericThumbnail -> Text -> InlineQueryResult
defInlineQueryResultMpeg4Gif :: InlineQueryResultGenericThumbnail -> Text -> InlineQueryResult
defInlineQueryResultMpeg4Gif InlineQueryResultGenericThumbnail
g Text
mpeg4Url = InlineQueryResultGenericThumbnail
-> Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult
InlineQueryResultMpeg4Gif InlineQueryResultGenericThumbnail
g Text
mpeg4Url Maybe Integer
forall a. Maybe a
Nothing Maybe Integer
forall a. Maybe a
Nothing Maybe Integer
forall a. Maybe a
Nothing
defInlineQueryResultVideo :: InlineQueryResultGenericThumbnail -> Text -> Text -> InlineQueryResult
defInlineQueryResultVideo :: InlineQueryResultGenericThumbnail
-> Text -> Text -> InlineQueryResult
defInlineQueryResultVideo InlineQueryResultGenericThumbnail
g Text
videoUrl Text
mimeType
= InlineQueryResultGenericThumbnail
-> Text
-> Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> InlineQueryResult
InlineQueryResultVideo InlineQueryResultGenericThumbnail
g Text
videoUrl Text
mimeType Maybe Integer
forall a. Maybe a
Nothing Maybe Integer
forall a. Maybe a
Nothing Maybe Integer
forall a. Maybe a
Nothing
defInlineQueryResultAudio :: InlineQueryResultGeneric -> Text -> InlineQueryResult
defInlineQueryResultAudio :: InlineQueryResultGeneric -> Text -> InlineQueryResult
defInlineQueryResultAudio InlineQueryResultGeneric
g Text
audioUrl = InlineQueryResultGeneric
-> Text -> Maybe Text -> Maybe Integer -> InlineQueryResult
InlineQueryResultAudio InlineQueryResultGeneric
g Text
audioUrl Maybe Text
forall a. Maybe a
Nothing Maybe Integer
forall a. Maybe a
Nothing
defInlineQueryResultVoice :: InlineQueryResultGeneric -> Text -> InlineQueryResult
defInlineQueryResultVoice :: InlineQueryResultGeneric -> Text -> InlineQueryResult
defInlineQueryResultVoice InlineQueryResultGeneric
g Text
voiceUrl = InlineQueryResultGeneric
-> Text -> Maybe Integer -> InlineQueryResult
InlineQueryResultVoice InlineQueryResultGeneric
g Text
voiceUrl Maybe Integer
forall a. Maybe a
Nothing
defInlineQueryResultDocument :: InlineQueryResultGenericThumbnail -> Text -> Text -> InlineQueryResult
defInlineQueryResultDocument :: InlineQueryResultGenericThumbnail
-> Text -> Text -> InlineQueryResult
defInlineQueryResultDocument = InlineQueryResultGenericThumbnail
-> Text -> Text -> InlineQueryResult
InlineQueryResultDocument
defInlineQueryResultLocation :: InlineQueryResultGenericThumbnail -> Float -> Float -> InlineQueryResult
defInlineQueryResultLocation :: InlineQueryResultGenericThumbnail
-> Float -> Float -> InlineQueryResult
defInlineQueryResultLocation InlineQueryResultGenericThumbnail
g Float
lat Float
lon
= InlineQueryResultGenericThumbnail
-> Float
-> Float
-> Maybe Float
-> Maybe Seconds
-> Maybe Int
-> Maybe Int
-> InlineQueryResult
InlineQueryResultLocation InlineQueryResultGenericThumbnail
g Float
lat Float
lon Maybe Float
forall a. Maybe a
Nothing Maybe Seconds
forall a. Maybe a
Nothing Maybe Int
forall a. Maybe a
Nothing Maybe Int
forall a. Maybe a
Nothing
defInlineQueryResultVenue :: InlineQueryResultGenericThumbnail -> Float -> Float -> Text -> InlineQueryResult
defInlineQueryResultVenue :: InlineQueryResultGenericThumbnail
-> Float -> Float -> Text -> InlineQueryResult
defInlineQueryResultVenue InlineQueryResultGenericThumbnail
g Float
lat Float
lon Text
address
= InlineQueryResultGenericThumbnail
-> Float
-> Float
-> Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> InlineQueryResult
InlineQueryResultVenue InlineQueryResultGenericThumbnail
g Float
lat Float
lon Text
address Maybe Text
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing
defInlineQueryResultContact :: InlineQueryResultGenericThumbnail -> Text -> Text -> InlineQueryResult
defInlineQueryResultContact :: InlineQueryResultGenericThumbnail
-> Text -> Text -> InlineQueryResult
defInlineQueryResultContact InlineQueryResultGenericThumbnail
g Text
phoneNumber Text
firstName
= InlineQueryResultGenericThumbnail
-> Text -> Text -> Maybe Text -> Maybe Text -> InlineQueryResult
InlineQueryResultContact InlineQueryResultGenericThumbnail
g Text
phoneNumber Text
firstName Maybe Text
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing
data InlineQueryResultsButton = InlineQueryResultsButton
{ InlineQueryResultsButton -> Text
inlineQueryResultsButtonText :: Text
, InlineQueryResultsButton -> Maybe WebAppInfo
inlineQueryResultsButtonWebApp :: Maybe WebAppInfo
, InlineQueryResultsButton -> Maybe Text
inlineQueryResultsButtonStartParameter :: Maybe Text
}
deriving (forall x.
InlineQueryResultsButton -> Rep InlineQueryResultsButton x)
-> (forall x.
Rep InlineQueryResultsButton x -> InlineQueryResultsButton)
-> Generic InlineQueryResultsButton
forall x.
Rep InlineQueryResultsButton x -> InlineQueryResultsButton
forall x.
InlineQueryResultsButton -> Rep InlineQueryResultsButton x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
InlineQueryResultsButton -> Rep InlineQueryResultsButton x
from :: forall x.
InlineQueryResultsButton -> Rep InlineQueryResultsButton x
$cto :: forall x.
Rep InlineQueryResultsButton x -> InlineQueryResultsButton
to :: forall x.
Rep InlineQueryResultsButton x -> InlineQueryResultsButton
Generic
instance ToJSON InlineQueryResultsButton where toJSON :: InlineQueryResultsButton -> Value
toJSON = InlineQueryResultsButton -> Value
forall a (d :: Meta) (f :: * -> *).
(Generic a, GToJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
a -> Value
gtoJSON
instance FromJSON InlineQueryResultsButton where parseJSON :: Value -> Parser InlineQueryResultsButton
parseJSON = Value -> Parser InlineQueryResultsButton
forall a (d :: Meta) (f :: * -> *).
(Generic a, GFromJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
Value -> Parser a
gparseJSON
foldMap makeDefault
[ ''InlineQueryResultGeneric
, ''InlineQueryResultGenericThumbnail
]