roblox-api 0.1.4

Roblox web api bindings
Documentation
use dotenvy_macro::dotenv;
use roblox_api::{
    ApiError, Error, Paging,
    api::{groups, users},
    client::Client,
};

const USER_ID: u64 = 3139503587;
const ROBLOX_GROUP_ID: u64 = 7;
const BHOP_GROUP_ID: u64 = 6980477;

#[tokio::test]
async fn information() {
    let mut client = Client::from_cookie(dotenv!("ROBLOX_COOKIE").into());
    groups::v1::information(&mut client, BHOP_GROUP_ID)
        .await
        .unwrap();
}

#[tokio::test]
async fn roles() {
    let mut client = Client::from_cookie(dotenv!("ROBLOX_COOKIE").into());
    groups::v1::roles(&mut client, BHOP_GROUP_ID).await.unwrap();
}

#[tokio::test]
async fn user_roles() {
    let mut client = Client::from_cookie(dotenv!("ROBLOX_COOKIE").into());
    groups::v1::user_roles(&mut client, USER_ID).await.unwrap();
}

#[tokio::test]
async fn users() {
    let mut client = Client::from_cookie(dotenv!("ROBLOX_COOKIE").into());
    groups::v1::users(&mut client, BHOP_GROUP_ID, Paging::default())
        .await
        .unwrap();
}

#[tokio::test]
async fn join() -> Result<(), Error> {
    let mut client = Client::from_cookie(dotenv!("ROBLOX_COOKIE").into());

    client.ensure_token().await.unwrap();
    let result = groups::v1::join(&mut client, ROBLOX_GROUP_ID).await;

    if let Err(Error::ApiError(ApiError::AlreadyInGroup)) = result {
        Ok(())
    } else {
        result
    }
}

#[tokio::test]
async fn join_request() {
    let mut client = Client::from_cookie(dotenv!("ROBLOX_COOKIE").into());

    client.ensure_token().await.unwrap();

    // ensure we are not in the group join queue
    let details = users::v1::authenticated_details(&mut client).await.unwrap();
    groups::v1::remove_join_request(&mut client, BHOP_GROUP_ID, details.id)
        .await
        .unwrap();

    groups::v1::join(&mut client, BHOP_GROUP_ID).await.unwrap();
}