diff --git a/sdk/core/Cargo.toml b/sdk/core/Cargo.toml index 9eece3b998..3482fce80e 100644 --- a/sdk/core/Cargo.toml +++ b/sdk/core/Cargo.toml @@ -30,10 +30,12 @@ uuid = { version = "0.8", features = ["v4"] } bytes = "0.5" hyper-rustls = "0.21" failure = "0.1" +async-trait = "0.1.36" +oauth2 = { version = "4.0.0-alpha.2" } [dev-dependencies] -tokio = "0.2" -env_logger = "0.7" +tokio = "0.3" +env_logger = "0.8" [features] test_e2e = [] diff --git a/sdk/core/src/lib.rs b/sdk/core/src/lib.rs index 19c317425e..fa35d57f57 100644 --- a/sdk/core/src/lib.rs +++ b/sdk/core/src/lib.rs @@ -7,42 +7,71 @@ extern crate log; extern crate quick_error; #[macro_use] extern crate serde_derive; + #[macro_use] pub mod errors; pub mod parsing; #[macro_use] pub mod enumerations; +pub mod ba512_range; +pub mod headers; pub mod incompletevector; pub mod lease; -pub mod util; -use crate::util::HeaderMapExt; -use std::fmt::Debug; -pub mod ba512_range; -use base64::encode; pub mod modify_conditions; -use self::modify_conditions::{IfMatchCondition, IfSinceCondition, SequenceNumberCondition}; -pub mod headers; +pub mod prelude; pub mod range; -use self::headers::*; +mod stored_access_policy; +pub mod util; + +use errors::{check_status_extract_body_2, AzureError}; +use headers::*; +use lease::LeaseId; +use modify_conditions::{IfMatchCondition, IfSinceCondition, SequenceNumberCondition}; +pub use stored_access_policy::{StoredAccessPolicy, StoredAccessPolicyList}; +use util::HeaderMapExt; + +use base64::encode; +use chrono::{DateTime, Utc}; +use http::request::Builder; +use http::status::StatusCode; +use http::HeaderMap; use hyper::header::{ HeaderName, CONTENT_ENCODING, CONTENT_LANGUAGE, CONTENT_LENGTH, CONTENT_TYPE, DATE, ETAG, IF_MODIFIED_SINCE, LAST_MODIFIED, RANGE, USER_AGENT, }; +use hyper::{Body, Client, Request}; +use oauth2::AccessToken; use uuid::Uuid; -pub type RequestId = Uuid; -pub type SessionToken = String; -use crate::errors::{check_status_extract_body_2, AzureError}; -use crate::lease::LeaseId; -use http::request::Builder; -use http::HeaderMap; + use std::collections::HashMap; use std::convert::TryFrom; -mod stored_access_policy; -pub use self::stored_access_policy::{StoredAccessPolicy, StoredAccessPolicyList}; -pub mod prelude; -use chrono::{DateTime, Utc}; -use http::status::StatusCode; -use hyper::{Body, Client, Request}; +use std::fmt::Debug; + +pub type RequestId = Uuid; +pub type SessionToken = String; + +/// Represents an Azure service bearer access token with expiry information. +#[derive(Debug, Clone)] +pub struct TokenResponse { + /// Get the access token value. + pub token: AccessToken, + /// Gets the time when the provided token expires. + pub expires_on: DateTime, +} + +impl TokenResponse { + /// Create a new `TokenResponse` + pub fn new(token: AccessToken, expires_on: DateTime) -> Self { + Self { token, expires_on } + } +} + +/// Represents a credential capable of providing an OAuth token. +#[async_trait::async_trait] +pub trait TokenCredential { + /// Gets a `TokenResponse` for the specified resource + async fn get_token(&self, resource: &str) -> Result; +} #[macro_export] macro_rules! response_from_headers { diff --git a/sdk/identity/examples/cli_credentials.rs b/sdk/identity/examples/cli_credentials.rs index 2268cef7a7..bc250a17ec 100644 --- a/sdk/identity/examples/cli_credentials.rs +++ b/sdk/identity/examples/cli_credentials.rs @@ -1,3 +1,4 @@ +use azure_core::TokenCredential; use azure_identity::token_credentials::*; use std::error::Error; use url::Url; diff --git a/sdk/identity/examples/default_credentials.rs b/sdk/identity/examples/default_credentials.rs index e0b06b0890..b8523598d0 100644 --- a/sdk/identity/examples/default_credentials.rs +++ b/sdk/identity/examples/default_credentials.rs @@ -1,3 +1,4 @@ +use azure_core::TokenCredential; use azure_identity::token_credentials::*; use std::error::Error; use url::Url; diff --git a/sdk/identity/examples/environment_credentials.rs b/sdk/identity/examples/environment_credentials.rs index 8d94508ae3..a925ff642f 100644 --- a/sdk/identity/examples/environment_credentials.rs +++ b/sdk/identity/examples/environment_credentials.rs @@ -1,3 +1,4 @@ +use azure_core::TokenCredential; use azure_identity::token_credentials::*; use std::error::Error; use url::Url; diff --git a/sdk/identity/src/token_credentials/cli_credentials.rs b/sdk/identity/src/token_credentials/cli_credentials.rs index 58b1720497..3bb8ac1ad7 100644 --- a/sdk/identity/src/token_credentials/cli_credentials.rs +++ b/sdk/identity/src/token_credentials/cli_credentials.rs @@ -1,6 +1,5 @@ -use crate::token_credentials::{TokenCredential, TokenResponse}; - use azure_core::errors::AzureError; +use azure_core::{TokenCredential, TokenResponse}; use chrono::{DateTime, Utc}; use oauth2::AccessToken; use serde::Deserialize; diff --git a/sdk/identity/src/token_credentials/client_secret_credentials.rs b/sdk/identity/src/token_credentials/client_secret_credentials.rs index 281eb95477..d4bd08cc39 100644 --- a/sdk/identity/src/token_credentials/client_secret_credentials.rs +++ b/sdk/identity/src/token_credentials/client_secret_credentials.rs @@ -1,6 +1,5 @@ -use super::{TokenCredential, TokenResponse}; - use azure_core::errors::AzureError; +use azure_core::{TokenCredential, TokenResponse}; use chrono::Utc; use oauth2::{ basic::BasicClient, reqwest::async_http_client, AccessToken, AuthType, AuthUrl, Scope, TokenUrl, diff --git a/sdk/identity/src/token_credentials/default_credentials.rs b/sdk/identity/src/token_credentials/default_credentials.rs index 0057e76831..98bea8492b 100644 --- a/sdk/identity/src/token_credentials/default_credentials.rs +++ b/sdk/identity/src/token_credentials/default_credentials.rs @@ -1,8 +1,6 @@ -use super::{ - AzureCliCredential, EnvironmentCredential, ManagedIdentityCredential, TokenCredential, - TokenResponse, -}; +use super::{AzureCliCredential, EnvironmentCredential, ManagedIdentityCredential}; use azure_core::errors::AzureError; +use azure_core::{TokenCredential, TokenResponse}; use log::debug; /// Provides a mechanism of selectively disabling credentials used for a `DefaultCredential` instance diff --git a/sdk/identity/src/token_credentials/environment_credentials.rs b/sdk/identity/src/token_credentials/environment_credentials.rs index 9f86a7d47e..cdb090a3f9 100644 --- a/sdk/identity/src/token_credentials/environment_credentials.rs +++ b/sdk/identity/src/token_credentials/environment_credentials.rs @@ -1,5 +1,6 @@ -use super::{ClientSecretCredential, TokenCredential, TokenResponse}; +use super::ClientSecretCredential; use azure_core::errors::AzureError; +use azure_core::{TokenCredential, TokenResponse}; const AZURE_TENANT_ID_ENV_KEY: &str = "AZURE_TENANT_ID"; const AZURE_CLIENT_ID_ENV_KEY: &str = "AZURE_CLIENT_ID"; diff --git a/sdk/identity/src/token_credentials/managed_identity_credentials.rs b/sdk/identity/src/token_credentials/managed_identity_credentials.rs index de7a328b3f..b2f898934c 100644 --- a/sdk/identity/src/token_credentials/managed_identity_credentials.rs +++ b/sdk/identity/src/token_credentials/managed_identity_credentials.rs @@ -1,6 +1,5 @@ -use super::{TokenCredential, TokenResponse}; - use azure_core::errors::AzureError; +use azure_core::{TokenCredential, TokenResponse}; use chrono::{DateTime, Utc}; use oauth2::AccessToken; use serde::Deserialize; diff --git a/sdk/identity/src/token_credentials/mod.rs b/sdk/identity/src/token_credentials/mod.rs index 2f480874cb..bd6956fc1a 100644 --- a/sdk/identity/src/token_credentials/mod.rs +++ b/sdk/identity/src/token_credentials/mod.rs @@ -16,30 +16,3 @@ pub use client_secret_credentials::*; pub use default_credentials::*; pub use environment_credentials::*; pub use managed_identity_credentials::*; - -use azure_core::errors::AzureError; -use chrono::{DateTime, Utc}; -use oauth2::AccessToken; - -/// Represents an Azure service bearer access token with expiry information. -#[derive(Debug, Clone)] -pub struct TokenResponse { - /// Get the access token value. - pub token: AccessToken, - /// Gets the time when the provided token expires. - pub expires_on: DateTime, -} - -impl TokenResponse { - /// Create a new `TokenResponse` - pub fn new(token: AccessToken, expires_on: DateTime) -> Self { - Self { token, expires_on } - } -} - -/// Represents a credential capable of providing an OAuth token. -#[async_trait::async_trait] -pub trait TokenCredential { - /// Gets a `TokenResponse` for the specified resource - async fn get_token(&self, resource: &str) -> Result; -} diff --git a/sdk/key_vault/src/client.rs b/sdk/key_vault/src/client.rs index a70749e9fd..5b2a1d3780 100644 --- a/sdk/key_vault/src/client.rs +++ b/sdk/key_vault/src/client.rs @@ -1,7 +1,7 @@ use crate::KeyVaultError; use anyhow::Context; use anyhow::Result; -use azure_identity::token_credentials::{TokenCredential, TokenResponse}; +use azure_core::{TokenCredential, TokenResponse}; pub(crate) const PUBLIC_ENDPOINT_SUFFIX: &str = "vault.azure.net"; pub(crate) const API_VERSION: &str = "7.0"; diff --git a/sdk/key_vault/src/secret.rs b/sdk/key_vault/src/secret.rs index 2df585a254..53e0f0e388 100644 --- a/sdk/key_vault/src/secret.rs +++ b/sdk/key_vault/src/secret.rs @@ -1,7 +1,7 @@ use crate::KeyVaultClient; use crate::{client::API_VERSION, KeyVaultError}; use anyhow::{Context, Result}; -use azure_identity::token_credentials::TokenCredential; +use azure_core::TokenCredential; use chrono::serde::ts_seconds; use chrono::{DateTime, Utc}; use getset::Getters; @@ -641,7 +641,7 @@ mod tests { use async_trait; use azure_core::errors::AzureError; - use azure_identity::token_credentials::{TokenCredential, TokenResponse}; + use azure_core::{TokenCredential, TokenResponse}; use chrono::{Duration, Utc}; use mockito::{mock, Matcher}; use oauth2::AccessToken; diff --git a/sdk/storage/examples/blob_05_default_credential.rs b/sdk/storage/examples/blob_05_default_credential.rs index 81ec6e6bd4..7a6098294d 100644 --- a/sdk/storage/examples/blob_05_default_credential.rs +++ b/sdk/storage/examples/blob_05_default_credential.rs @@ -2,7 +2,8 @@ extern crate log; use azure_core::prelude::*; -use azure_identity::token_credentials::{DefaultCredential, TokenCredential}; +use azure_core::TokenCredential; +use azure_identity::token_credentials::DefaultCredential; use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; use std::error::Error;