//
// 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;
}
}
}