7 releases (breaking)
new 0.8.0+20241009.0 | Oct 15, 2024 |
---|---|
0.7.0+20240821.0 | Sep 3, 2024 |
0.6.0+20240710.0 | Jul 15, 2024 |
0.5.0+20240502.0 | May 8, 2024 |
0.1.0 |
|
#490 in Database interfaces
113 downloads per month
Used in oxide-httpmock
2.5MB
51K
SLoC
The Oxide Rust SDK
SDK for the Oxide API.
Installation
The oxide
crate is available on crates.io. You'll probably want to use
tokio
as well. Add them to your Cargo.toml
file or use cargo add
:
$ cargo add oxide
$ cargo add tokio
Authentication
To connect to the Oxide API, the SDK needs a host URL and a token. There are several ways to specify these:
- Configuration files: the CLI's
oxide auth login
command generatesconfig.toml
andcredentials.toml
in$HOME/.config/oxide/
. The credentials file contains sensitive information such as tokens and user IDs. - Environment variables: You can set the
OXIDE_HOST
andOXIDE_TOKEN
environment variables. - Explicit host URL and token.
The simplest way to create an authenticated client is to use
oxide::Client::new_authenticated()
, which uses the same credentials and
authentication logic as the CLI. By default, it reads data from configuration
files in $HOME/.config/oxide
.
Example
Create a new oxide::Client
like this:
use futures::StreamExt;
use oxide::{Client, prelude::*};
#[tokio::main]
async fn main() {
// Make a client from the on-disk configuration.
let client = Client::new_authenticated()
.expect("unable to create an authenticated client");
// Start using the client!
// For example we can look at the projects in our silo:
let mut projects = client.project_list().stream();
loop {
match projects.next().await {
// No more items.
None => break,
// Print the name of a project.
Some(Ok(project)) => println!("project {}", *project.name),
// Something went wrong
Some(Err(err)) => println!("error {}", err),
}
}
}
Dependencies
~11–26MB
~432K SLoC