roblox-api 0.1.1

Roblox web api bindings
Documentation
use serde::{Deserialize, Serialize};

use crate::{DateTime, Error, client::Client};

pub const URL: &str = "https://auth.roblox.com/v1";

#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
pub struct RecommendedUsernamesFromDisplayName {
    #[serde(rename = "didGenerateNewUsername")]
    pub new_name_generated: bool,
    #[serde(rename = "suggestedUsernames")]
    pub suggested_names: Vec<String>,
}

pub async fn recommended_usernames_from_display_name(
    client: &mut Client,
    display_name: &str,
    birthday: DateTime,
) -> Result<RecommendedUsernamesFromDisplayName, Error> {
    #[derive(Serialize)]
    struct Request<'a> {
        #[serde(rename = "displayName")]
        display_name: &'a str,
        birthday: &'a str,
    }

    let result = client
        .requestor
        .client
        .post(format!(
            "{URL}/validators/recommendedUsernameFromDisplayName"
        ))
        .headers(client.requestor.default_headers.clone())
        .json(&Request {
            display_name,
            birthday: birthday.to_string().as_str(),
        })
        .send()
        .await;

    let response = client.validate_response(result).await?;
    client
        .requestor
        .parse_json::<RecommendedUsernamesFromDisplayName>(response)
        .await
}