using Http.Core.Contexts; using Http.Core.Exceptions; using Http.Core.Extensions; using PCUT.Entities.ApiResponse; using System; using System.Collections.Generic; using System.Net.Http; using System.Text; using System.Threading; using System.Threading.Tasks; namespace Http.Core.Handlers { public class DeviceAuthHandler : DelegatingHandler { protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { request.Headers.Add("x-device-id", UserContext.Instance.DeviceId); request.Headers.Add("x-version-id", UserContext.Instance.AppVersion); var response = await base.SendAsync(request, cancellationToken); if (response.StatusCode == System.Net.HttpStatusCode.Conflict && response.Content.Headers.ContentLength > 0) { var content = await response.DeserializeObjectAsync(ensureSuccess: false); throw new AppOutdatedException(content.ErrorMessage); } return response; } } }