using DealerSelection.Api.Models;
using DealerSelection.Common.Configuration;
using Newtonsoft.Json.Linq;
using System.Net;
using System.Net.Http.Headers;
using System.Text;
using DealerSelection.Common.Interfaces.HttpClient;
using DealerSelection.Common.Logging;
namespace DealerSelection.Api.CommonUtil
{
///
/// Summary description for TestRideExcellon
///
public static class MuleSoftIntegration
{
public static string ClientId = ConfigurationHelper.GetSetting("muleSoftAPIClientID", true);
public static string ClientSecret = ConfigurationHelper.GetSetting("muleSoftAIPClientSecret", true);
public static string TokenGenerateUrl = ConfigurationHelper.GetSetting("muleSoftGenerateTokenURL", true);
public static async Task generateToken(IHttpClientHandler clientHandler)
{
AzureLogHelper.LogMessage("Api:- generateToken Started :- " + DateTime.Now);
MulesoftToken token = new MulesoftToken();
try
{
var url = TokenGenerateUrl + "/token";
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
HttpClient client = clientHandler.GetHttpClient();
Uri requestUri = new Uri(url);
client.DefaultRequestHeaders.Add("client_id", ClientId);
client.DefaultRequestHeaders.Add("client_secret", ClientSecret);
client.DefaultRequestHeaders.Add("grant_type", "CLIENT_CREDENTIALS");
client.DefaultRequestHeaders.Add("cache-control", "no-cache");
var response = await client.PostAsync(requestUri, null);
if (response != null)
{
JObject obj = JObject.Parse(await response.Content.ReadAsStringAsync());
if (response.StatusCode.ToString() == "OK")
{
if (!string.IsNullOrEmpty(Convert.ToString(obj["access_token"])))
token.Value = Convert.ToString(obj["access_token"]);
if (!string.IsNullOrEmpty(Convert.ToString(obj["expires_in"])))
token.ExpiresIn = Convert.ToInt32(obj["expires_in"]);
}
}
return token;
}
catch (Exception ex)
{
throw ex;
}
return token;
}
public static async Task ReturnMuleSoftResponse(IHttpClientHandler clientHandler, string encstring, string url, string authToken, string encKeyToHeader)
{
try
{
var data = "{\"encData\": \"" + encstring + "\"}";
HttpClient request = clientHandler.GetHttpClient();
Uri requestUri = new Uri(url);
var httpContent = new MultipartFormDataContent();
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
request.DefaultRequestHeaders.Add("client_id", ClientId);
request.DefaultRequestHeaders.Add("client_secret", ClientSecret);
request.DefaultRequestHeaders.Add("Authorization", "Bearer " + authToken);
request.DefaultRequestHeaders.Add("encKey", encKeyToHeader);
return await request.PostAsync(requestUri, new StringContent(data, UnicodeEncoding.UTF8, "application/json"));
}
catch (Exception ex)
{
throw ex;
}
return null;
}
}
}