// // Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. // using Microsoft.Rest; using Microsoft.SqlTools.ResourceProvider.Core; using Microsoft.SqlTools.ResourceProvider.Core.Authentication; namespace Microsoft.SqlTools.ResourceProvider.DefaultImpl { /// /// Implementation for using built-in services /// Contains information about an Azure account subscription /// public class AzureUserAccountSubscriptionContext : IAzureUserAccountSubscriptionContext { /// /// Default constructor to initializes user account and subscription /// public AzureUserAccountSubscriptionContext(AzureSubscriptionIdentifier subscription, ServiceClientCredentials credentials) { CommonUtil.CheckForNull(subscription, nameof(subscription)); CommonUtil.CheckForNull(credentials, nameof(credentials)); Subscription = subscription; Credentials = credentials; } /// /// Creates a subscription context for connecting with a known access token. This creates a object for use /// in a request /// public static AzureUserAccountSubscriptionContext CreateStringTokenContext(AzureSubscriptionIdentifier subscription, string accessToken) { CommonUtil.CheckForNull(subscription, nameof(subscription)); CommonUtil.CheckStringForNullOrEmpty(accessToken, nameof(accessToken)); TokenCredentials credentials = new TokenCredentials(accessToken); return new AzureUserAccountSubscriptionContext(subscription, credentials); } public bool Equals(IAzureSubscriptionContext other) { return other != null && other.Equals(this); } /// /// Returns the wraper for the subscription identifier /// public IAzureSubscriptionIdentifier Subscription { get; private set; } /// /// Subscription name /// public string SubscriptionName { get { return Subscription != null ? Subscription.SubscriptionId : string.Empty; } } /// /// /// public bool Equals(IAzureUserAccountSubscriptionContext other) { return other != null && CommonUtil.SameSubscriptionIdentifier(Subscription, other.Subscription) && CommonUtil.SameUserAccount(UserAccount, other.UserAccount); } /// /// User Account /// public IAzureUserAccount UserAccount { get { return Subscription != null ? new AzureUserAccount(Subscription.UserAccount) : null; } } public ServiceClientCredentials Credentials { get; private set; } } }