添加项目文件。

This commit is contained in:
SpecialX
2025-05-23 19:03:00 +08:00
parent 6fa7679fd3
commit d36fef2bbb
185 changed files with 13413 additions and 0 deletions

View File

@@ -0,0 +1,86 @@
using TechHelper.Client.HttpRepository;
using Microsoft.AspNetCore.Components;
using System.Net;
using System.Net.Http.Headers;
using MudBlazor;
using Microsoft.Extensions.DependencyInjection;
using System;
namespace BlazorProducts.Client.HttpInterceptor
{
public class HttpInterceptorHandlerService : DelegatingHandler
{
private readonly NavigationManager _navManager;
private readonly RefreshTokenService _refreshTokenService;
private readonly ISnackbar _serviceProvider;
private ISnackbar toastService = null;
public HttpInterceptorHandlerService(
NavigationManager navManager,
RefreshTokenService refreshTokenService,
ISnackbar serviceProvider)
{
_navManager = navManager;
_refreshTokenService = refreshTokenService;
_serviceProvider = serviceProvider;
}
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var absolutePath = request.RequestUri?.AbsolutePath;
_serviceProvider.Add("HELLO");
if (absolutePath != null && !absolutePath.Contains("token") && !absolutePath.Contains("account"))
{
var token = await _refreshTokenService.TryRefreshToken();
if (!string.IsNullOrEmpty(token))
{
request.Headers.Authorization =
new AuthenticationHeaderValue("bearer", token);
}
}
var response = await base.SendAsync(request, cancellationToken);
HandleResponse(response);
return response;
}
private void HandleResponse(HttpResponseMessage response)
{
if (response is null)
{
_navManager.NavigateTo("/error");
throw new HttpResponseException("Server not available.");
}
var message = "";
if (!response.IsSuccessStatusCode)
{
switch (response.StatusCode)
{
case HttpStatusCode.NotFound:
_navManager.NavigateTo("/404");
message = "Resource not found.";
break;
case HttpStatusCode.BadRequest:
message = "Invalid request. Please try again.";
break;
case HttpStatusCode.Unauthorized:
_navManager.NavigateTo("/unauthorized");
message = "Unauthorized access";
break;
default:
_navManager.NavigateTo("/error");
message = "Something went wrong. Please contact the administrator.";
break;
}
}
}
}
}

View File

@@ -0,0 +1,27 @@
using System;
using System.Runtime.Serialization;
namespace BlazorProducts.Client.HttpInterceptor
{
[Serializable]
internal class HttpResponseException : Exception
{
public HttpResponseException()
{
}
public HttpResponseException(string message) : base(message)
{
}
public HttpResponseException(string message, Exception innerException)
: base(message, innerException)
{
}
protected HttpResponseException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
}