#metrics #logging #client #clevercloud #oauth1a


A rust implementation of the oauth 1.0a protocol fully-async with logging, metrics and tracing facilities

32 stable releases

1.5.1 Jul 31, 2023
1.3.18 Mar 13, 2023
1.3.16 Nov 21, 2022
1.3.11 Jul 18, 2022
1.2.2 Nov 22, 2021

#56 in Authentication

Download history 40/week @ 2024-02-15 8/week @ 2024-02-22 19/week @ 2024-02-29 8/week @ 2024-03-07 4/week @ 2024-03-14 91/week @ 2024-03-28 53/week @ 2024-04-04

144 downloads per month
Used in clevercloud-sdk

Custom license

913 lines

OAuth 1.0a crate

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};

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(),

    let _obj: BtreeMap<String, String> = client.get("https://example.com/object.json").await?;



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.

Getting in touch


~157K SLoC