first commit
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
using System.Text;
|
||||
using System.Xml.Linq;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Landmark.OLA.Models.OnlineBanking;
|
||||
using OnlineBankingAuth.Configuration;
|
||||
using OnlineBankingAuth.Parsers;
|
||||
|
||||
namespace OnlineBankingAuth.Services
|
||||
{
|
||||
public class DigitalInsightService : IDigitalInsightService
|
||||
{
|
||||
private readonly SecuritySettings _settings;
|
||||
private readonly IAuthTokenParser _parser;
|
||||
|
||||
public DigitalInsightService(
|
||||
IAuthTokenParser parser,
|
||||
IOptions<SecuritySettings> settings)
|
||||
{
|
||||
_parser = parser;
|
||||
_settings = settings.Value;
|
||||
}
|
||||
|
||||
public OnlineBankingFormData PopulateOnlineBankingDataFromConfig(OnlineBankingFormData data)
|
||||
{
|
||||
data.Authorization = "Basic " +
|
||||
Convert.ToBase64String(
|
||||
Encoding.UTF8.GetBytes(
|
||||
_settings.DigitalInsightConsumerKey + ":" + _settings.DigitalInsightConsumerSecret
|
||||
)
|
||||
);
|
||||
data.DI_FIID = _settings.DigitalInsightFIID;
|
||||
data.DI_TID = (Guid.NewGuid()).ToString();
|
||||
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
private IEnumerable<KeyValuePair<string, string>> BuildKeyValuePair(OnlineBankingFormData data)
|
||||
{
|
||||
return new Dictionary<string, string>
|
||||
{
|
||||
{"grant_type", data.GrantType },
|
||||
{"username", data.Username },
|
||||
{"password", data.Password }
|
||||
};
|
||||
}
|
||||
|
||||
public async Task<AuthTokenResponse> LoginUser(OnlineBankingFormData data)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var hc = new HttpClient())
|
||||
{
|
||||
var formData = BuildKeyValuePair(data);
|
||||
using (var content = new FormUrlEncodedContent(formData))
|
||||
{
|
||||
content.Headers.Clear();
|
||||
content.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
|
||||
HttpContent httpContent = new StringContent(await content.ReadAsStringAsync(), Encoding.UTF8, "application/x-www-form-urlencoded");
|
||||
|
||||
var httpRequest = new HttpRequestMessage(HttpMethod.Post, _settings.DigitalInsightPostTokenURI);
|
||||
httpRequest.Content = httpContent;
|
||||
|
||||
httpRequest.Headers.Add("Authorization", data.Authorization);
|
||||
httpRequest.Headers.Add("di_fiid", data.DI_FIID);
|
||||
httpRequest.Headers.Add("di_tid", data.DI_TID);
|
||||
|
||||
var response = hc.SendAsync(httpRequest);
|
||||
var xdoc = XDocument.Parse(await response.Result.Content.ReadAsStringAsync());
|
||||
var xel = XElement.Parse(xdoc.ToString());
|
||||
|
||||
var authTokenResponse = _parser.ParseAuthTokenResponse(xel);
|
||||
return authTokenResponse;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user