From 2da5c6be190d8078393eb2df777863931218ad19 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 08 八月 2025 10:16:40 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs |   53 ++++++++++++-----------------------------------------
 1 files changed, 12 insertions(+), 41 deletions(-)

diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs
index 9b51203..d1749ca 100644
--- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs
+++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs
@@ -42,8 +42,11 @@
         /// <typeparam name="TRequest"></typeparam>
         /// <typeparam name="TResponse"></typeparam>
         /// <param name="request"></param>
+        /// <param name="provider"></param>
         /// <returns></returns>
-        public static async Task<TResponse> SendHttpAsync<TRequest, TResponse>(TRequest request)
+        public static async Task<TResponse> SendHttpAsync<TRequest, TResponse>(
+            TRequest request,
+            IResourceHttpProvider provider = null)
             where TRequest : class, new()
         {
             var requestTypeFullName = typeof(TRequest).FullName;
@@ -52,46 +55,14 @@
                 .FirstOrDefaultAsync();
             var domain = await GetHealthyServiceDomain(resource);
             var httpRemoteService = App.GetRequiredService<IHttpRemoteService>();
-            var token = App.HttpContext.Request.Headers["Authorization"].ToString();
-            var refreshToken = App.HttpContext.Request.Headers["X-Authorization"].ToString();
-            TResponse response;
-            switch (resource.Method)
-            {
-                case EnumResourceMethod.Get:
-                    response = await httpRemoteService.GetAsAsync<TResponse>(
-                        $"{domain}{resource.Route}",
-                        it =>
-                            it.WithQueryParameters(request)
-                            .AddAuthentication(new AuthenticationHeaderValue("Authorization", token))
-                            .AddAuthentication(new AuthenticationHeaderValue("X-Authorization", refreshToken)));
-                    break;
-                case EnumResourceMethod.Post:
-                    response = await httpRemoteService.PostAsAsync<TResponse>(
-                        $"{domain}{resource.Route}",
-                        it =>
-                            it.SetJsonContent(request)
-                            .WithHeader("Authorization", token)
-                            .WithHeader("X-Authorization", refreshToken));
-                    break;
-                case EnumResourceMethod.Put:
-                    response = await httpRemoteService.PutAsAsync<TResponse>(
-                        $"{domain}{resource.Route}",
-                        it =>
-                            it.SetJsonContent(request)
-                            .AddAuthentication(new AuthenticationHeaderValue("Authorization", token))
-                            .AddAuthentication(new AuthenticationHeaderValue("X-Authorization", refreshToken)));
-                    break;
-                case EnumResourceMethod.Delete:
-                    response = await httpRemoteService.DeleteAsAsync<TResponse>(
-                        $"{domain}{resource.Route}",
-                        it =>
-                            it.SetJsonContent(request)
-                            .AddAuthentication(new AuthenticationHeaderValue("Authorization", token))
-                            .AddAuthentication(new AuthenticationHeaderValue("X-Authorization", refreshToken)));
-                    break;
-                default:
-                    throw Oops.Oh(EnumErrorCodeType.s400, $"涓嶆敮鎸佽姹傛柟寮弡resource.Method}");
-            }
+            var builder = HttpRequestBuilder.Create(resource.GetHttpMethod(), $"{domain}{resource.Route}");
+            if (resource.Method == EnumResourceMethod.Get)
+                builder = builder.WithQueryParameters(request);
+            else
+                builder = builder.SetJsonContent(request);
+            provider = provider ?? new DefaultResourceHttpProvider();
+            builder = provider.AddAuthentication(builder);
+            var response = await provider.SendAsAsync<TResponse>(httpRemoteService, builder);
             return response;
         }
 

--
Gitblit v1.9.1