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}