Skip to main content

twilight_http/request/scheduled_event/
delete_guild_scheduled_event.rs

1#[cfg(not(target_os = "wasi"))]
2use crate::response::{Response, ResponseFuture};
3use crate::{
4    client::Client,
5    error::Error,
6    request::{Request, TryIntoRequest},
7    routing::Route,
8};
9use std::future::IntoFuture;
10use twilight_model::{
11    guild::scheduled_event::GuildScheduledEvent,
12    id::{
13        Id,
14        marker::{GuildMarker, ScheduledEventMarker},
15    },
16};
17
18/// Delete a scheduled event in a guild.
19///
20/// # Examples
21///
22/// ```no_run
23/// # use twilight_http::Client;
24/// # use twilight_model::id::Id;
25/// # #[tokio::main]
26/// # async fn main() -> Result<(), Box<dyn std::error::Error>> {
27/// # let client = Client::new("token".to_owned());
28/// let guild_id = Id::new(1);
29/// let scheduled_event_id = Id::new(2);
30///
31/// client
32///     .delete_guild_scheduled_event(guild_id, scheduled_event_id)
33///     .await?;
34/// # Ok(()) }
35/// ```
36#[must_use = "requests must be configured and executed"]
37pub struct DeleteGuildScheduledEvent<'a> {
38    guild_id: Id<GuildMarker>,
39    http: &'a Client,
40    scheduled_event_id: Id<ScheduledEventMarker>,
41}
42
43impl<'a> DeleteGuildScheduledEvent<'a> {
44    pub(crate) const fn new(
45        http: &'a Client,
46        guild_id: Id<GuildMarker>,
47        scheduled_event_id: Id<ScheduledEventMarker>,
48    ) -> Self {
49        Self {
50            guild_id,
51            http,
52            scheduled_event_id,
53        }
54    }
55}
56
57#[cfg(not(target_os = "wasi"))]
58impl IntoFuture for DeleteGuildScheduledEvent<'_> {
59    type Output = Result<Response<GuildScheduledEvent>, Error>;
60
61    type IntoFuture = ResponseFuture<GuildScheduledEvent>;
62
63    fn into_future(self) -> Self::IntoFuture {
64        let http = self.http;
65
66        match self.try_into_request() {
67            Ok(request) => http.request(request),
68            Err(source) => ResponseFuture::error(source),
69        }
70    }
71}
72
73impl TryIntoRequest for DeleteGuildScheduledEvent<'_> {
74    fn try_into_request(self) -> Result<Request, Error> {
75        Ok(Request::from_route(&Route::DeleteGuildScheduledEvent {
76            guild_id: self.guild_id.get(),
77            scheduled_event_id: self.scheduled_event_id.get(),
78        }))
79    }
80}