Crate coinbase_pro_rs[][src]

Coinbase pro client with sync/async + websocket-feed support

Structure

There are two main structures to work with: Private and Public, which provide interfaces to work with https://docs.pro.coinbase.com . The structures should be parametrised with: Sync or ASync adapter-type, which blocks future and returns result of its execution for Sync adapter or returns Future for ASync adapter.

WSFeed provides futures::Stream of websocket message for different channels.

Examples

Async

extern crate hyper;
extern crate tokio;
extern crate coinbase_pro_rs;

use hyper::rt::Future;
use coinbase_pro_rs::{Public, ASync, SANDBOX_URL};

fn main() {
    let client: Public<ASync> = Public::new_with_keep_alive(SANDBOX_URL, false);
    // if keep_alive is not disables - tokio::run will hold the connection without exiting the example
    let f = client.get_time()
        .map_err(|_| ())
        .and_then(|time| {
            println!("Coinbase.time: {}", time.iso);
            Ok(())
        });

    tokio::run(f);
}

Sync

extern crate coinbase_pro_rs;

use coinbase_pro_rs::{Public, Sync, SANDBOX_URL};

fn main() {
   let client: Public<Sync> = Public::new(SANDBOX_URL);
   let time = client.get_time().unwrap();
   println!("Coinbase.time: {}", time.iso);
}

Websocket

extern crate futures;
extern crate tokio;
extern crate coinbase_pro_rs;

use futures::{Future, Stream};
use coinbase_pro_rs::{WSFeed, WS_SANDBOX_URL};
use coinbase_pro_rs::structs::wsfeed::*;

fn main() {
    let stream = WSFeed::new(WS_SANDBOX_URL,
        &["BTC-USD"], &[ChannelType::Heartbeat]);

    let f = stream
        .take(10)
        .for_each(|msg| {
        match msg {
            Message::Heartbeat {sequence, last_trade_id, time, ..} => println!("{}: seq:{} id{}",
                                                                               time, sequence, last_trade_id),
            Message::Error {message} => println!("Error: {}", message),
            Message::InternalError(_) => panic!("internal_error"),
            other => println!("{:?}", other)
        }
        Ok(())
    });

    tokio::run(f.map_err(|_| panic!("stream fail")));
}

Re-exports

pub use adapters::ASync;
pub use adapters::Sync;
pub use error::CBError;
pub use error::WSError;
pub use private::Private;
pub use public::Public;
pub use wsfeed::WSFeed;

Modules

adapters
error
private

Contains structure which provides access to Private section of Coinbase api

public

Contains structure which provides access to Public section of Coinbase api

structs
wsfeed

Contains structure which provides futures::Stream to websocket-feed of Coinbase api

Constants

MAIN_URL

https://api.pro.coinbase.com

SANDBOX_URL

https://api-public.sandbox.pro.coinbase.com

WS_SANDBOX_URL

wss://ws-feed-public.sandbox.pro.coinbase.com

WS_URL

wss://ws-feed.pro.coinbase.com

Type Definitions

Result