refluxer 0.2.0

Rust API wrapper for Fluxer
Documentation

refluxer

Rust API wrapper for Fluxer — a free and open source instant messaging and VoIP platform.

Features

  • HTTP REST API — typed client for Fluxer's HTTP API with rate limiting
  • WebSocket Gateway — real-time event stream with auto-reconnect
  • High-level Client — event handler framework for building bots
  • Feature flags — include only what you need

Quick Start

[dependencies]
refluxer = { version = "0.1", features = ["client"] }
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
async-trait = "0.1"
use refluxer::model::message::Message;
use refluxer::{Client, Context, EventHandler};

struct Handler;

#[async_trait::async_trait]
impl EventHandler for Handler {
    async fn message_create(&self, ctx: Context, msg: Message) {
        if msg.content == "!ping" {
            ctx.send_message(msg.channel_id, "Pong!").await.ok();
        }
    }
}

#[tokio::main]
async fn main() -> Result<(), refluxer::Error> {
    let client = Client::builder()
        .token("your_bot_token")
        .event_handler(Handler)
        .build()?;

    client.start().await
}

Feature Flags

Feature Description Default
http REST client + models yes
gateway WebSocket Gateway (includes http) no
client High-level framework (includes gateway) no

HTTP-Only Usage

[dependencies]
refluxer = "0.1"  # default features = ["http"]
let http = refluxer::HttpClient::new("your_token")?;
let user = http.get_current_user().await?;

Self-Hosted Instances

let http = refluxer::HttpClient::builder()
    .token("your_token")
    .base_url("https://my-fluxer.example.com/v1")
    .build()?;

Examples

Lightweight examples live in refluxer/examples:

FLUXER_TOKEN=your_token cargo run -p refluxer --example ping_bot --features client
FLUXER_TOKEN=your_token cargo run -p refluxer --example http_only

Dependency-heavy examples are standalone Cargo projects so they do not affect the main crate's dependency graph:

cargo run --manifest-path examples/gitbot/Cargo.toml
cargo run --manifest-path examples/card_bot/Cargo.toml

Bot examples require FLUXER_TOKEN. card_bot also requires OPENAI_API_KEY.

Release Checks

cargo fmt --all --check
cargo test --workspace --all-features --lib
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --manifest-path examples/gitbot/Cargo.toml
cargo test --manifest-path examples/card_bot/Cargo.toml

Publishing

Publishing is automated by GitHub Actions when a v* tag is pushed. The tag version must match the crate version, for example v0.2.0.

The repository must have a CARGO_REGISTRY_TOKEN secret with permission to publish refluxer.

License

MIT