[][src]Crate oauth1_request

Yet yet yet another OAuth 1 client library.

Usage

Add this to your Cargo.toml:

oauth1-request-derive = "0.2"

Creating a GET request:

extern crate oauth1_request as oauth;
#[macro_use]
extern crate oauth1_request_derive;

#[derive(OAuth1Authorize)]
struct SearchComments<'a> {
    article_id: u64,
    text: &'a str,
}

let client = oauth::Credentials::new("consumer_key", "consumer_secret");
let token = oauth::Credentials::new("token", "token_secret");

let mut builder = oauth::Builder::new(client, oauth::HmacSha1);
builder
    .token(token)
    .nonce("nonce")
    .timestamp(9999999999);

let req = SearchComments {
    article_id: 123456789,
    text: "Rust",
};

let oauth::Request {
    authorization,
    data,
} = builder.get("https://example.com/api/v1/comments/search.json", &req);

assert_eq!(
    authorization,
    "OAuth \
         oauth_consumer_key=\"consumer_key\",\
         oauth_nonce=\"nonce\",\
         oauth_signature_method=\"HMAC-SHA1\",\
         oauth_timestamp=\"9999999999\",\
         oauth_token=\"token\",\
         oauth_signature=\"kAkbCLL7obDyzdjz3uJoWSwiLqU%3D\"",
);
assert_eq!(
    data,
    "https://example.com/api/v1/comments/search.json?article_id=123456789&text=Rust",
);

Creating an x-www-form-urlencoded request:

#[derive(OAuth1Authorize)]
struct CreateComment<'a> {
    article_id: u64,
    text: &'a str,
}

let req = CreateComment {
    article_id: 123456789,
    text: "Rust lang is great 🦀",
};

// Use `post_form` method to create an `x-www-form-urlencoded` request.
let oauth::Request {
    authorization,
    data,
} = builder.post_form("https://example.com/api/v1/comments/create.json", &req);

assert_eq!(
    authorization,
    "OAuth \
         oauth_consumer_key=\"consumer_key\",\
         oauth_nonce=\"nonce\",\
         oauth_signature_method=\"HMAC-SHA1\",\
         oauth_timestamp=\"9999999999\",\
         oauth_token=\"token\",\
         oauth_signature=\"bbhEIrjfisdDBrZkKnEXKa4ykE4%3D\"",
);
assert_eq!(
    data,
    "article_id=123456789&text=Rust%20lang%20is%20great%20%F0%9F%A6%80",
);

See OAuth1Authorize for more details on the custom derive macro.

Using Signer

See Signer.

Re-exports

pub use signature_method::Plaintext;
pub use signature_method::HmacSha1;

Modules

signature_method

Signature methods (RFC 5849 section 3.4.).

Structs

Builder

A builder for Request.

Credentials

The "credentials" pair defined in RFC 5849 section 1.1.

NotReady

Represents the state of a Signer before oauth_parameters method is called.

Options

Optional OAuth parameters.

Ready

Represents the state of a Signer after oauth_parameters method is called.

Request

A pair of an OAuth header and its corresponding query/form string.

Signer

A type that creates a signed Request.

Traits

OAuth1Authorize

Types that can be made into a Request using given credentials.

Type Definitions

HmacSha1Signer

A version of Signer that uses the HMAC-SHA1 signature method.

PlaintextSigner

A version of Signer that uses the PLAINTEXT signature method.