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

use std::future::Future;
use coinbase_pro_rs::{Public, ASync, SANDBOX_URL};
use futures::{TryFutureExt};

#[tokio::main]
async 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
    client.get_time().await
        .map_err(|_| ())
        .and_then(|time| {
            println!("Coinbase.time: {}", time.iso);
            Ok(())
        });

}

Sync

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

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

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

    stream
        .take(10)
        .for_each(|msg: Result<Message, CBError>| async {
        match msg.unwrap() {
            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)
        }
    }).await;
}

Re-exports

pub use crate::adapters::ASync;
pub use crate::adapters::Sync;
pub use crate::private::Private;
pub use crate::public::Public;
pub use crate::wsfeed::WSFeed;

Modules

adapters
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

Enums

CBError

Coinbase-pro-rs error

WSError

Websocket specific errors

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