{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE LambdaCase #-}
module Telegram.Bot.API.Stickers where
import Control.Monad.IO.Class
import Data.Aeson
import Data.Aeson.Text
import Data.Bool
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.Text.Lazy as TL
import Data.Proxy
import GHC.Generics (Generic)
import Servant.API
import Servant.Client hiding (Response)
import Servant.Multipart.API
import Servant.Multipart.Client
import Telegram.Bot.API.Internal.Utils
import Telegram.Bot.API.MakingRequests (Response)
import Telegram.Bot.API.Types
import Data.Maybe (catMaybes)
import Data.Functor
import Telegram.Bot.API.Internal.TH (makeDefault)
data StickerType
= PngSticker
| TgsSticker
| WebmSticker
data StickerFile = StickerFile {StickerFile -> InputFile
stickerFileSticker :: InputFile, StickerFile -> StickerType
stickerFileLabel :: StickerType}
data SendStickerRequest = SendStickerRequest
{ SendStickerRequest -> Maybe BusinessConnectionId
sendStickerBusinessConnectionId :: Maybe BusinessConnectionId
, SendStickerRequest -> SomeChatId
sendStickerChatId :: SomeChatId
, SendStickerRequest -> Maybe MessageThreadId
sendStickerMessageThreadId :: Maybe MessageThreadId
, SendStickerRequest -> Maybe Text
sendStickerEmoji :: Maybe Text
, SendStickerRequest -> InputFile
sendStickerSticker :: InputFile
, SendStickerRequest -> Maybe Bool
sendStickerDisableNotification :: Maybe Bool
, SendStickerRequest -> Maybe Bool
sendStickerProtectContent :: Maybe Bool
, SendStickerRequest -> Maybe Text
sendStickerMessageEffectId :: Maybe Text
, SendStickerRequest -> Maybe MessageId
sendStickerReplyToMessageId :: Maybe MessageId
, SendStickerRequest -> Maybe ReplyParameters
sendStickerReplyParameters :: Maybe ReplyParameters
, SendStickerRequest -> Maybe InlineKeyboardMarkup
sendStickerReplyMarkup :: Maybe InlineKeyboardMarkup
}
deriving (forall x. SendStickerRequest -> Rep SendStickerRequest x)
-> (forall x. Rep SendStickerRequest x -> SendStickerRequest)
-> Generic SendStickerRequest
forall x. Rep SendStickerRequest x -> SendStickerRequest
forall x. SendStickerRequest -> Rep SendStickerRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SendStickerRequest -> Rep SendStickerRequest x
from :: forall x. SendStickerRequest -> Rep SendStickerRequest x
$cto :: forall x. Rep SendStickerRequest x -> SendStickerRequest
to :: forall x. Rep SendStickerRequest x -> SendStickerRequest
Generic
instance ToJSON SendStickerRequest where toJSON :: SendStickerRequest -> Value
toJSON = SendStickerRequest -> Value
forall a (d :: Meta) (f :: * -> *).
(Generic a, GToJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
a -> Value
gtoJSON
instance ToMultipart Tmp SendStickerRequest where
toMultipart :: SendStickerRequest -> MultipartData Tmp
toMultipart SendStickerRequest{Maybe Bool
Maybe Text
Maybe BusinessConnectionId
Maybe MessageThreadId
Maybe MessageId
Maybe InlineKeyboardMarkup
Maybe ReplyParameters
SomeChatId
InputFile
sendStickerBusinessConnectionId :: SendStickerRequest -> Maybe BusinessConnectionId
sendStickerChatId :: SendStickerRequest -> SomeChatId
sendStickerMessageThreadId :: SendStickerRequest -> Maybe MessageThreadId
sendStickerEmoji :: SendStickerRequest -> Maybe Text
sendStickerSticker :: SendStickerRequest -> InputFile
sendStickerDisableNotification :: SendStickerRequest -> Maybe Bool
sendStickerProtectContent :: SendStickerRequest -> Maybe Bool
sendStickerMessageEffectId :: SendStickerRequest -> Maybe Text
sendStickerReplyToMessageId :: SendStickerRequest -> Maybe MessageId
sendStickerReplyParameters :: SendStickerRequest -> Maybe ReplyParameters
sendStickerReplyMarkup :: SendStickerRequest -> Maybe InlineKeyboardMarkup
sendStickerBusinessConnectionId :: Maybe BusinessConnectionId
sendStickerChatId :: SomeChatId
sendStickerMessageThreadId :: Maybe MessageThreadId
sendStickerEmoji :: Maybe Text
sendStickerSticker :: InputFile
sendStickerDisableNotification :: Maybe Bool
sendStickerProtectContent :: Maybe Bool
sendStickerMessageEffectId :: Maybe Text
sendStickerReplyToMessageId :: Maybe MessageId
sendStickerReplyParameters :: Maybe ReplyParameters
sendStickerReplyMarkup :: Maybe InlineKeyboardMarkup
..} =
Text -> InputFile -> MultipartData Tmp -> MultipartData Tmp
makeFile Text
"sticker" InputFile
sendStickerSticker ([Input] -> [FileData Tmp] -> MultipartData Tmp
forall tag. [Input] -> [FileData tag] -> MultipartData tag
MultipartData [Input]
fields []) where
fields :: [Input]
fields =
[ Text -> Text -> Input
Input Text
"chat_id" (Text -> Input) -> Text -> Input
forall a b. (a -> b) -> a -> b
$ case SomeChatId
sendStickerChatId of
SomeChatId (ChatId Integer
chat_id) -> String -> Text
T.pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ Integer -> String
forall a. Show a => a -> String
show Integer
chat_id
SomeChatUsername Text
txt -> Text
txt
] [Input] -> [Input] -> [Input]
forall a. Semigroup a => a -> a -> a
<> [Maybe Input] -> [Input]
forall a. [Maybe a] -> [a]
catMaybes
[ Maybe MessageThreadId
sendStickerMessageThreadId Maybe MessageThreadId -> (MessageThreadId -> Input) -> Maybe Input
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&>
\MessageThreadId
t -> Text -> Text -> Input
Input Text
"message_thread_id" (String -> Text
T.pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ MessageThreadId -> String
forall a. Show a => a -> String
show MessageThreadId
t)
, Maybe Bool
sendStickerDisableNotification Maybe Bool -> (Bool -> Input) -> Maybe Input
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&>
\Bool
t -> Text -> Text -> Input
Input Text
"disable_notification" (Text -> Text -> Bool -> Text
forall a. a -> a -> Bool -> a
bool Text
"false" Text
"true" Bool
t)
, Maybe Bool
sendStickerProtectContent Maybe Bool -> (Bool -> Input) -> Maybe Input
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&>
\Bool
t -> Text -> Text -> Input
Input Text
"protect_content" (Text -> Text -> Bool -> Text
forall a. a -> a -> Bool -> a
bool Text
"false" Text
"true" Bool
t)
, Maybe MessageId
sendStickerReplyToMessageId Maybe MessageId -> (MessageId -> Input) -> Maybe Input
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&>
\MessageId
t -> Text -> Text -> Input
Input Text
"reply_to_message_id" (Text -> Text
TL.toStrict (Text -> Text) -> Text -> Text
forall a b. (a -> b) -> a -> b
$ MessageId -> Text
forall a. ToJSON a => a -> Text
encodeToLazyText MessageId
t)
, Maybe ReplyParameters
sendStickerReplyParameters Maybe ReplyParameters -> (ReplyParameters -> Input) -> Maybe Input
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&>
\ReplyParameters
t -> Text -> Text -> Input
Input Text
"reply_parameters" (Text -> Text
TL.toStrict (Text -> Text) -> Text -> Text
forall a b. (a -> b) -> a -> b
$ ReplyParameters -> Text
forall a. ToJSON a => a -> Text
encodeToLazyText ReplyParameters
t)
, Maybe InlineKeyboardMarkup
sendStickerReplyMarkup Maybe InlineKeyboardMarkup
-> (InlineKeyboardMarkup -> Input) -> Maybe Input
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&>
\InlineKeyboardMarkup
t -> Text -> Text -> Input
Input Text
"reply_markup" (Text -> Text
TL.toStrict (Text -> Text) -> Text -> Text
forall a b. (a -> b) -> a -> b
$ InlineKeyboardMarkup -> Text
forall a. ToJSON a => a -> Text
encodeToLazyText InlineKeyboardMarkup
t)
]
type SendStickerContent
= "sendSticker"
:> MultipartForm Tmp SendStickerRequest
:> Post '[JSON] (Response Message)
type SendStickerLink
= "sendSticker"
:> ReqBody '[JSON] SendStickerRequest
:> Post '[JSON] (Response Message)
sendSticker :: SendStickerRequest -> ClientM (Response Message)
sendSticker :: SendStickerRequest -> ClientM (Response Message)
sendSticker SendStickerRequest
r =
case SendStickerRequest -> InputFile
sendStickerSticker SendStickerRequest
r of
InputFile{} -> do
ByteString
boundary <- IO ByteString -> ClientM ByteString
forall a. IO a -> ClientM a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO IO ByteString
genBoundary
Proxy SendStickerContent -> Client ClientM SendStickerContent
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @SendStickerContent) (ByteString
boundary, SendStickerRequest
r)
InputFile
_ -> Proxy SendStickerLink -> Client ClientM SendStickerLink
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @SendStickerLink) SendStickerRequest
r
newtype GetCustomEmojiStickersRequest = GetCustomEmojiStickersRequest
{ GetCustomEmojiStickersRequest -> [Text]
getCustomEmojiStickersRequestCustomEmojiIds :: [Text]
}
deriving (forall x.
GetCustomEmojiStickersRequest
-> Rep GetCustomEmojiStickersRequest x)
-> (forall x.
Rep GetCustomEmojiStickersRequest x
-> GetCustomEmojiStickersRequest)
-> Generic GetCustomEmojiStickersRequest
forall x.
Rep GetCustomEmojiStickersRequest x
-> GetCustomEmojiStickersRequest
forall x.
GetCustomEmojiStickersRequest
-> Rep GetCustomEmojiStickersRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
GetCustomEmojiStickersRequest
-> Rep GetCustomEmojiStickersRequest x
from :: forall x.
GetCustomEmojiStickersRequest
-> Rep GetCustomEmojiStickersRequest x
$cto :: forall x.
Rep GetCustomEmojiStickersRequest x
-> GetCustomEmojiStickersRequest
to :: forall x.
Rep GetCustomEmojiStickersRequest x
-> GetCustomEmojiStickersRequest
Generic
instance ToJSON GetCustomEmojiStickersRequest where toJSON :: GetCustomEmojiStickersRequest -> Value
toJSON = GetCustomEmojiStickersRequest -> Value
forall a (d :: Meta) (f :: * -> *).
(Generic a, GToJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
a -> Value
gtoJSON
type GetCustomEmojiStickers
= "getCustomEmojiStickers"
:> ReqBody '[JSON] GetCustomEmojiStickersRequest
:> Post '[JSON] (Response [Sticker])
getCustomEmojiStickers :: GetCustomEmojiStickersRequest -> ClientM (Response [Sticker])
getCustomEmojiStickers :: GetCustomEmojiStickersRequest -> ClientM (Response [Sticker])
getCustomEmojiStickers = Proxy GetCustomEmojiStickers
-> Client ClientM GetCustomEmojiStickers
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @GetCustomEmojiStickers)
data UploadStickerFileRequest = UploadStickerFileRequest
{ UploadStickerFileRequest -> UserId
uploadStickerFileUserId :: UserId
, UploadStickerFileRequest -> InputFile
uploadStickerFileSticker :: InputFile
, UploadStickerFileRequest -> Text
uploadStickerFileStickerFormat :: Text
} deriving (forall x.
UploadStickerFileRequest -> Rep UploadStickerFileRequest x)
-> (forall x.
Rep UploadStickerFileRequest x -> UploadStickerFileRequest)
-> Generic UploadStickerFileRequest
forall x.
Rep UploadStickerFileRequest x -> UploadStickerFileRequest
forall x.
UploadStickerFileRequest -> Rep UploadStickerFileRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
UploadStickerFileRequest -> Rep UploadStickerFileRequest x
from :: forall x.
UploadStickerFileRequest -> Rep UploadStickerFileRequest x
$cto :: forall x.
Rep UploadStickerFileRequest x -> UploadStickerFileRequest
to :: forall x.
Rep UploadStickerFileRequest x -> UploadStickerFileRequest
Generic
instance ToJSON UploadStickerFileRequest where toJSON :: UploadStickerFileRequest -> Value
toJSON = UploadStickerFileRequest -> Value
forall a (d :: Meta) (f :: * -> *).
(Generic a, GToJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
a -> Value
gtoJSON
instance ToMultipart Tmp UploadStickerFileRequest where
toMultipart :: UploadStickerFileRequest -> MultipartData Tmp
toMultipart UploadStickerFileRequest{Text
UserId
InputFile
uploadStickerFileUserId :: UploadStickerFileRequest -> UserId
uploadStickerFileSticker :: UploadStickerFileRequest -> InputFile
uploadStickerFileStickerFormat :: UploadStickerFileRequest -> Text
uploadStickerFileUserId :: UserId
uploadStickerFileSticker :: InputFile
uploadStickerFileStickerFormat :: Text
..} =
Text -> InputFile -> MultipartData Tmp -> MultipartData Tmp
makeFile Text
"sticker" InputFile
uploadStickerFileSticker ([Input] -> [FileData Tmp] -> MultipartData Tmp
forall tag. [Input] -> [FileData tag] -> MultipartData tag
MultipartData [Input]
fields []) where
fields :: [Input]
fields = [ Text -> Text -> Input
Input Text
"user_id" (Text -> Input) -> Text -> Input
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (UserId -> String) -> UserId -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UserId -> String
forall a. Show a => a -> String
show (UserId -> Text) -> UserId -> Text
forall a b. (a -> b) -> a -> b
$ UserId
uploadStickerFileUserId
, Text -> Text -> Input
Input Text
"sticker_format" (Text -> Input) -> Text -> Input
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (Text -> String) -> Text -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
forall a. Show a => a -> String
show (Text -> Text) -> Text -> Text
forall a b. (a -> b) -> a -> b
$ Text
uploadStickerFileStickerFormat
]
type UploadStickerFileContent
= "uploadStickerFile"
:> MultipartForm Tmp UploadStickerFileRequest
:> Post '[JSON] (Response File)
type UploadStickerFileLink
= "uploadStickerFile"
:> ReqBody '[JSON] UploadStickerFileRequest
:> Post '[JSON] (Response File)
uploadStickerFile :: UploadStickerFileRequest -> ClientM (Response File)
uploadStickerFile :: UploadStickerFileRequest -> ClientM (Response File)
uploadStickerFile UploadStickerFileRequest
r =
case UploadStickerFileRequest -> InputFile
uploadStickerFileSticker UploadStickerFileRequest
r of
InputFile{} -> do
ByteString
boundary <- IO ByteString -> ClientM ByteString
forall a. IO a -> ClientM a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO IO ByteString
genBoundary
Proxy UploadStickerFileContent
-> Client ClientM UploadStickerFileContent
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @UploadStickerFileContent) (ByteString
boundary, UploadStickerFileRequest
r)
InputFile
_ -> Proxy UploadStickerFileLink -> Client ClientM UploadStickerFileLink
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @UploadStickerFileLink) UploadStickerFileRequest
r
data CreateNewStickerSetRequest = CreateNewStickerSetRequest
{ CreateNewStickerSetRequest -> UserId
createNewStickerSetUserId :: UserId
, CreateNewStickerSetRequest -> Text
createNewStickerSetName :: T.Text
, CreateNewStickerSetRequest -> Text
createNewStickerSetTitle :: T.Text
, CreateNewStickerSetRequest -> [InputSticker]
createNewStickerSetStickers :: [InputSticker]
, CreateNewStickerSetRequest -> Maybe StickerSetType
createNewStickerSetStickerType :: Maybe StickerSetType
, CreateNewStickerSetRequest -> Maybe Bool
createNewStickerSetNeedsRepainting :: Maybe Bool
} deriving (forall x.
CreateNewStickerSetRequest -> Rep CreateNewStickerSetRequest x)
-> (forall x.
Rep CreateNewStickerSetRequest x -> CreateNewStickerSetRequest)
-> Generic CreateNewStickerSetRequest
forall x.
Rep CreateNewStickerSetRequest x -> CreateNewStickerSetRequest
forall x.
CreateNewStickerSetRequest -> Rep CreateNewStickerSetRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
CreateNewStickerSetRequest -> Rep CreateNewStickerSetRequest x
from :: forall x.
CreateNewStickerSetRequest -> Rep CreateNewStickerSetRequest x
$cto :: forall x.
Rep CreateNewStickerSetRequest x -> CreateNewStickerSetRequest
to :: forall x.
Rep CreateNewStickerSetRequest x -> CreateNewStickerSetRequest
Generic
instance ToJSON CreateNewStickerSetRequest where toJSON :: CreateNewStickerSetRequest -> Value
toJSON = CreateNewStickerSetRequest -> Value
forall a (d :: Meta) (f :: * -> *).
(Generic a, GToJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
a -> Value
gtoJSON
type CreateNewStickerSet
= "createNewStickerSet"
:> ReqBody '[JSON] CreateNewStickerSetRequest
:> Post '[JSON] (Response Bool)
createNewStickerSet :: CreateNewStickerSetRequest -> ClientM (Response Bool)
createNewStickerSet :: CreateNewStickerSetRequest -> ClientM (Response Bool)
createNewStickerSet = Proxy CreateNewStickerSet -> Client ClientM CreateNewStickerSet
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @CreateNewStickerSet)
data AddStickerToSetRequest = AddStickerToSetRequest
{ AddStickerToSetRequest -> UserId
addStickerToSetUserId :: UserId
, AddStickerToSetRequest -> Text
addStickerToSetName :: T.Text
, AddStickerToSetRequest -> InputSticker
addStickerToSetStickers :: InputSticker
} deriving (forall x. AddStickerToSetRequest -> Rep AddStickerToSetRequest x)
-> (forall x.
Rep AddStickerToSetRequest x -> AddStickerToSetRequest)
-> Generic AddStickerToSetRequest
forall x. Rep AddStickerToSetRequest x -> AddStickerToSetRequest
forall x. AddStickerToSetRequest -> Rep AddStickerToSetRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. AddStickerToSetRequest -> Rep AddStickerToSetRequest x
from :: forall x. AddStickerToSetRequest -> Rep AddStickerToSetRequest x
$cto :: forall x. Rep AddStickerToSetRequest x -> AddStickerToSetRequest
to :: forall x. Rep AddStickerToSetRequest x -> AddStickerToSetRequest
Generic
instance ToJSON AddStickerToSetRequest where toJSON :: AddStickerToSetRequest -> Value
toJSON = AddStickerToSetRequest -> Value
forall a (d :: Meta) (f :: * -> *).
(Generic a, GToJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
a -> Value
gtoJSON
type AddStickerToSet
= "addStickerToSet"
:> ReqBody '[JSON] AddStickerToSetRequest
:> Post '[JSON] (Response Bool)
addStickerToSet :: AddStickerToSetRequest -> ClientM (Response Bool)
addStickerToSet :: AddStickerToSetRequest -> ClientM (Response Bool)
addStickerToSet = Proxy AddStickerToSet -> Client ClientM AddStickerToSet
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @AddStickerToSet)
type GetStickerSet
= "getStickerSet"
:> RequiredQueryParam "name" T.Text
:> Get '[JSON] (Response StickerSet)
getStickerSet :: T.Text
-> ClientM (Response StickerSet)
getStickerSet :: Text -> ClientM (Response StickerSet)
getStickerSet = Proxy GetStickerSet -> Client ClientM GetStickerSet
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @GetStickerSet)
type SetStickerPositionInSet
= "setStickerPositionInSet"
:> RequiredQueryParam "sticker" T.Text
:> RequiredQueryParam "position" Integer
:> Post '[JSON] (Response Bool)
setStickerPositionInSet :: T.Text
-> Integer
-> ClientM (Response Bool)
setStickerPositionInSet :: Text -> Integer -> ClientM (Response Bool)
setStickerPositionInSet = Proxy SetStickerPositionInSet
-> Client ClientM SetStickerPositionInSet
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @SetStickerPositionInSet)
type DeleteStickerFromSet
= "deleteStickerFromSet"
:> RequiredQueryParam "sticker" T.Text
:> Post '[JSON] (Response Bool)
deleteStickerFromSet :: T.Text
-> ClientM (Response Bool)
deleteStickerFromSet :: Text -> ClientM (Response Bool)
deleteStickerFromSet = Proxy DeleteStickerFromSet -> Client ClientM DeleteStickerFromSet
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @DeleteStickerFromSet)
data SetStickerSetThumbnailRequest = SetStickerSetThumbnailRequest
{ SetStickerSetThumbnailRequest -> Text
setStickerSetThumbnailName :: T.Text
, SetStickerSetThumbnailRequest -> UserId
setStickerSetThumbnailUserId :: UserId
, SetStickerSetThumbnailRequest -> InputFile
setStickerSetThumbnailThumbnail :: InputFile
, SetStickerSetThumbnailRequest -> Text
setStickerSetThumbnailFormat :: Text
} deriving (forall x.
SetStickerSetThumbnailRequest
-> Rep SetStickerSetThumbnailRequest x)
-> (forall x.
Rep SetStickerSetThumbnailRequest x
-> SetStickerSetThumbnailRequest)
-> Generic SetStickerSetThumbnailRequest
forall x.
Rep SetStickerSetThumbnailRequest x
-> SetStickerSetThumbnailRequest
forall x.
SetStickerSetThumbnailRequest
-> Rep SetStickerSetThumbnailRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
SetStickerSetThumbnailRequest
-> Rep SetStickerSetThumbnailRequest x
from :: forall x.
SetStickerSetThumbnailRequest
-> Rep SetStickerSetThumbnailRequest x
$cto :: forall x.
Rep SetStickerSetThumbnailRequest x
-> SetStickerSetThumbnailRequest
to :: forall x.
Rep SetStickerSetThumbnailRequest x
-> SetStickerSetThumbnailRequest
Generic
instance ToJSON SetStickerSetThumbnailRequest where toJSON :: SetStickerSetThumbnailRequest -> Value
toJSON = SetStickerSetThumbnailRequest -> Value
forall a (d :: Meta) (f :: * -> *).
(Generic a, GToJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
a -> Value
gtoJSON
instance ToMultipart Tmp SetStickerSetThumbnailRequest where
toMultipart :: SetStickerSetThumbnailRequest -> MultipartData Tmp
toMultipart SetStickerSetThumbnailRequest{Text
UserId
InputFile
setStickerSetThumbnailName :: SetStickerSetThumbnailRequest -> Text
setStickerSetThumbnailUserId :: SetStickerSetThumbnailRequest -> UserId
setStickerSetThumbnailThumbnail :: SetStickerSetThumbnailRequest -> InputFile
setStickerSetThumbnailFormat :: SetStickerSetThumbnailRequest -> Text
setStickerSetThumbnailName :: Text
setStickerSetThumbnailUserId :: UserId
setStickerSetThumbnailThumbnail :: InputFile
setStickerSetThumbnailFormat :: Text
..} =
Text -> InputFile -> MultipartData Tmp -> MultipartData Tmp
makeFile Text
"png_sticker" InputFile
setStickerSetThumbnailThumbnail ([Input] -> [FileData Tmp] -> MultipartData Tmp
forall tag. [Input] -> [FileData tag] -> MultipartData tag
MultipartData [Input]
fields []) where
fields :: [Input]
fields =
[ Text -> Text -> Input
Input Text
"user_id" (Text -> Input) -> Text -> Input
forall a b. (a -> b) -> a -> b
$ String -> Text
T.pack (String -> Text) -> (UserId -> String) -> UserId -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UserId -> String
forall a. Show a => a -> String
show (UserId -> Text) -> UserId -> Text
forall a b. (a -> b) -> a -> b
$ UserId
setStickerSetThumbnailUserId
, Text -> Text -> Input
Input Text
"name" Text
setStickerSetThumbnailName
]
type SetStickerSetThumbnailContent
= "setStickerSetThumbnail"
:> MultipartForm Tmp SetStickerSetThumbnailRequest
:> Post '[JSON] (Response Bool)
type SetStickerSetThumbnailLink
= "setStickerSetThumbnail"
:> ReqBody '[JSON] SetStickerSetThumbnailRequest
:> Post '[JSON] (Response Bool)
setStickerSetThumbnail :: SetStickerSetThumbnailRequest -> ClientM (Response Bool)
setStickerSetThumbnail :: SetStickerSetThumbnailRequest -> ClientM (Response Bool)
setStickerSetThumbnail SetStickerSetThumbnailRequest
r =
case SetStickerSetThumbnailRequest -> InputFile
setStickerSetThumbnailThumbnail SetStickerSetThumbnailRequest
r of
InputFile{} -> do
ByteString
boundary <- IO ByteString -> ClientM ByteString
forall a. IO a -> ClientM a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO IO ByteString
genBoundary
Proxy SetStickerSetThumbnailContent
-> Client ClientM SetStickerSetThumbnailContent
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @SetStickerSetThumbnailContent) (ByteString
boundary, SetStickerSetThumbnailRequest
r)
InputFile
_ -> Proxy SetStickerSetThumbnailLink
-> Client ClientM SetStickerSetThumbnailLink
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @SetStickerSetThumbnailLink) SetStickerSetThumbnailRequest
r
foldMap makeDefault
[ ''SendStickerRequest
, ''GetCustomEmojiStickersRequest
, ''UploadStickerFileRequest
, ''CreateNewStickerSetRequest
, ''AddStickerToSetRequest
, ''SetStickerSetThumbnailRequest
]