post_orders/
post_orders.rs1use coinbase_v3::{basic_oauth::OAuthCbClient, client::CbClient, error::CbError, orders, utils};
2
3#[allow(dead_code)]
4#[tokio::main]
5async fn main() {
6 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
7 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
8 .add_scope("wallet:buys:create")
9 .authorize_once()
10 .await;
11
12 let cb_client = CbClient::new(&oauth_cb_client);
13 run_cancel_nonexistent_order(&cb_client).await;
16
17 oauth_cb_client.revoke_access().await;
18}
19
20pub async fn run_order_and_cancel(cb_client: &CbClient<'_>) {
21 let product_id = "BTC-USDT";
22 let side = orders::OrderSide::Buy;
23 let base_size = 1.0; let limit_price = 0.01; let end_time = chrono::offset::Utc::now() + chrono::Duration::days(1); let post_only = false;
27
28 let order_to_send = orders::create_limit_order_good_til_date(
29 product_id,
30 side,
31 base_size,
32 limit_price,
33 end_time,
34 post_only,
35 )
36 .unwrap();
37
38 let create_order_response = cb_client.create_order(&order_to_send).await.unwrap();
39 println!("{:#?}", create_order_response);
40
41 let order_ids = vec![create_order_response.order_id];
42 let cancel_response = cb_client.cancel_order(&order_ids).await.unwrap();
43 println!("{:#?}", cancel_response);
44}
45
46pub async fn run_cancel_nonexistent_order(cb_client: &CbClient<'_>) {
47 let order_ids = vec!["foo".to_string()];
48 let response = cb_client.cancel_order(&order_ids).await;
49
50 match response {
51 Ok(cancel_order_response) => println!("{:#?}", cancel_order_response),
52 Err(err) => match err {
53 CbError::Coinbase(e) => println!("Coinbase error: {:#?}", e),
54 CbError::Serde(e) => println!("Serde error: {:#?}", e),
55 CbError::Http(e) => println!("Http error: {:#?}", e),
56 },
57 }
58}