twilight_http/request/guild/sticker/
delete_guild_sticker.rs1use 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
14pub 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}