Skip to content

Commit 30c809e

Browse files
authored
Merge pull request #538 from iceljc/features/refine-send-http-request
refine http handler
2 parents b4f87fd + 5c4fc63 commit 30c809e

File tree

1 file changed

+12
-25
lines changed

1 file changed

+12
-25
lines changed

src/Plugins/BotSharp.Plugin.HttpHandler/Functions/HandleHttpRequestFn.cs

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,15 @@ public async Task<bool> Execute(RoleDialogModel message)
3939
{
4040
var response = await SendHttpRequest(url, method, content);
4141
var responseContent = await HandleHttpResponse(response);
42-
message.RichContent = BuildRichContent(responseContent);
42+
message.Content = responseContent;
4343
message.StopCompletion = true;
4444
return true;
4545
}
4646
catch (Exception ex)
4747
{
4848
var msg = $"Fail when sending http request. Url: {url}, method: {method}, content: {content}";
4949
_logger.LogWarning($"{msg}\n(Error: {ex.Message})");
50-
message.RichContent = BuildRichContent($"{msg}");
50+
message.Content = msg;
5151
message.StopCompletion = true;
5252
return false;
5353
}
@@ -57,21 +57,14 @@ public async Task<bool> Execute(RoleDialogModel message)
5757
{
5858
if (string.IsNullOrEmpty(url)) return null;
5959

60-
var settings = _services.GetRequiredService<HttpHandlerSettings>();
6160
using var client = _httpClientFactory.CreateClient();
6261
AddRequestHeaders(client);
6362

6463
var (uri, request) = BuildHttpRequest(url, method, content);
65-
if (string.IsNullOrEmpty(uri.Host))
66-
{
67-
client.BaseAddress = new Uri(settings.BaseAddress);
68-
}
69-
7064
var response = await client.SendAsync(request);
71-
7265
if (response == null || !response.IsSuccessStatusCode)
7366
{
74-
throw new Exception($"Status code: {response?.StatusCode}");
67+
_logger.LogWarning($"Response status code: {response?.StatusCode}");
7568
}
7669

7770
return response;
@@ -94,17 +87,24 @@ private void AddRequestHeaders(HttpClient client)
9487
var httpMethod = GetHttpMethod(method);
9588
StringContent httpContent;
9689

90+
var requestUrl = url;
9791
if (httpMethod == HttpMethod.Get)
9892
{
9993
httpContent = BuildHttpContent("{}");
94+
requestUrl = BuildQuery(url, content);
10095
}
10196
else
10297
{
10398
httpContent = BuildHttpContent(content);
10499
}
105100

106-
var requestUrl = BuildQuery(url, content);
107-
var uri = new Uri(requestUrl);
101+
if (!Uri.TryCreate(requestUrl, UriKind.Absolute, out var uri))
102+
{
103+
var settings = _services.GetRequiredService<HttpHandlerSettings>();
104+
var baseUri = new Uri(settings.BaseAddress);
105+
uri = new Uri(baseUri, requestUrl);
106+
}
107+
108108
return (uri, new HttpRequestMessage
109109
{
110110
RequestUri = uri,
@@ -195,17 +195,4 @@ private async Task<string> HandleHttpResponse(HttpResponseMessage? response)
195195

196196
return await response.Content.ReadAsStringAsync();
197197
}
198-
199-
private RichContent<IRichMessage> BuildRichContent(string? content)
200-
{
201-
var state = _services.GetRequiredService<IConversationStateService>();
202-
203-
var text = !string.IsNullOrEmpty(content) ? content : "Cannot get any response from the http request.";
204-
return new RichContent<IRichMessage>
205-
{
206-
Recipient = new Recipient { Id = state.GetConversationId() },
207-
Editor = EditorTypeEnum.Text,
208-
Message = new TextMessage(text)
209-
};
210-
}
211198
}

0 commit comments

Comments
 (0)