Skip to content

Commit 97800d6

Browse files
authored
Move the TokenCredential trait to azure_core (#56)
1 parent 46cc082 commit 97800d6

14 files changed

+68
-64
lines changed

sdk/core/Cargo.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,12 @@ uuid = { version = "0.8", features = ["v4"] }
3030
bytes = "0.5"
3131
hyper-rustls = "0.21"
3232
failure = "0.1"
33+
async-trait = "0.1.36"
34+
oauth2 = { version = "4.0.0-alpha.2" }
3335

3436
[dev-dependencies]
35-
tokio = "0.2"
36-
env_logger = "0.7"
37+
tokio = "0.3"
38+
env_logger = "0.8"
3739

3840
[features]
3941
test_e2e = []

sdk/core/src/lib.rs

Lines changed: 49 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,42 +7,71 @@ extern crate log;
77
extern crate quick_error;
88
#[macro_use]
99
extern crate serde_derive;
10+
1011
#[macro_use]
1112
pub mod errors;
1213
pub mod parsing;
1314
#[macro_use]
1415
pub mod enumerations;
16+
pub mod ba512_range;
17+
pub mod headers;
1518
pub mod incompletevector;
1619
pub mod lease;
17-
pub mod util;
18-
use crate::util::HeaderMapExt;
19-
use std::fmt::Debug;
20-
pub mod ba512_range;
21-
use base64::encode;
2220
pub mod modify_conditions;
23-
use self::modify_conditions::{IfMatchCondition, IfSinceCondition, SequenceNumberCondition};
24-
pub mod headers;
21+
pub mod prelude;
2522
pub mod range;
26-
use self::headers::*;
23+
mod stored_access_policy;
24+
pub mod util;
25+
26+
use errors::{check_status_extract_body_2, AzureError};
27+
use headers::*;
28+
use lease::LeaseId;
29+
use modify_conditions::{IfMatchCondition, IfSinceCondition, SequenceNumberCondition};
30+
pub use stored_access_policy::{StoredAccessPolicy, StoredAccessPolicyList};
31+
use util::HeaderMapExt;
32+
33+
use base64::encode;
34+
use chrono::{DateTime, Utc};
35+
use http::request::Builder;
36+
use http::status::StatusCode;
37+
use http::HeaderMap;
2738
use hyper::header::{
2839
HeaderName, CONTENT_ENCODING, CONTENT_LANGUAGE, CONTENT_LENGTH, CONTENT_TYPE, DATE, ETAG,
2940
IF_MODIFIED_SINCE, LAST_MODIFIED, RANGE, USER_AGENT,
3041
};
42+
use hyper::{Body, Client, Request};
43+
use oauth2::AccessToken;
3144
use uuid::Uuid;
32-
pub type RequestId = Uuid;
33-
pub type SessionToken = String;
34-
use crate::errors::{check_status_extract_body_2, AzureError};
35-
use crate::lease::LeaseId;
36-
use http::request::Builder;
37-
use http::HeaderMap;
45+
3846
use std::collections::HashMap;
3947
use std::convert::TryFrom;
40-
mod stored_access_policy;
41-
pub use self::stored_access_policy::{StoredAccessPolicy, StoredAccessPolicyList};
42-
pub mod prelude;
43-
use chrono::{DateTime, Utc};
44-
use http::status::StatusCode;
45-
use hyper::{Body, Client, Request};
48+
use std::fmt::Debug;
49+
50+
pub type RequestId = Uuid;
51+
pub type SessionToken = String;
52+
53+
/// Represents an Azure service bearer access token with expiry information.
54+
#[derive(Debug, Clone)]
55+
pub struct TokenResponse {
56+
/// Get the access token value.
57+
pub token: AccessToken,
58+
/// Gets the time when the provided token expires.
59+
pub expires_on: DateTime<Utc>,
60+
}
61+
62+
impl TokenResponse {
63+
/// Create a new `TokenResponse`
64+
pub fn new(token: AccessToken, expires_on: DateTime<Utc>) -> Self {
65+
Self { token, expires_on }
66+
}
67+
}
68+
69+
/// Represents a credential capable of providing an OAuth token.
70+
#[async_trait::async_trait]
71+
pub trait TokenCredential {
72+
/// Gets a `TokenResponse` for the specified resource
73+
async fn get_token(&self, resource: &str) -> Result<TokenResponse, AzureError>;
74+
}
4675

4776
#[macro_export]
4877
macro_rules! response_from_headers {

sdk/identity/examples/cli_credentials.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use azure_core::TokenCredential;
12
use azure_identity::token_credentials::*;
23
use std::error::Error;
34
use url::Url;

sdk/identity/examples/default_credentials.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use azure_core::TokenCredential;
12
use azure_identity::token_credentials::*;
23
use std::error::Error;
34
use url::Url;

sdk/identity/examples/environment_credentials.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use azure_core::TokenCredential;
12
use azure_identity::token_credentials::*;
23
use std::error::Error;
34
use url::Url;

sdk/identity/src/token_credentials/cli_credentials.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
use crate::token_credentials::{TokenCredential, TokenResponse};
2-
31
use azure_core::errors::AzureError;
2+
use azure_core::{TokenCredential, TokenResponse};
43
use chrono::{DateTime, Utc};
54
use oauth2::AccessToken;
65
use serde::Deserialize;

sdk/identity/src/token_credentials/client_secret_credentials.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
use super::{TokenCredential, TokenResponse};
2-
31
use azure_core::errors::AzureError;
2+
use azure_core::{TokenCredential, TokenResponse};
43
use chrono::Utc;
54
use oauth2::{
65
basic::BasicClient, reqwest::async_http_client, AccessToken, AuthType, AuthUrl, Scope, TokenUrl,

sdk/identity/src/token_credentials/default_credentials.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
use super::{
2-
AzureCliCredential, EnvironmentCredential, ManagedIdentityCredential, TokenCredential,
3-
TokenResponse,
4-
};
1+
use super::{AzureCliCredential, EnvironmentCredential, ManagedIdentityCredential};
52
use azure_core::errors::AzureError;
3+
use azure_core::{TokenCredential, TokenResponse};
64
use log::debug;
75

86
/// Provides a mechanism of selectively disabling credentials used for a `DefaultCredential` instance

sdk/identity/src/token_credentials/environment_credentials.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
use super::{ClientSecretCredential, TokenCredential, TokenResponse};
1+
use super::ClientSecretCredential;
22
use azure_core::errors::AzureError;
3+
use azure_core::{TokenCredential, TokenResponse};
34

45
const AZURE_TENANT_ID_ENV_KEY: &str = "AZURE_TENANT_ID";
56
const AZURE_CLIENT_ID_ENV_KEY: &str = "AZURE_CLIENT_ID";

sdk/identity/src/token_credentials/managed_identity_credentials.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
use super::{TokenCredential, TokenResponse};
2-
31
use azure_core::errors::AzureError;
2+
use azure_core::{TokenCredential, TokenResponse};
43
use chrono::{DateTime, Utc};
54
use oauth2::AccessToken;
65
use serde::Deserialize;

sdk/identity/src/token_credentials/mod.rs

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,3 @@ pub use client_secret_credentials::*;
1616
pub use default_credentials::*;
1717
pub use environment_credentials::*;
1818
pub use managed_identity_credentials::*;
19-
20-
use azure_core::errors::AzureError;
21-
use chrono::{DateTime, Utc};
22-
use oauth2::AccessToken;
23-
24-
/// Represents an Azure service bearer access token with expiry information.
25-
#[derive(Debug, Clone)]
26-
pub struct TokenResponse {
27-
/// Get the access token value.
28-
pub token: AccessToken,
29-
/// Gets the time when the provided token expires.
30-
pub expires_on: DateTime<Utc>,
31-
}
32-
33-
impl TokenResponse {
34-
/// Create a new `TokenResponse`
35-
pub fn new(token: AccessToken, expires_on: DateTime<Utc>) -> Self {
36-
Self { token, expires_on }
37-
}
38-
}
39-
40-
/// Represents a credential capable of providing an OAuth token.
41-
#[async_trait::async_trait]
42-
pub trait TokenCredential {
43-
/// Gets a `TokenResponse` for the specified resource
44-
async fn get_token(&self, resource: &str) -> Result<TokenResponse, AzureError>;
45-
}

sdk/key_vault/src/client.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::KeyVaultError;
22
use anyhow::Context;
33
use anyhow::Result;
4-
use azure_identity::token_credentials::{TokenCredential, TokenResponse};
4+
use azure_core::{TokenCredential, TokenResponse};
55

66
pub(crate) const PUBLIC_ENDPOINT_SUFFIX: &str = "vault.azure.net";
77
pub(crate) const API_VERSION: &str = "7.0";

sdk/key_vault/src/secret.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::KeyVaultClient;
22
use crate::{client::API_VERSION, KeyVaultError};
33
use anyhow::{Context, Result};
4-
use azure_identity::token_credentials::TokenCredential;
4+
use azure_core::TokenCredential;
55
use chrono::serde::ts_seconds;
66
use chrono::{DateTime, Utc};
77
use getset::Getters;
@@ -641,7 +641,7 @@ mod tests {
641641

642642
use async_trait;
643643
use azure_core::errors::AzureError;
644-
use azure_identity::token_credentials::{TokenCredential, TokenResponse};
644+
use azure_core::{TokenCredential, TokenResponse};
645645
use chrono::{Duration, Utc};
646646
use mockito::{mock, Matcher};
647647
use oauth2::AccessToken;

sdk/storage/examples/blob_05_default_credential.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
extern crate log;
33

44
use azure_core::prelude::*;
5-
use azure_identity::token_credentials::{DefaultCredential, TokenCredential};
5+
use azure_core::TokenCredential;
6+
use azure_identity::token_credentials::DefaultCredential;
67
use azure_storage::blob::prelude::*;
78
use azure_storage::core::prelude::*;
89
use std::error::Error;

0 commit comments

Comments
 (0)