gauthz 0.1.0

Google API authentication crate
Documentation

gauthz Build Status Coverage Status

google api service authentication by way of rust

Documentation

Install

Add the following to your project's Cargo.toml file

[dependencies]
gauthz = "0.1"

Usage

Typical use requires gauthz::Tokens configured with a tokio reactor handle gauthz::Credentials and gauthz::Scopes representing the access level for your intended API usage.

Note your hyper::Client must be configured with tls support. Hyper doesn't provide that out of the box but there are multiple crates that provide the support

A gauthz::Tokens instance provides two interfaces get which returns a Future that resolves to an access token and a Stream which resolves to new tokens when the current token expires ( typically ) after one hour. The stream interface is intended for long running applications which will inevitably require access for more than one hour.

extern crate futures;
extern crate gauthz;
extern crate tokio_core;

use futures::Future;
use tokio_core::reactor::Core;

use gauthz::{Credentials, Result, Scope, Tokens};
use gauthz::error::ErrorKind;

fn run() -> Result<String> {
    let mut core = Core::new()?;
    let tokens = Tokens::new(
        &core.handle(),
        Credentials::default().unwrap(),
        vec![Scope::CloudPlatform],
    );
    core.run(
        tokens.get().map(
            |t| t.value().to_owned()
        )
    )
}

fn main() {
    match run() {
        Ok(ok) => println!("{}", ok),
        Err(err) => println!("{}", err),
    }
}

These tokens may be used in Authorization HTTP headers to authenticate with the Google API's the tokens are scoped to.

pronounced

gawthz

Doug Tangren (softprops) 2017