Crates.io | oauth10a |
lib.rs | oauth10a |
version | 1.5.1 |
source | src |
created_at | 2021-10-12 16:27:09.421953 |
updated_at | 2023-07-31 16:18:23.428836 |
description | A rust implementation of the oauth 1.0a protocol fully-async with logging, metrics and tracing facilities |
homepage | |
repository | https://github.com/CleverCloud/oauth10a-rust |
max_upload_size | |
id | 464043 |
size | 52,662 |
This crate provides an oauth 1.0a client implementation fully-async with logging, metrics and tracing facilities. It was firstly designed to interact with the Clever-Cloud's api, but has been extended to be more generic.
This crate is ready for production, if you may have bugs, so please an issue to fix the trouble.
To install this dependency, just add the following line to your Cargo.toml
manifest.
oauth10a = { version = "^1.5.1", features = ["metrics"] }
Below, you will find an example of executing a simple request to an api.
use std::error::Error;
use oauth10a::client::{Client, Credentials, RestClient, proxy::ProxyConnectorBuilder};
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let connector = ProxyConnectorBuilder::try_from_env()?;
let client = Client::builder()
.with_credentials(Credentials {
token: "".to_string(),
secret: "".to_string(),
consumer_key: "".to_string(),
consumer_secret: "".to_string(),
})
.build(connector);
let _obj: BtreeMap<String, String> = client.get("https://example.com/object.json").await?;
Ok(())
}
name | description |
---|---|
default | Default enable features are client , logging , proxy |
client | The oauth 1.0a client implementation |
logging | Use the log facility crate to print logs |
metrics | Use once_cell and prometheus crates to register metrics |
proxy | Enable the support of environment variable http_proxy and https_proxy |
Below, the exposed metrics gathered by prometheus:
name | labels | kind | description |
---|---|---|---|
oauth10a_client_request | endpoint: String, method: String, status: Integer | Counter | number of request on api |
oauth10a_client_request_duration | endpoint: String, method: String, status: Integer, unit: String | Counter | duration of request on api |
See the license.