I don't know what I'm doing anymore

This commit is contained in:
Michele 2020-11-16 00:03:42 +00:00
parent ea9cc32534
commit 8fdee0cb67
17 changed files with 342 additions and 116 deletions

View file

@ -7,6 +7,8 @@ using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading;
using System.Threading.Tasks;
namespace Sledgemapper
@ -26,7 +28,7 @@ namespace Sledgemapper
.WithAutomaticReconnect()
.WithUrl("http://localhost:5000/SledgemapperHub", options =>
{
{
options.AccessTokenProvider = () => Task.FromResult(_authenticateResponse.Token);
})
@ -35,16 +37,8 @@ namespace Sledgemapper
var httpClientHandler = new HttpClientHandler();
//if (myConfigurationService.VerifySslCertificate == false)
//{
httpClientHandler.ServerCertificateCustomValidationCallback =
(message, certificate, chain, sslPolicyErrors) => true;
//}
Api = RestService.For<IMapApi>(
new HttpClient(httpClientHandler)
new HttpClient(new AuthenticatedHttpClientHandler(GetToken))
{
BaseAddress = new Uri("http://localhost:5000")
}
@ -59,7 +53,7 @@ namespace Sledgemapper
Connection.On<Player>("PlayerUpdate", (player) =>
{
var p = SessionData.Players.FirstOrDefault(m => m.ConnectionId == player.ConnectionId);
var p = SessionData.Players.FirstOrDefault(m => m.UserId == player.UserId);
if (p != null)
{
p.Position = player.Position;
@ -101,7 +95,7 @@ namespace Sledgemapper
Connection.On<Player>("NewPlayer", (player) =>
{
var p = SessionData.Players.FirstOrDefault(m => m.ConnectionId == player.ConnectionId);
var p = SessionData.Players.FirstOrDefault(m => m.UserId == player.UserId);
if (p is null)
{
SessionData.Players.Add(player);
@ -114,6 +108,11 @@ namespace Sledgemapper
});
}
private Task<string> GetToken()
{
return Task.FromResult(_authenticateResponse.Token);
}
public async Task<bool> Register(RegisterModel registerModel)
{
var result = await Api.Register(registerModel);
@ -173,4 +172,34 @@ namespace Sledgemapper
}
}
class AuthenticatedHttpClientHandler : HttpClientHandler
{
private readonly Func<Task<string>> getToken;
public AuthenticatedHttpClientHandler(Func<Task<string>> getToken)
{
if (getToken == null) throw new ArgumentNullException(nameof(getToken));
this.getToken = getToken;
//if (myConfigurationService.VerifySslCertificate == false)
//{
ServerCertificateCustomValidationCallback =
(message, certificate, chain, sslPolicyErrors) => true;
//}
}
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
// See if the request has an authorize header
var auth = request.Headers.Authorization;
if (auth != null)
{
var token = await getToken().ConfigureAwait(false);
request.Headers.Authorization = new AuthenticationHeaderValue(auth.Scheme, token);
}
return await base.SendAsync(request, cancellationToken).ConfigureAwait(false);
}
}
}