twilight_http/request/guild/sticker/
delete_guild_sticker.rs

1use crate::{
2    client::Client,
3    error::Error,
4    request::{Request, TryIntoRequest},
5    response::{marker::EmptyBody, Response, ResponseFuture},
6    routing::Route,
7};
8use std::future::IntoFuture;
9use twilight_model::id::{
10    marker::{GuildMarker, StickerMarker},
11    Id,
12};
13
14/// Deletes a guild sticker by the ID of the guild and its ID.
15///
16/// # Examples
17///
18/// ```no_run
19/// use twilight_http::Client;
20/// use twilight_model::id::Id;
21///
22/// # #[tokio::main]
23/// # async fn main() -> Result<(), Box<dyn std::error::Error>> {
24/// let client = Client::new("my token".to_owned());
25///
26/// let guild_id = Id::new(1);
27/// let sticker_id = Id::new(2);
28///
29/// client.delete_guild_sticker(guild_id, sticker_id).await?;
30/// # Ok(()) }
31/// ```
32pub struct DeleteGuildSticker<'a> {
33    guild_id: Id<GuildMarker>,
34    http: &'a Client,
35    sticker_id: Id<StickerMarker>,
36}
37
38impl<'a> DeleteGuildSticker<'a> {
39    pub(crate) const fn new(
40        http: &'a Client,
41        guild_id: Id<GuildMarker>,
42        sticker_id: Id<StickerMarker>,
43    ) -> Self {
44        Self {
45            guild_id,
46            http,
47            sticker_id,
48        }
49    }
50}
51
52impl IntoFuture for DeleteGuildSticker<'_> {
53    type Output = Result<Response<EmptyBody>, Error>;
54
55    type IntoFuture = ResponseFuture<EmptyBody>;
56
57    fn into_future(self) -> Self::IntoFuture {
58        let http = self.http;
59
60        match self.try_into_request() {
61            Ok(request) => http.request(request),
62            Err(source) => ResponseFuture::error(source),
63        }
64    }
65}
66
67impl TryIntoRequest for DeleteGuildSticker<'_> {
68    fn try_into_request(self) -> Result<Request, Error> {
69        Ok(Request::from_route(&Route::DeleteGuildSticker {
70            guild_id: self.guild_id.get(),
71            sticker_id: self.sticker_id.get(),
72        }))
73    }
74}