avassa_client/
lib.rs

1//!
2//! Library for interacting with an Avassa system.
3//!
4//! ## Avassa Client
5//! The first interaction is to login into the system
6//! ```no_run
7//! #[tokio::main]
8//! async fn main() -> Result<(), avassa_client::Error> {
9//!     use avassa_client::Client;
10//!
11//!     // API CA certificate loaded
12//!     let ca_cert = Vec::new();
13//!
14//!     // Use login using platform provided application token
15//!     let approle_id = "secret approle id";
16//!     let client = Client::builder()
17//!         .add_root_certificate(&ca_cert)?
18//!         .approle_login("https://api.customer.net", 
19//!            &std::env::var("APPROLE_SECRET_ID").unwrap(), 
20//!            Some(approle_id)).await?;
21//!
22//!     // Username and password authentication, good during the development phase
23//!     let client = Client::builder()
24//!         .add_root_certificate(&ca_cert)?
25//!         .login("https://1.2.3.4", "joe", "secret").await?;
26//!
27//!     Ok(())
28//! }
29//! ```
30//!
31//! ## Volga
32//! ### Create a Volga producer and consumer
33//! ```no_run
34//! #[tokio::main]
35//! async fn main() -> Result<(), avassa_client::Error> {
36//!     use avassa_client::Client;
37//!
38//!     // API CA certificate loaded
39//!     let ca_cert = Vec::new();
40//!
41//!     // Use login using platform provided application token
42//!     let approle_id = "secret approle id";
43//!     let client = Client::builder()
44//!         .add_root_certificate(&ca_cert)?
45//!         .application_login("https://api.customer.net", Some(approle_id)).await?;
46//!
47//!     // Clone to move into async closure
48//!     let producer_client = client.clone();
49//!
50//!     tokio::spawn(async move {
51//!         let mut producer = producer_client.volga_open_producer(
52//!             "test-producer",
53//!             "my-topic",
54//!             avassa_client::volga::OnNoExists::Create(Default::default())
55//!             )
56//!             .await?;
57//!
58//!         producer.produce(&serde_json::json!({
59//!            "msg": "The Message",
60//!         })).await?;
61//!         Ok::<_, avassa_client::Error>(())
62//!     });
63//!
64//!     let mut consumer = client.volga_open_consumer(
65//!         "test-consumer",
66//!         "my-topic",
67//!         Default::default())
68//!         .await?;
69//!
70//!     let message = consumer.consume::<String>().await?;
71//!
72//!     assert_eq!(message.payload, "test message");
73//!     Ok(())
74//! }
75//! ```
76
77#![deny(clippy::all)]
78#![warn(clippy::pedantic)]
79#![warn(clippy::cargo)]
80#![allow(clippy::missing_errors_doc)]
81
82
83#[cfg(feature = "utilities")]
84pub mod utilities;
85
86#[cfg(feature = "login-helper")]
87pub mod login_helper;
88
89#[cfg(feature = "supctl")]
90pub mod supctl;
91
92mod error;
93pub use error::*;
94
95#[cfg(feature = "client")]
96mod client;
97#[cfg(feature = "client")]
98pub mod strongbox;
99#[cfg(feature = "client")]
100pub mod volga;
101
102#[cfg(feature = "client")]
103pub use client::*;