some_random_api/endpoints/
welcome.rs

1use crate::{Requester, WelcomeImage};
2use anyhow::Result;
3use serde_json::to_string;
4
5/// An endpoint for generating free welcome images
6///
7/// # Examples
8///
9/// ```
10/// use some_random_api::{Client, WelcomeImage, WelcomeImageBackground, WelcomeImageTextColor};
11/// use std::fs::write;
12///
13/// write(
14///     "welcome.png",
15///     Client::new(None::<String>)
16///         .welcome
17///         .image(
18///             WelcomeImage::new(
19///                 "username",
20///                 "discriminator"
21///                 "avatar url",
22///                 "guild name",
23///                 100, // Member count
24///             )
25///             .set_background(WelcomeImageBackground::Stars)
26///             .set_text_color(WelcomeImageTextColor::Red)
27///             .set_leave(true);
28///         ).await?,
29/// )?;
30/// ```
31pub struct WelcomeEndpoint(pub(crate) Requester);
32
33impl WelcomeEndpoint {
34    /// Generate a free welcome image
35    pub async fn image(&self, welcome_image: WelcomeImage) -> Result<Vec<u8>> {
36        self.0
37            .request_image(
38                format!(
39                    "welcome/img/{}/{}",
40                    to_string(&welcome_image.template)?,
41                    format!("{:?}", welcome_image.background).to_lowercase(),
42                ),
43                &welcome_image,
44            )
45            .await
46    }
47}