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 SendAsAsync(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 SendAsAsync(IHttpRemoteService httpRemoteService, HttpRequestBuilder builder) { var response = await httpRemoteService.SendAsAsync(builder); dynamic clay = Clay.Parse(response); if (clay.Code == 401) { Console.WriteLine(); throw new Exception(); } else { return response; } } } }