84 lines
3.0 KiB
C#
84 lines
3.0 KiB
C#
using RMWPFInterfaceLibrary.Models;
|
|
using RMWPFUserInterface.Models;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Linq;
|
|
using System.Net.Http;
|
|
using System.Net.Http.Headers;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace RMWPFInterfaceLibrary.Api
|
|
{
|
|
public class APIHelper : IAPIHelper
|
|
{
|
|
private HttpClient apiClient;
|
|
private ILoggedInUserModel _loggedInUser;
|
|
public APIHelper(ILoggedInUserModel loggedInUser)
|
|
{
|
|
InitializeClient();
|
|
_loggedInUser = loggedInUser;
|
|
}
|
|
private void InitializeClient()
|
|
{
|
|
string api = ConfigurationManager.AppSettings["api"];
|
|
|
|
apiClient = new HttpClient();
|
|
apiClient.BaseAddress = new Uri(api);
|
|
apiClient.DefaultRequestHeaders.Accept.Clear();
|
|
apiClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
|
}
|
|
|
|
public async Task<AuthenticatedUser> Authenticate(string username, string password)
|
|
{
|
|
var data = new FormUrlEncodedContent(new[]
|
|
{
|
|
new KeyValuePair<string, string>("grant_type", "password"),
|
|
new KeyValuePair<string, string>("username", username),
|
|
new KeyValuePair<string, string>("password", password),
|
|
});
|
|
|
|
using (HttpResponseMessage response = await apiClient.PostAsync("/Token", data))
|
|
{
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var result = await response.Content.ReadAsAsync<AuthenticatedUser>();
|
|
return result;
|
|
}
|
|
else
|
|
{
|
|
throw new Exception(response.ReasonPhrase);
|
|
}
|
|
}
|
|
}
|
|
|
|
public async Task GetLogedInUserInfo(string token)
|
|
{
|
|
apiClient.DefaultRequestHeaders.Clear();
|
|
apiClient.DefaultRequestHeaders.Accept.Clear();
|
|
apiClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
|
apiClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");
|
|
|
|
using (HttpResponseMessage response = await apiClient.GetAsync("api/User"))
|
|
{
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var result = await response.Content.ReadAsAsync<LoggedInUserModel>();
|
|
_loggedInUser.CreatedDate = result.CreatedDate;
|
|
_loggedInUser.EmailAddress = result.EmailAddress;
|
|
_loggedInUser.FirstName = result.FirstName;
|
|
_loggedInUser.Id = result.Id;
|
|
_loggedInUser.LastName = result.LastName;
|
|
_loggedInUser.Token = token;
|
|
}
|
|
else
|
|
{
|
|
throw new Exception(response.ReasonPhrase);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|