using Furion;
|
using Furion.FriendlyException;
|
using Furion.HttpRemote;
|
using Furion.Shapeless;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Net.Http.Headers;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace FlexJobApi.Core
|
{
|
public interface IResourceHttpProvider
|
{
|
HttpRequestBuilder AddAuthentication(HttpRequestBuilder builder);
|
Task<TResponse> SendAsAsync<TResponse>(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder);
|
}
|
|
public class DefaultResourceHttpProvider : IResourceHttpProvider
|
{
|
public HttpRequestBuilder AddAuthentication(HttpRequestBuilder builder)
|
{
|
var token = App.HttpContext.Request.Headers["Authorization"].ToString();
|
var refreshToken = App.HttpContext.Request.Headers["X-Authorization"].ToString();
|
return builder
|
.AddAuthentication(new AuthenticationHeaderValue("Authorization", token))
|
.AddAuthentication(new AuthenticationHeaderValue("X-Authorization", refreshToken));
|
}
|
|
public async Task<TResponse> SendAsAsync<TResponse>(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder)
|
{
|
var response = await httpRemoteService.SendAsAsync<TResponse>(builder);
|
dynamic clay = Clay.Parse(response);
|
if (clay.Code == 401)
|
{
|
Console.WriteLine();
|
throw new Exception();
|
}
|
else
|
{
|
return response;
|
}
|
}
|
}
|
}
|