Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions sdk/core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 = []
Expand Down
69 changes: 49 additions & 20 deletions sdk/core/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<Utc>,
}

impl TokenResponse {
/// Create a new `TokenResponse`
pub fn new(token: AccessToken, expires_on: DateTime<Utc>) -> 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<TokenResponse, AzureError>;
}

#[macro_export]
macro_rules! response_from_headers {
Expand Down
1 change: 1 addition & 0 deletions sdk/identity/examples/cli_credentials.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use azure_core::TokenCredential;
use azure_identity::token_credentials::*;
use std::error::Error;
use url::Url;
Expand Down
1 change: 1 addition & 0 deletions sdk/identity/examples/default_credentials.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use azure_core::TokenCredential;
use azure_identity::token_credentials::*;
use std::error::Error;
use url::Url;
Expand Down
1 change: 1 addition & 0 deletions sdk/identity/examples/environment_credentials.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use azure_core::TokenCredential;
use azure_identity::token_credentials::*;
use std::error::Error;
use url::Url;
Expand Down
3 changes: 1 addition & 2 deletions sdk/identity/src/token_credentials/cli_credentials.rs
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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,
Expand Down
6 changes: 2 additions & 4 deletions sdk/identity/src/token_credentials/default_credentials.rs
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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";
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
27 changes: 0 additions & 27 deletions sdk/identity/src/token_credentials/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<Utc>,
}

impl TokenResponse {
/// Create a new `TokenResponse`
pub fn new(token: AccessToken, expires_on: DateTime<Utc>) -> 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<TokenResponse, AzureError>;
}
2 changes: 1 addition & 1 deletion sdk/key_vault/src/client.rs
Original file line number Diff line number Diff line change
@@ -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";
Expand Down
4 changes: 2 additions & 2 deletions sdk/key_vault/src/secret.rs
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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;
Expand Down
3 changes: 2 additions & 1 deletion sdk/storage/examples/blob_05_default_credential.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down