#![allow(unused_imports)]
use crate::objects::*;
use crate::{
CursorPaginated, NextCursor, ResponseMetadata, SlackApiMethod, SlackClient, SlackError,
};
use serde::{Deserialize, Serialize};
#[doc(alias = "admin.emoji.add")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminEmojiAddRequest {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
}
impl AdminEmojiAddRequest {
pub fn new(name: impl Into<String>) -> Self {
Self {
name: name.into(),
url: None,
}
}
pub fn url(mut self, url: impl Into<String>) -> Self {
self.url = Some(url.into());
self
}
}
impl SlackApiMethod for AdminEmojiAddRequest {
const METHOD: &'static str = "admin.emoji.add";
type Response = AdminEmojiAddResponse;
}
#[doc(alias = "admin.emoji.add")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminEmojiAddResponse {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
#[doc(alias = "admin.emoji.addAlias")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminEmojiAddAliasRequest {
pub name: String,
pub alias_for: String,
}
impl AdminEmojiAddAliasRequest {
pub fn new(name: impl Into<String>, alias_for: impl Into<String>) -> Self {
Self {
name: name.into(),
alias_for: alias_for.into(),
}
}
}
impl SlackApiMethod for AdminEmojiAddAliasRequest {
const METHOD: &'static str = "admin.emoji.addAlias";
type Response = AdminEmojiAddAliasResponse;
}
#[doc(alias = "admin.emoji.addAlias")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminEmojiAddAliasResponse {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
#[doc(alias = "admin.emoji.list")]
#[derive(Debug, Clone, PartialEq, Serialize, Default)]
#[non_exhaustive]
pub struct AdminEmojiListRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
}
impl AdminEmojiListRequest {
pub fn new() -> Self {
Self {
cursor: None,
limit: None,
}
}
pub fn cursor(mut self, cursor: impl Into<String>) -> Self {
self.cursor = Some(cursor.into());
self
}
pub fn limit(mut self, limit: i64) -> Self {
self.limit = Some(limit);
self
}
}
impl SlackApiMethod for AdminEmojiListRequest {
const METHOD: &'static str = "admin.emoji.list";
type Response = AdminEmojiListResponse;
}
impl CursorPaginated for AdminEmojiListRequest {
fn set_cursor(&mut self, cursor: String) {
self.cursor = Some(cursor);
}
}
impl NextCursor for AdminEmojiListResponse {
fn next_cursor(&self) -> Option<&str> {
self.response_metadata.as_ref()?.next_cursor.as_deref()
}
}
#[doc(alias = "admin.emoji.list")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminEmojiListResponse {
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub emoji: Option<std::collections::HashMap<String, AdminEmojiListResponseEmojiValue>>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminEmojiListResponseEmojiValue {
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub url: Option<String>,
#[serde(
default,
deserialize_with = "crate::de::opt_i64",
skip_serializing_if = "Option::is_none"
)]
pub date_created: Option<i64>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub uploaded_by: Option<String>,
}
#[doc(alias = "admin.emoji.remove")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminEmojiRemoveRequest {
pub name: String,
}
impl AdminEmojiRemoveRequest {
pub fn new(name: impl Into<String>) -> Self {
Self { name: name.into() }
}
}
impl SlackApiMethod for AdminEmojiRemoveRequest {
const METHOD: &'static str = "admin.emoji.remove";
type Response = AdminEmojiRemoveResponse;
}
#[doc(alias = "admin.emoji.remove")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminEmojiRemoveResponse {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
#[doc(alias = "admin.emoji.rename")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct AdminEmojiRenameRequest {
pub name: String,
pub new_name: String,
}
impl AdminEmojiRenameRequest {
pub fn new(name: impl Into<String>, new_name: impl Into<String>) -> Self {
Self {
name: name.into(),
new_name: new_name.into(),
}
}
}
impl SlackApiMethod for AdminEmojiRenameRequest {
const METHOD: &'static str = "admin.emoji.rename";
type Response = AdminEmojiRenameResponse;
}
#[doc(alias = "admin.emoji.rename")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AdminEmojiRenameResponse {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub response_metadata: Option<ResponseMetadata>,
#[serde(
default,
deserialize_with = "crate::de::opt_string",
skip_serializing_if = "Option::is_none"
)]
pub warning: Option<String>,
}
impl SlackClient {
#[doc(alias = "admin.emoji.add")]
pub async fn admin_emoji_add(
&self,
request: &AdminEmojiAddRequest,
) -> Result<AdminEmojiAddResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.emoji.addAlias")]
pub async fn admin_emoji_add_alias(
&self,
request: &AdminEmojiAddAliasRequest,
) -> Result<AdminEmojiAddAliasResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.emoji.list")]
pub async fn admin_emoji_list(
&self,
request: &AdminEmojiListRequest,
) -> Result<AdminEmojiListResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.emoji.remove")]
pub async fn admin_emoji_remove(
&self,
request: &AdminEmojiRemoveRequest,
) -> Result<AdminEmojiRemoveResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "admin.emoji.rename")]
pub async fn admin_emoji_rename(
&self,
request: &AdminEmojiRenameRequest,
) -> Result<AdminEmojiRenameResponse, SlackError> {
self.call(request).await
}
}