refine http headers

This commit is contained in:
Jicheng Lu 2025-05-23 10:41:56 -05:00
parent 3dfb921126
commit ae12a2e92b
3 changed files with 11 additions and 10 deletions

View file

@ -4,5 +4,5 @@ namespace BotSharp.Abstraction.Http;
public interface IHttpRequestHook public interface IHttpRequestHook
{ {
void OnAddHttpHeaders(HttpHeaders headers); void OnAddHttpHeaders(HttpHeaders headers, Uri uri);
} }

View file

@ -56,9 +56,10 @@ public class HandleHttpRequestFn : IFunctionCallback
if (string.IsNullOrEmpty(url)) return null; if (string.IsNullOrEmpty(url)) return null;
using var client = _httpClientFactory.CreateClient(); using var client = _httpClientFactory.CreateClient();
PrepareRequestHeaders(client);
var (uri, request) = BuildHttpRequest(url, method, content); var (uri, request) = BuildHttpRequest(url, method, content);
PrepareRequestHeaders(client, uri);
var response = await client.SendAsync(request); var response = await client.SendAsync(request);
if (response == null || !response.IsSuccessStatusCode) if (response == null || !response.IsSuccessStatusCode)
{ {
@ -68,12 +69,12 @@ public class HandleHttpRequestFn : IFunctionCallback
return response; return response;
} }
private void PrepareRequestHeaders(HttpClient client) private void PrepareRequestHeaders(HttpClient client, Uri uri)
{ {
var hooks = _services.GetServices<IHttpRequestHook>(); var hooks = _services.GetServices<IHttpRequestHook>();
foreach (var hook in hooks) foreach (var hook in hooks)
{ {
hook.OnAddHttpHeaders(client.DefaultRequestHeaders); hook.OnAddHttpHeaders(client.DefaultRequestHeaders, uri);
} }
} }
@ -115,8 +116,8 @@ public class HandleHttpRequestFn : IFunctionCallback
switch (localMethod) switch (localMethod)
{ {
case "GET": case "POST":
matchMethod = HttpMethod.Get; matchMethod = HttpMethod.Post;
break; break;
case "DELETE": case "DELETE":
matchMethod = HttpMethod.Delete; matchMethod = HttpMethod.Delete;
@ -124,11 +125,11 @@ public class HandleHttpRequestFn : IFunctionCallback
case "PUT": case "PUT":
matchMethod = HttpMethod.Put; matchMethod = HttpMethod.Put;
break; break;
case "Patch": case "PATCH":
matchMethod = HttpMethod.Patch; matchMethod = HttpMethod.Patch;
break; break;
default: default:
matchMethod = HttpMethod.Post; matchMethod = HttpMethod.Get;
break; break;
} }
return matchMethod; return matchMethod;

View file

@ -20,7 +20,7 @@ public class BasicHttpRequestHook : IHttpRequestHook
_context = context; _context = context;
} }
public void OnAddHttpHeaders(HttpHeaders headers) public void OnAddHttpHeaders(HttpHeaders headers, Uri uri)
{ {
var settings = _services.GetRequiredService<HttpHandlerSettings>(); var settings = _services.GetRequiredService<HttpHandlerSettings>();