pub struct OAuthCbClient { /* private fields */ }Expand description
A simple client to manage OAuth2 access tokens and permissions
Implementations§
Source§impl OAuthCbClient
impl OAuthCbClient
Sourcepub fn new(client_id: &str, client_secret: &str, redirect_url: &str) -> Self
pub fn new(client_id: &str, client_secret: &str, redirect_url: &str) -> Self
Instantiate a new OAuthCbClient
let client_id = "my_secret_client_id_provided_by_coinbase";
let client_secret = "my_client_secret_provided_by_coinbase";
let redirect_url = "http://localhost:3001";
let oauth_cb_client = OAuthCbClient::new(client_id, client_secret, redirect_url);client_idandclient secretare given to you by the API service provider. Store them in a safe place. For instance hardcodding them in the source code is a bad idea.redirect_urlis the url you will be asked to access to authenticate. Make sure it is accessible to you.
Examples found in repository?
7async fn main() {
8 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
9 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
10 .add_scope("wallet:accounts:read")
11 .authorize_once()
12 .await;
13
14 let cb_client = CbClient::new(&oauth_cb_client);
15 run_list_get_accounts(&cb_client).await;
16
17 oauth_cb_client.revoke_access().await;
18}More examples
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:transactions:read")
9 .authorize_once()
10 .await;
11
12 let cb_client = CbClient::new(&oauth_cb_client);
13 run_get_transactions_summary(&cb_client).await;
14
15 oauth_cb_client.revoke_access().await;
16}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_order_and_cancel(&cb_client).await;
14
15 run_cancel_nonexistent_order(&cb_client).await;
16
17 oauth_cb_client.revoke_access().await;
18}9async fn main() {
10 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
11 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
12 .add_scope("wallet:transactions:read") // NOT wallet:orders:read as CB's doc says.
13 .authorize_once()
14 .await;
15
16 let cb_client = CbClient::new(&oauth_cb_client);
17 run_list_orders(&cb_client).await;
18 run_list_fills(&cb_client).await;
19
20 oauth_cb_client.revoke_access().await;
21}14async fn main() {
15 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
16 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
17 .add_scope("wallet:user:read")
18 .authorize_once()
19 .await;
20
21 let cb_client = CbClient::new(&oauth_cb_client);
22
23 run_get_bid_ask(&cb_client).await;
24 run_get_product_book(&cb_client).await;
25 run_list_products(&cb_client).await;
26 run_get_product(&cb_client).await;
27 run_get_product_candles(&cb_client).await;
28 run_get_market_trades(&cb_client).await;
29
30 oauth_cb_client.revoke_access().await;
31}17async fn main() {
18 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
19 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
20 .add_scope("wallet:accounts:read")
21 .add_scope("wallet:transactions:read")
22 .add_scope("wallet:user:read")
23 .authorize_once()
24 .await;
25
26 let cb_client = CbClient::new(&oauth_cb_client);
27
28 run_list_get_accounts(&cb_client).await;
29
30 run_list_orders(&cb_client).await;
31 run_list_fills(&cb_client).await;
32
33 run_get_bid_ask(&cb_client).await;
34 run_get_product_book(&cb_client).await;
35 run_list_products(&cb_client).await;
36 run_get_product(&cb_client).await;
37 run_get_product_candles(&cb_client).await;
38 run_get_market_trades(&cb_client).await;
39 run_get_transactions_summary(&cb_client).await;
40
41 oauth_cb_client.revoke_access().await;
42}Sourcepub fn add_scope(self, scope_description: &str) -> Self
pub fn add_scope(self, scope_description: &str) -> Self
AccessToken are only valid for predifnied scopes.
To add one scope, for instance
oauth_cb_client.add_scope("wallet:transactions:read");It can be called multiple times to add mutliple scopes. Refer to Coinbase’s documentation for adding the appropriate scopes. As it can be confusing, you may refer to the examples of the current package to find out which ones are needed.
Examples found in repository?
7async fn main() {
8 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
9 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
10 .add_scope("wallet:accounts:read")
11 .authorize_once()
12 .await;
13
14 let cb_client = CbClient::new(&oauth_cb_client);
15 run_list_get_accounts(&cb_client).await;
16
17 oauth_cb_client.revoke_access().await;
18}More examples
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:transactions:read")
9 .authorize_once()
10 .await;
11
12 let cb_client = CbClient::new(&oauth_cb_client);
13 run_get_transactions_summary(&cb_client).await;
14
15 oauth_cb_client.revoke_access().await;
16}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_order_and_cancel(&cb_client).await;
14
15 run_cancel_nonexistent_order(&cb_client).await;
16
17 oauth_cb_client.revoke_access().await;
18}9async fn main() {
10 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
11 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
12 .add_scope("wallet:transactions:read") // NOT wallet:orders:read as CB's doc says.
13 .authorize_once()
14 .await;
15
16 let cb_client = CbClient::new(&oauth_cb_client);
17 run_list_orders(&cb_client).await;
18 run_list_fills(&cb_client).await;
19
20 oauth_cb_client.revoke_access().await;
21}14async fn main() {
15 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
16 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
17 .add_scope("wallet:user:read")
18 .authorize_once()
19 .await;
20
21 let cb_client = CbClient::new(&oauth_cb_client);
22
23 run_get_bid_ask(&cb_client).await;
24 run_get_product_book(&cb_client).await;
25 run_list_products(&cb_client).await;
26 run_get_product(&cb_client).await;
27 run_get_product_candles(&cb_client).await;
28 run_get_market_trades(&cb_client).await;
29
30 oauth_cb_client.revoke_access().await;
31}17async fn main() {
18 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
19 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
20 .add_scope("wallet:accounts:read")
21 .add_scope("wallet:transactions:read")
22 .add_scope("wallet:user:read")
23 .authorize_once()
24 .await;
25
26 let cb_client = CbClient::new(&oauth_cb_client);
27
28 run_list_get_accounts(&cb_client).await;
29
30 run_list_orders(&cb_client).await;
31 run_list_fills(&cb_client).await;
32
33 run_get_bid_ask(&cb_client).await;
34 run_get_product_book(&cb_client).await;
35 run_list_products(&cb_client).await;
36 run_get_product(&cb_client).await;
37 run_get_product_candles(&cb_client).await;
38 run_get_market_trades(&cb_client).await;
39 run_get_transactions_summary(&cb_client).await;
40
41 oauth_cb_client.revoke_access().await;
42}Get Tokens from the issuing authority. Returns once it has stored them. Otherwise crashes.
oauth_cb_client.add_scope("wallet:transactions:read")
.authorize_once().await;Once, because it does not instantiate a mechanism to renew tokens. So after 2 hours, the tokens will be invalid.
Examples found in repository?
7async fn main() {
8 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
9 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
10 .add_scope("wallet:accounts:read")
11 .authorize_once()
12 .await;
13
14 let cb_client = CbClient::new(&oauth_cb_client);
15 run_list_get_accounts(&cb_client).await;
16
17 oauth_cb_client.revoke_access().await;
18}More examples
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:transactions:read")
9 .authorize_once()
10 .await;
11
12 let cb_client = CbClient::new(&oauth_cb_client);
13 run_get_transactions_summary(&cb_client).await;
14
15 oauth_cb_client.revoke_access().await;
16}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_order_and_cancel(&cb_client).await;
14
15 run_cancel_nonexistent_order(&cb_client).await;
16
17 oauth_cb_client.revoke_access().await;
18}9async fn main() {
10 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
11 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
12 .add_scope("wallet:transactions:read") // NOT wallet:orders:read as CB's doc says.
13 .authorize_once()
14 .await;
15
16 let cb_client = CbClient::new(&oauth_cb_client);
17 run_list_orders(&cb_client).await;
18 run_list_fills(&cb_client).await;
19
20 oauth_cb_client.revoke_access().await;
21}14async fn main() {
15 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
16 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
17 .add_scope("wallet:user:read")
18 .authorize_once()
19 .await;
20
21 let cb_client = CbClient::new(&oauth_cb_client);
22
23 run_get_bid_ask(&cb_client).await;
24 run_get_product_book(&cb_client).await;
25 run_list_products(&cb_client).await;
26 run_get_product(&cb_client).await;
27 run_get_product_candles(&cb_client).await;
28 run_get_market_trades(&cb_client).await;
29
30 oauth_cb_client.revoke_access().await;
31}17async fn main() {
18 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
19 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
20 .add_scope("wallet:accounts:read")
21 .add_scope("wallet:transactions:read")
22 .add_scope("wallet:user:read")
23 .authorize_once()
24 .await;
25
26 let cb_client = CbClient::new(&oauth_cb_client);
27
28 run_list_get_accounts(&cb_client).await;
29
30 run_list_orders(&cb_client).await;
31 run_list_fills(&cb_client).await;
32
33 run_get_bid_ask(&cb_client).await;
34 run_get_product_book(&cb_client).await;
35 run_list_products(&cb_client).await;
36 run_get_product(&cb_client).await;
37 run_get_product_candles(&cb_client).await;
38 run_get_market_trades(&cb_client).await;
39 run_get_transactions_summary(&cb_client).await;
40
41 oauth_cb_client.revoke_access().await;
42}Sourcepub async fn revoke_access(&self)
pub async fn revoke_access(&self)
Revoke the obtained token
Just to make sure no one can use it afterwards. Note that without calling this function, Coinbase tokens normally expire after 2 hours.
Examples found in repository?
7async fn main() {
8 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
9 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
10 .add_scope("wallet:accounts:read")
11 .authorize_once()
12 .await;
13
14 let cb_client = CbClient::new(&oauth_cb_client);
15 run_list_get_accounts(&cb_client).await;
16
17 oauth_cb_client.revoke_access().await;
18}More examples
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:transactions:read")
9 .authorize_once()
10 .await;
11
12 let cb_client = CbClient::new(&oauth_cb_client);
13 run_get_transactions_summary(&cb_client).await;
14
15 oauth_cb_client.revoke_access().await;
16}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_order_and_cancel(&cb_client).await;
14
15 run_cancel_nonexistent_order(&cb_client).await;
16
17 oauth_cb_client.revoke_access().await;
18}9async fn main() {
10 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
11 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
12 .add_scope("wallet:transactions:read") // NOT wallet:orders:read as CB's doc says.
13 .authorize_once()
14 .await;
15
16 let cb_client = CbClient::new(&oauth_cb_client);
17 run_list_orders(&cb_client).await;
18 run_list_fills(&cb_client).await;
19
20 oauth_cb_client.revoke_access().await;
21}14async fn main() {
15 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
16 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
17 .add_scope("wallet:user:read")
18 .authorize_once()
19 .await;
20
21 let cb_client = CbClient::new(&oauth_cb_client);
22
23 run_get_bid_ask(&cb_client).await;
24 run_get_product_book(&cb_client).await;
25 run_list_products(&cb_client).await;
26 run_get_product(&cb_client).await;
27 run_get_product_candles(&cb_client).await;
28 run_get_market_trades(&cb_client).await;
29
30 oauth_cb_client.revoke_access().await;
31}17async fn main() {
18 let (client_id, client_secret, redirect_url) = utils::get_env_variables();
19 let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
20 .add_scope("wallet:accounts:read")
21 .add_scope("wallet:transactions:read")
22 .add_scope("wallet:user:read")
23 .authorize_once()
24 .await;
25
26 let cb_client = CbClient::new(&oauth_cb_client);
27
28 run_list_get_accounts(&cb_client).await;
29
30 run_list_orders(&cb_client).await;
31 run_list_fills(&cb_client).await;
32
33 run_get_bid_ask(&cb_client).await;
34 run_get_product_book(&cb_client).await;
35 run_list_products(&cb_client).await;
36 run_get_product(&cb_client).await;
37 run_get_product_candles(&cb_client).await;
38 run_get_market_trades(&cb_client).await;
39 run_get_transactions_summary(&cb_client).await;
40
41 oauth_cb_client.revoke_access().await;
42}Trait Implementations§
Source§impl AccessTokenProvider for OAuthCbClient
Returning the access token stored by the OAuthCbClient.
impl AccessTokenProvider for OAuthCbClient
Returning the access token stored by the OAuthCbClient.
Note that the token might be expired and invalid.
Source§fn access_token(&self) -> AccessToken
fn access_token(&self) -> AccessToken
oauth2::AccessToken().