twilight_http/request/application/emoji/
list_emojis.rs1use 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}