// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using Microsoft.Bot.Configuration;
using Microsoft.Bot.Connector.DirectLine;
using Microsoft.Extensions.Configuration;
using Microsoft.Rest.Serialization;
using System;
using System.Net.Http;
using System.Threading.Tasks;
using TranslationBot.Translation.Model;
namespace TranslationBot.Translation
{
///
/// Bot Service class to interact with bot
///
public class TokenService
{
private static readonly HttpClient s_httpClient = new HttpClient();
private readonly string _botId;
private readonly string _tenantId;
private readonly string _tokenEndPoint;
public TokenService(IConfiguration configuration)
{
_botId = configuration["BotId"];
_tenantId = configuration["TenantId"];
_tokenEndPoint = configuration["TokenEndPoint"];
}
///
/// Get directline token for connecting bot
///
/// directline token as string
public async Task GetTokenAsync()
{
string token;
using (var httpRequest = new HttpRequestMessage())
{
httpRequest.Method = HttpMethod.Get;
UriBuilder uriBuilder = new UriBuilder(_tokenEndPoint);
uriBuilder.Query = $"botId={_botId}&tenantId={_tenantId}";
httpRequest.RequestUri = uriBuilder.Uri;
using (var response = await s_httpClient.SendAsync(httpRequest))
{
var responseString = await response.Content.ReadAsStringAsync();
token = SafeJsonConvert.DeserializeObject(responseString).Token;
}
}
return token;
}
///
/// TODO
///
/// directline token as string
private static DirectLineClient RefreshToken(string currentToken)
{
string refreshToken = new DirectLineClient(currentToken).Tokens.RefreshToken().Token;
// create a new directline client with refreshToken
var directLineClient = new DirectLineClient(refreshToken);
// use new directLineClient to communicate to your bot
return directLineClient;
}
}
}