// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. using Microsoft.Teams.Common.Http; namespace Microsoft.Teams.Api.Clients; public class BotTokenClient : Client { public static readonly string BotScope = "https://api.botframework.com/.default"; public static readonly string GraphScope = "https://graph.microsoft.com/.default"; public string ActiveBotScope { get; set; } = BotScope; public string ActiveGraphScope { get; set; } = GraphScope; public BotTokenClient() : this(default) { } public BotTokenClient(CancellationToken cancellationToken = default) : base(cancellationToken) { } public BotTokenClient(IHttpClient client, CancellationToken cancellationToken = default) : base(client, cancellationToken) { } public BotTokenClient(IHttpClientOptions options, CancellationToken cancellationToken = default) : base(options, cancellationToken) { } public BotTokenClient(IHttpClientFactory factory, CancellationToken cancellationToken = default) : base(factory, cancellationToken) { } public virtual async Task GetAsync(IHttpCredentials credentials, IHttpClient? http = null, CancellationToken cancellationToken = default) { var token = cancellationToken != default ? cancellationToken : _cancellationToken; return await credentials.Resolve(http ?? _http, [ActiveBotScope], token).ConfigureAwait(false); } public async Task GetGraphAsync(IHttpCredentials credentials, IHttpClient? http = null, CancellationToken cancellationToken = default) { var token = cancellationToken != default ? cancellationToken : _cancellationToken; return await credentials.Resolve(http ?? _http, [ActiveGraphScope], token).ConfigureAwait(false); } }