refluxer 0.2.0

Rust API wrapper for Fluxer
Documentation
mod common;
use common::setup;
use refluxer::http::endpoints::guilds::CreateGuildChannel;
use refluxer::http::endpoints::invites::CreateInvite;

#[tokio::test]
async fn test_invite_create_and_delete() {
    let (http, guild_id) = setup();

    let channel = http
        .create_guild_channel(guild_id, &CreateGuildChannel::text("refluxer-test-invites"))
        .await
        .expect("create channel failed");

    match http
        .create_channel_invite(channel.id, &CreateInvite::new().max_age(60).max_uses(1))
        .await
    {
        Ok(invite) => {
            assert!(!invite.code.is_empty());
            println!("Created invite: {}", invite.code);

            let fetched = http
                .get_invite(&invite.code)
                .await
                .expect("get_invite failed");
            assert_eq!(fetched.code, invite.code);

            let guild_invites = http
                .get_guild_invites(guild_id)
                .await
                .expect("get_guild_invites failed");
            assert!(
                guild_invites.iter().any(|i| i.code == invite.code),
                "invite should be in guild invites"
            );

            http.delete_invite(&invite.code)
                .await
                .expect("delete_invite failed");
            println!("Invite tests passed");
        }
        Err(refluxer::error::HttpError::Api { status: 403, .. }) => {
            println!("Bot lacks CREATE_INSTANT_INVITE permission — skipping");
        }
        Err(e) => panic!("unexpected error: {e}"),
    }

    http.delete_channel(channel.id)
        .await
        .expect("cleanup channel failed");
}