Skip to main content

twilight_http/request/application/emoji/
list_emojis.rs

1use std::future::IntoFuture;
2
3#[cfg(not(target_os = "wasi"))]
4use crate::{Response, response::ResponseFuture};
5
6use crate::{
7    Client, Error,
8    request::{Request, TryIntoRequest},
9    routing::Route,
10};
11use twilight_model::{
12    application::EmojiList,
13    id::{Id, marker::ApplicationMarker},
14};
15
16#[must_use = "requests must be configured and executed"]
17pub struct ListApplicationEmojis<'a> {
18    http: &'a Client,
19    application_id: Id<ApplicationMarker>,
20}
21
22impl<'a> ListApplicationEmojis<'a> {
23    pub(crate) const fn new(http: &'a Client, application_id: Id<ApplicationMarker>) -> Self {
24        Self {
25            http,
26            application_id,
27        }
28    }
29}
30
31#[cfg(not(target_os = "wasi"))]
32impl IntoFuture for ListApplicationEmojis<'_> {
33    type Output = Result<Response<EmojiList>, Error>;
34
35    type IntoFuture = ResponseFuture<EmojiList>;
36
37    fn into_future(self) -> Self::IntoFuture {
38        let http = self.http;
39
40        match self.try_into_request() {
41            Ok(request) => http.request(request),
42            Err(source) => ResponseFuture::error(source),
43        }
44    }
45}
46
47impl TryIntoRequest for ListApplicationEmojis<'_> {
48    fn try_into_request(self) -> Result<Request, Error> {
49        Ok(Request::from_route(&Route::GetApplicationEmojis {
50            application_id: self.application_id.get(),
51        }))
52    }
53}