Skip to main content

Crate avassa_client

Crate avassa_client 

Source
Expand description

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(())
}

Re-exports§

pub use client::*;

Modules§

app_connect
client
volga
Library for producing and consuming Volga messages.

Structs§

RESTError
Description of an error from the REST APIs.
RESTErrorList
List of REST API error messages.

Enums§

Error
Error returned by client functions.

Type Aliases§

Result
Result type.