use crate::Result;
use crate::types::file::File;
use crate::types::message::Message;
use crate::types::sticker::{
AddStickerToSetRequest, CreateNewStickerSetRequest, DeleteStickerFromSetRequest,
DeleteStickerSetRequest, GetCustomEmojiStickersRequest, GetStickerSetRequest,
ReplaceStickerInSetRequest, SendStickerRequest, SetCustomEmojiStickerSetThumbnailRequest,
SetStickerEmojiListRequest, SetStickerKeywordsRequest, SetStickerMaskPositionRequest,
SetStickerPositionInSetRequest, SetStickerSetThumbnailRequest, SetStickerSetTitleRequest,
Sticker, StickerSet, UploadStickerFileRequest,
};
use crate::types::upload::UploadFile;
#[cfg(feature = "_blocking")]
use crate::BlockingClient;
#[cfg(feature = "_async")]
use crate::Client;
#[cfg(feature = "_async")]
#[derive(Clone)]
pub struct StickersService {
client: Client,
}
#[cfg(feature = "_async")]
impl StickersService {
pub(crate) fn new(client: Client) -> Self {
Self { client }
}
pub async fn send_sticker(&self, request: &SendStickerRequest) -> Result<Message> {
request.validate()?;
self.client.call_method("sendSticker", request).await
}
pub async fn send_sticker_upload(
&self,
request: &SendStickerRequest,
file: &UploadFile,
) -> Result<Message> {
request.validate()?;
self.client
.call_method_multipart("sendSticker", request, "sticker", file)
.await
}
pub async fn get_sticker_set(&self, request: &GetStickerSetRequest) -> Result<StickerSet> {
request.validate()?;
self.client.call_method("getStickerSet", request).await
}
pub async fn get_custom_emoji_stickers(
&self,
request: &GetCustomEmojiStickersRequest,
) -> Result<Vec<Sticker>> {
request.validate()?;
self.client
.call_method("getCustomEmojiStickers", request)
.await
}
pub async fn upload_sticker_file(&self, request: &UploadStickerFileRequest) -> Result<File> {
request.validate()?;
self.client.call_method("uploadStickerFile", request).await
}
pub async fn upload_sticker_file_upload(
&self,
request: &UploadStickerFileRequest,
file: &UploadFile,
) -> Result<File> {
request.validate()?;
self.client
.call_method_multipart("uploadStickerFile", request, "sticker", file)
.await
}
pub async fn create_new_sticker_set(
&self,
request: &CreateNewStickerSetRequest,
) -> Result<bool> {
request.validate()?;
self.client
.call_method("createNewStickerSet", request)
.await
}
pub async fn add_sticker_to_set(&self, request: &AddStickerToSetRequest) -> Result<bool> {
request.validate()?;
self.client.call_method("addStickerToSet", request).await
}
pub async fn set_sticker_position_in_set(
&self,
request: &SetStickerPositionInSetRequest,
) -> Result<bool> {
request.validate()?;
self.client
.call_method("setStickerPositionInSet", request)
.await
}
pub async fn delete_sticker_from_set(
&self,
request: &DeleteStickerFromSetRequest,
) -> Result<bool> {
request.validate()?;
self.client
.call_method("deleteStickerFromSet", request)
.await
}
pub async fn replace_sticker_in_set(
&self,
request: &ReplaceStickerInSetRequest,
) -> Result<bool> {
request.validate()?;
self.client
.call_method("replaceStickerInSet", request)
.await
}
pub async fn set_sticker_emoji_list(
&self,
request: &SetStickerEmojiListRequest,
) -> Result<bool> {
request.validate()?;
self.client
.call_method("setStickerEmojiList", request)
.await
}
pub async fn set_sticker_keywords(&self, request: &SetStickerKeywordsRequest) -> Result<bool> {
request.validate()?;
self.client.call_method("setStickerKeywords", request).await
}
pub async fn set_sticker_mask_position(
&self,
request: &SetStickerMaskPositionRequest,
) -> Result<bool> {
request.validate()?;
self.client
.call_method("setStickerMaskPosition", request)
.await
}
pub async fn set_sticker_set_title(&self, request: &SetStickerSetTitleRequest) -> Result<bool> {
request.validate()?;
self.client.call_method("setStickerSetTitle", request).await
}
pub async fn set_sticker_set_thumbnail(
&self,
request: &SetStickerSetThumbnailRequest,
) -> Result<bool> {
request.validate()?;
self.client
.call_method("setStickerSetThumbnail", request)
.await
}
pub async fn set_sticker_set_thumbnail_upload(
&self,
request: &SetStickerSetThumbnailRequest,
file: &UploadFile,
) -> Result<bool> {
request.validate()?;
self.client
.call_method_multipart("setStickerSetThumbnail", request, "thumbnail", file)
.await
}
pub async fn set_custom_emoji_sticker_set_thumbnail(
&self,
request: &SetCustomEmojiStickerSetThumbnailRequest,
) -> Result<bool> {
request.validate()?;
self.client
.call_method("setCustomEmojiStickerSetThumbnail", request)
.await
}
pub async fn delete_sticker_set(&self, request: &DeleteStickerSetRequest) -> Result<bool> {
request.validate()?;
self.client.call_method("deleteStickerSet", request).await
}
}
#[cfg(feature = "_blocking")]
#[derive(Clone)]
pub struct BlockingStickersService {
client: BlockingClient,
}
#[cfg(feature = "_blocking")]
impl BlockingStickersService {
pub(crate) fn new(client: BlockingClient) -> Self {
Self { client }
}
pub fn send_sticker(&self, request: &SendStickerRequest) -> Result<Message> {
request.validate()?;
self.client.call_method("sendSticker", request)
}
pub fn send_sticker_upload(
&self,
request: &SendStickerRequest,
file: &UploadFile,
) -> Result<Message> {
request.validate()?;
self.client
.call_method_multipart("sendSticker", request, "sticker", file)
}
pub fn get_sticker_set(&self, request: &GetStickerSetRequest) -> Result<StickerSet> {
request.validate()?;
self.client.call_method("getStickerSet", request)
}
pub fn get_custom_emoji_stickers(
&self,
request: &GetCustomEmojiStickersRequest,
) -> Result<Vec<Sticker>> {
request.validate()?;
self.client.call_method("getCustomEmojiStickers", request)
}
pub fn upload_sticker_file(&self, request: &UploadStickerFileRequest) -> Result<File> {
request.validate()?;
self.client.call_method("uploadStickerFile", request)
}
pub fn upload_sticker_file_upload(
&self,
request: &UploadStickerFileRequest,
file: &UploadFile,
) -> Result<File> {
request.validate()?;
self.client
.call_method_multipart("uploadStickerFile", request, "sticker", file)
}
pub fn create_new_sticker_set(&self, request: &CreateNewStickerSetRequest) -> Result<bool> {
request.validate()?;
self.client.call_method("createNewStickerSet", request)
}
pub fn add_sticker_to_set(&self, request: &AddStickerToSetRequest) -> Result<bool> {
request.validate()?;
self.client.call_method("addStickerToSet", request)
}
pub fn set_sticker_position_in_set(
&self,
request: &SetStickerPositionInSetRequest,
) -> Result<bool> {
request.validate()?;
self.client.call_method("setStickerPositionInSet", request)
}
pub fn delete_sticker_from_set(&self, request: &DeleteStickerFromSetRequest) -> Result<bool> {
request.validate()?;
self.client.call_method("deleteStickerFromSet", request)
}
pub fn replace_sticker_in_set(&self, request: &ReplaceStickerInSetRequest) -> Result<bool> {
request.validate()?;
self.client.call_method("replaceStickerInSet", request)
}
pub fn set_sticker_emoji_list(&self, request: &SetStickerEmojiListRequest) -> Result<bool> {
request.validate()?;
self.client.call_method("setStickerEmojiList", request)
}
pub fn set_sticker_keywords(&self, request: &SetStickerKeywordsRequest) -> Result<bool> {
request.validate()?;
self.client.call_method("setStickerKeywords", request)
}
pub fn set_sticker_mask_position(
&self,
request: &SetStickerMaskPositionRequest,
) -> Result<bool> {
request.validate()?;
self.client.call_method("setStickerMaskPosition", request)
}
pub fn set_sticker_set_title(&self, request: &SetStickerSetTitleRequest) -> Result<bool> {
request.validate()?;
self.client.call_method("setStickerSetTitle", request)
}
pub fn set_sticker_set_thumbnail(
&self,
request: &SetStickerSetThumbnailRequest,
) -> Result<bool> {
request.validate()?;
self.client.call_method("setStickerSetThumbnail", request)
}
pub fn set_sticker_set_thumbnail_upload(
&self,
request: &SetStickerSetThumbnailRequest,
file: &UploadFile,
) -> Result<bool> {
request.validate()?;
self.client
.call_method_multipart("setStickerSetThumbnail", request, "thumbnail", file)
}
pub fn set_custom_emoji_sticker_set_thumbnail(
&self,
request: &SetCustomEmojiStickerSetThumbnailRequest,
) -> Result<bool> {
request.validate()?;
self.client
.call_method("setCustomEmojiStickerSetThumbnail", request)
}
pub fn delete_sticker_set(&self, request: &DeleteStickerSetRequest) -> Result<bool> {
request.validate()?;
self.client.call_method("deleteStickerSet", request)
}
}