bitmex 0.2.2

Rust Library for the BitMEX API (Async)
use bitmex::models::{
    GetPositionRequest, PostPositionIsolateRequest, PostPositionLeverageRequest,
    PostPositionRiskLimitRequest, PostPositionTransferMarginRequest,
};
use bitmex::BitMEX;
use failure::Fallible;
use log::debug;
use std::env::var;
use tokio::runtime::Runtime;

#[test]
fn get_position() -> Fallible<()> {
    let _ = dotenv::dotenv();
    let _ = env_logger::try_init();
    let _ = ::env_logger::try_init();
    let mut rt = Runtime::new()?;

    let bm = BitMEX::with_credential(&var("BITMEX_KEY")?, &var("BITMEX_SECRET")?);
    let fut = bm.request(GetPositionRequest {
        ..Default::default()
    });

    debug!("{:?}", rt.block_on(fut)?);
    Ok(())
}

#[test]
fn post_position_isolate() -> Fallible<()> {
    let _ = dotenv::dotenv();
    let _ = env_logger::try_init();
    let _ = ::env_logger::try_init();
    let mut rt = Runtime::new()?;

    let bm = BitMEX::with_credential(&var("BITMEX_KEY")?, &var("BITMEX_SECRET")?);
    let fut = bm.request(PostPositionIsolateRequest {
        symbol: "XBTUSD".into(),
        enabled: Some(false),
    });

    debug!("{:?}", rt.block_on(fut)?);
    Ok(())
}

#[test]
fn post_position_leverage() -> Fallible<()> {
    let _ = dotenv::dotenv();
    let _ = env_logger::try_init();
    let _ = ::env_logger::try_init();
    let mut rt = Runtime::new()?;

    let bm = BitMEX::with_credential(&var("BITMEX_KEY")?, &var("BITMEX_SECRET")?);
    let fut = bm.request(PostPositionLeverageRequest {
        symbol: "XBTUSD".into(),
        leverage: 1.1,
    });

    debug!("{:?}", rt.block_on(fut)?);
    Ok(())
}

#[test]
fn post_position_risk_limit() -> Fallible<()> {
    let _ = dotenv::dotenv();
    let _ = env_logger::try_init();
    let _ = ::env_logger::try_init();
    let mut rt = Runtime::new()?;

    let bm = BitMEX::with_credential(&var("BITMEX_KEY")?, &var("BITMEX_SECRET")?);
    let fut = bm.request(PostPositionRiskLimitRequest {
        symbol: "XBTUSD".into(),
        risk_limit: 30000000000,
    });

    let a = rt.block_on(fut)?;
    println!("{:?}", a);
    Ok(())
}

#[test]
#[ignore]
fn post_position_transfer_margin() -> Fallible<()> {
    let _ = dotenv::dotenv();
    let _ = env_logger::try_init();
    let _ = ::env_logger::try_init();
    let mut rt = Runtime::new()?;

    let bm = BitMEX::with_credential(&var("BITMEX_KEY")?, &var("BITMEX_SECRET")?);
    let fut = bm.request(PostPositionTransferMarginRequest {
        symbol: "XBTUSD".into(),
        amount: 10,
    });

    debug!("{:?}", rt.block_on(fut)?);
    Ok(())
}