# Catenis API Client for Rust
This library is used to make it easier to access the Catenis API services from code
written in the Rust programming language.
> **Note**: this release of the library targets **version 0.12** of the Catenis API.
## Documentation
The complete library documentation can be found [here](https://docs.rs/catenis_api_client/~3.0).
## Usage
To start using the library, one needs to instantiate a new [`CatenisClient`](https://docs.rs/catenis_api_client/~3.0/catenis_api_client/struct.CatenisClient.html)
object. Then, to make a call to an API method, just call the corresponding method on the client object.
### Example
```rust
use catenis_api_client::{
CatenisClient, ClientOptions, Environment, Result,
};
// Instantiate Catenis API client object
let mut ctn_client = CatenisClient::new_with_options(
Some((
"drc3XdxNtzoucpw9xiRp",
concat!(
"4c1749c8e86f65e0a73e5fb19f2aa9e74a716bc22d7956bf3072b4bc3fbfe2a0",
"d138ad0d4bcfee251e4e5f54d6e92b8fd4eb36958a7aeaeeb51e8d2fcc4552c3"
),
).into()),
&[
ClientOptions::Environment(Environment::Sandbox),
],
)?;
// Call Read Message API method
let result = ctn_client.read_message("o3muoTnnD6cXYyarYY38", None)?;
println!("Read message result: {:?}", result);
```
## Notification
The library also makes it easy for receiving notifications from the Catenis system through its
[`WsNotifyChannel`](https://docs.rs/catenis_api_client/~3.0/catenis_api_client/notification/struct.WsNotifyChannel.html)
data structure, which embeds a WebSocket client.
## Asynchronous processing
The library allows for asynchronous processing using the [Tokio](https://crates.io/crates/tokio)
runtime.
To activate asynchronous processing, the **`async`** feature must be enabled.
```toml
catenis_api_client = { version = "3.0", features = ["async"] }
```
The asynchronous version of the client can then be accessed from the [`async_impl`](https://docs.rs/catenis_api_client/~3.0/catenis_api_client/async_impl/index.html)
module.
### Example
```rust
use catenis_api_client::{
async_impl,
ClientOptions, Environment, Result,
};
// Instantiate asynchronous Catenis API client object
let mut ctn_client = async_impl::CatenisClient::new_with_options(
Some((
"drc3XdxNtzoucpw9xiRp",
concat!(
"4c1749c8e86f65e0a73e5fb19f2aa9e74a716bc22d7956bf3072b4bc3fbfe2a0",
"d138ad0d4bcfee251e4e5f54d6e92b8fd4eb36958a7aeaeeb51e8d2fcc4552c3"
),
).into()),
&[
ClientOptions::Environment(Environment::Sandbox),
],
)?;
```
## Catenis API Documentation
For further information on the Catenis API, please reference the [Catenis API Documentation](https://catenis.com/docs/api).
## License
This library is distributed under the terms of both the [MIT License](LICENSE-MIT) and the [Apache License (Version 2.0)](LICENSE-APACHE).
Copyright © 2021-2022, Blockchain of Things Inc.