twilight_http/request/scheduled_event/
delete_guild_scheduled_event.rs1use crate::{
2 client::Client,
3 error::Error,
4 request::{Request, TryIntoRequest},
5 response::{Response, ResponseFuture},
6 routing::Route,
7};
8use std::future::IntoFuture;
9use twilight_model::{
10 guild::scheduled_event::GuildScheduledEvent,
11 id::{
12 marker::{GuildMarker, ScheduledEventMarker},
13 Id,
14 },
15};
16
17#[must_use = "requests must be configured and executed"]
36pub struct DeleteGuildScheduledEvent<'a> {
37 guild_id: Id<GuildMarker>,
38 http: &'a Client,
39 scheduled_event_id: Id<ScheduledEventMarker>,
40}
41
42impl<'a> DeleteGuildScheduledEvent<'a> {
43 pub(crate) const fn new(
44 http: &'a Client,
45 guild_id: Id<GuildMarker>,
46 scheduled_event_id: Id<ScheduledEventMarker>,
47 ) -> Self {
48 Self {
49 guild_id,
50 http,
51 scheduled_event_id,
52 }
53 }
54}
55
56impl IntoFuture for DeleteGuildScheduledEvent<'_> {
57 type Output = Result<Response<GuildScheduledEvent>, Error>;
58
59 type IntoFuture = ResponseFuture<GuildScheduledEvent>;
60
61 fn into_future(self) -> Self::IntoFuture {
62 let http = self.http;
63
64 match self.try_into_request() {
65 Ok(request) => http.request(request),
66 Err(source) => ResponseFuture::error(source),
67 }
68 }
69}
70
71impl TryIntoRequest for DeleteGuildScheduledEvent<'_> {
72 fn try_into_request(self) -> Result<Request, Error> {
73 Ok(Request::from_route(&Route::DeleteGuildScheduledEvent {
74 guild_id: self.guild_id.get(),
75 scheduled_event_id: self.scheduled_event_id.get(),
76 }))
77 }
78}