#![allow(unused_imports)]
use crate::objects::*;
use crate::{
CursorPaginated, NextCursor, ResponseMetadata, SlackApiMethod, SlackClient, SlackError,
};
use serde::{Deserialize, Serialize};
#[doc(alias = "dnd.endDnd")]
#[derive(Debug, Clone, PartialEq, Serialize, Default)]
#[non_exhaustive]
pub struct DndEndDndRequest {}
impl DndEndDndRequest {
pub fn new() -> Self {
Self {}
}
}
impl SlackApiMethod for DndEndDndRequest {
const METHOD: &'static str = "dnd.endDnd";
type Response = DndEndDndResponse;
}
#[doc(alias = "dnd.endDnd")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct DndEndDndResponse {
#[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 = "dnd.endSnooze")]
#[derive(Debug, Clone, PartialEq, Serialize, Default)]
#[non_exhaustive]
pub struct DndEndSnoozeRequest {}
impl DndEndSnoozeRequest {
pub fn new() -> Self {
Self {}
}
}
impl SlackApiMethod for DndEndSnoozeRequest {
const METHOD: &'static str = "dnd.endSnooze";
type Response = DndEndSnoozeResponse;
}
#[doc(alias = "dnd.endSnooze")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct DndEndSnoozeResponse {
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub dnd_enabled: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_i64",
skip_serializing_if = "Option::is_none"
)]
pub next_dnd_start_ts: Option<i64>,
#[serde(
default,
deserialize_with = "crate::de::opt_i64",
skip_serializing_if = "Option::is_none"
)]
pub next_dnd_end_ts: Option<i64>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub snooze_enabled: Option<bool>,
#[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 = "dnd.info")]
#[derive(Debug, Clone, PartialEq, Serialize, Default)]
#[non_exhaustive]
pub struct DndInfoRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub user: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub team_id: Option<String>,
}
impl DndInfoRequest {
pub fn new() -> Self {
Self {
user: None,
team_id: None,
}
}
pub fn user(mut self, user: impl Into<String>) -> Self {
self.user = Some(user.into());
self
}
pub fn team_id(mut self, team_id: impl Into<String>) -> Self {
self.team_id = Some(team_id.into());
self
}
}
impl SlackApiMethod for DndInfoRequest {
const METHOD: &'static str = "dnd.info";
type Response = DndInfoResponse;
}
#[doc(alias = "dnd.info")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct DndInfoResponse {
#[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 = "dnd.setSnooze")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct DndSetSnoozeRequest {
pub num_minutes: String,
}
impl DndSetSnoozeRequest {
pub fn new(num_minutes: impl Into<String>) -> Self {
Self {
num_minutes: num_minutes.into(),
}
}
}
impl SlackApiMethod for DndSetSnoozeRequest {
const METHOD: &'static str = "dnd.setSnooze";
type Response = DndSetSnoozeResponse;
}
#[doc(alias = "dnd.setSnooze")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct DndSetSnoozeResponse {
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub snooze_enabled: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_i64",
skip_serializing_if = "Option::is_none"
)]
pub snooze_endtime: Option<i64>,
#[serde(
default,
deserialize_with = "crate::de::opt_i64",
skip_serializing_if = "Option::is_none"
)]
pub snooze_remaining: Option<i64>,
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub snooze_is_indefinite: Option<bool>,
#[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 = "dnd.teamInfo")]
#[derive(Debug, Clone, PartialEq, Serialize)]
#[non_exhaustive]
pub struct DndTeamInfoRequest {
pub users: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub team_id: Option<String>,
}
impl DndTeamInfoRequest {
pub fn new(users: impl Into<String>) -> Self {
Self {
users: users.into(),
team_id: None,
}
}
pub fn team_id(mut self, team_id: impl Into<String>) -> Self {
self.team_id = Some(team_id.into());
self
}
}
impl SlackApiMethod for DndTeamInfoRequest {
const METHOD: &'static str = "dnd.teamInfo";
type Response = DndTeamInfoResponse;
}
#[doc(alias = "dnd.teamInfo")]
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct DndTeamInfoResponse {
#[serde(
default,
deserialize_with = "crate::de::opt_object",
skip_serializing_if = "Option::is_none"
)]
pub users: Option<std::collections::HashMap<String, DndTeamInfoResponseUsersValue>>,
#[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 DndTeamInfoResponseUsersValue {
#[serde(
default,
deserialize_with = "crate::de::opt_bool",
skip_serializing_if = "Option::is_none"
)]
pub dnd_enabled: Option<bool>,
#[serde(
default,
deserialize_with = "crate::de::opt_i64",
skip_serializing_if = "Option::is_none"
)]
pub next_dnd_start_ts: Option<i64>,
#[serde(
default,
deserialize_with = "crate::de::opt_i64",
skip_serializing_if = "Option::is_none"
)]
pub next_dnd_end_ts: Option<i64>,
}
impl SlackClient {
#[doc(alias = "dnd.endDnd")]
pub async fn dnd_end_dnd(
&self,
request: &DndEndDndRequest,
) -> Result<DndEndDndResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "dnd.endSnooze")]
pub async fn dnd_end_snooze(
&self,
request: &DndEndSnoozeRequest,
) -> Result<DndEndSnoozeResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "dnd.info")]
pub async fn dnd_info(&self, request: &DndInfoRequest) -> Result<DndInfoResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "dnd.setSnooze")]
pub async fn dnd_set_snooze(
&self,
request: &DndSetSnoozeRequest,
) -> Result<DndSetSnoozeResponse, SlackError> {
self.call(request).await
}
#[doc(alias = "dnd.teamInfo")]
pub async fn dnd_team_info(
&self,
request: &DndTeamInfoRequest,
) -> Result<DndTeamInfoResponse, SlackError> {
self.call(request).await
}
}