30 releases

new 0.7.0 Apr 1, 2025
0.6.0 Feb 11, 2025
0.5.3 Jan 17, 2025
0.5.1 Aug 26, 2024
0.1.0 Jan 8, 2021

#177 in HTTP client

Download history 1/week @ 2024-12-15 116/week @ 2025-01-05 134/week @ 2025-01-12 38/week @ 2025-01-19 2/week @ 2025-01-26 2/week @ 2025-02-02 162/week @ 2025-02-09 43/week @ 2025-02-16 11/week @ 2025-02-23 16/week @ 2025-03-02 2/week @ 2025-03-23 106/week @ 2025-03-30

108 downloads per month

Apache-2.0

89KB
2K SLoC

Library for interacting with an Avassa system.

Avassa Client

The first interaction is to login into the system

#[tokio::main]
async fn main() -> Result<(), avassa_client::Error> {
    use avassa_client::Client;

    // API CA certificate loaded
    let ca_cert = Vec::new();

    // Use login using platform provided application token
    let approle_id = "secret approle id";
    let client = Client::builder()
        .add_root_certificate(&ca_cert)?
        .approle_login("https://api.customer.net", 
           &std::env::var("APPROLE_SECRET_ID").unwrap(), 
           Some(approle_id)).await?;

    // Username and password authentication, good during the development phase
    let client = Client::builder()
        .add_root_certificate(&ca_cert)?
        .login("https://1.2.3.4", "joe", "secret").await?;

    Ok(())
}

Volga

Create a Volga producer and consumer

#[tokio::main]
async fn main() -> Result<(), avassa_client::Error> {
    use avassa_client::Client;

    // API CA certificate loaded
    let ca_cert = Vec::new();

    // Use login using platform provided application token
    let approle_id = "secret approle id";
    let client = Client::builder()
        .add_root_certificate(&ca_cert)?
        .application_login("https://api.customer.net", Some(approle_id)).await?;

    // Clone to move into async closure
    let producer_client = client.clone();

    tokio::spawn(async move {
        let mut producer = producer_client.volga_open_producer(
            "test-producer",
            "my-topic",
            avassa_client::volga::OnNoExists::Create(Default::default())
            )
            .await?;

        producer.produce(&serde_json::json!({
           "msg": "The Message",
        })).await?;
        Ok::<_, avassa_client::Error>(())
    });

    let mut consumer = client.volga_open_consumer(
        "test-consumer",
        "my-topic",
        Default::default())
        .await?;

    let message = consumer.consume::<String>().await?;

    assert_eq!(message.payload, "test message");
    Ok(())
}

Avassa logo

Avassa Client Library

Use this library to integrate with the Avassa APIs. For documentation, please see the docs.

For more information on Avassa, please see here.

Dependencies

~3–17MB
~217K SLoC