
Features
- Async
Client (default, reqwest + rustls)
- Blocking
BlockingClient (--features blocking, ureq + rustls)
- Optional:
tracing, metrics
Install
cargo add metabase
cargo add metabase --no-default-features --features blocking
cargo add metabase --features tracing,metrics
Usage (async)
use metabase::{Auth, Client};
# async fn demo() -> Result<(), metabase::Error> {
let client = Client::builder("https://metabase.example.com")?
.auth(Auth::session("SESSION_TOKEN")) .build()?;
let me = client.user().get_current().await?;
println!("{me:?}");
# Ok(())
# }
Usage (blocking)
use metabase::{Auth, BlockingClient};
fn demo() -> Result<(), metabase::Error> {
let client = BlockingClient::builder("https://metabase.example.com")?
.auth(Auth::session("SESSION_TOKEN"))
.build()?;
let health = client.health().get()?;
println!("{health:?}");
Ok(())
}
Errors
# use metabase::{Client, Error};
# async fn demo() -> Result<(), Error> {
# let client = Client::builder("https://metabase.example.com")?.build()?;
if let Err(err) = client.health().get().await {
eprintln!("{err} status={:?} request_id={:?}", err.status(), err.request_id());
}
# Ok(())
# }