Browse Source

Handle request sender exceptions.

pull/98/head
Sebastian Stehle 9 years ago
parent
commit
221dfc3ec2
  1. 10
      src/Squidex.Domain.Apps.Read/Webhooks/WebhookSender.cs
  2. 22
      src/Squidex.Infrastructure/Http/DumpFormatter.cs

10
src/Squidex.Domain.Apps.Read/Webhooks/WebhookSender.cs

@ -26,6 +26,8 @@ namespace Squidex.Domain.Apps.Read.Webhooks
HttpRequestMessage request = BuildRequest(job); HttpRequestMessage request = BuildRequest(job);
HttpResponseMessage response = null; HttpResponseMessage response = null;
var responseString = string.Empty;
var isTimeout = false; var isTimeout = false;
var watch = Stopwatch.StartNew(); var watch = Stopwatch.StartNew();
@ -45,19 +47,21 @@ namespace Squidex.Domain.Apps.Read.Webhooks
{ {
isTimeout = true; isTimeout = true;
} }
catch (Exception ex)
{
responseString = ex.Message;
}
finally finally
{ {
watch.Stop(); watch.Stop();
} }
var responseString = string.Empty;
if (response != null) if (response != null)
{ {
responseString = await response.Content.ReadAsStringAsync(); responseString = await response.Content.ReadAsStringAsync();
} }
var dump = DumpFormatter.BuildDump(request, response, job.RequestBody, responseString, watch.Elapsed); var dump = DumpFormatter.BuildDump(request, response, job.RequestBody, responseString, watch.Elapsed, isTimeout);
var result = WebhookResult.Failed; var result = WebhookResult.Failed;

22
src/Squidex.Infrastructure/Http/DumpFormatter.cs

@ -18,7 +18,7 @@ namespace Squidex.Infrastructure.Http
{ {
public static class DumpFormatter public static class DumpFormatter
{ {
public static string BuildDump(HttpRequestMessage request, HttpResponseMessage response, string requestBody, string responseBody, TimeSpan elapsed) public static string BuildDump(HttpRequestMessage request, HttpResponseMessage response, string requestBody, string responseBody, TimeSpan elapsed, bool isTimeout)
{ {
var writer = new StringBuilder(); var writer = new StringBuilder();
@ -29,7 +29,7 @@ namespace Squidex.Infrastructure.Http
writer.AppendLine(); writer.AppendLine();
writer.AppendLine("Response:"); writer.AppendLine("Response:");
writer.AppendResponse(response, responseBody, elapsed); writer.AppendResponse(response, responseBody, elapsed, isTimeout);
return writer.ToString(); return writer.ToString();
} }
@ -50,7 +50,7 @@ namespace Squidex.Infrastructure.Http
} }
} }
private static void AppendResponse(this StringBuilder writer, HttpResponseMessage response, string responseBody, TimeSpan elapsed) private static void AppendResponse(this StringBuilder writer, HttpResponseMessage response, string responseBody, TimeSpan elapsed, bool isTimeout)
{ {
if (response != null) if (response != null)
{ {
@ -61,17 +61,21 @@ namespace Squidex.Infrastructure.Http
writer.AppendHeaders(response.Headers); writer.AppendHeaders(response.Headers);
writer.AppendHeaders(response.Content?.Headers); writer.AppendHeaders(response.Content?.Headers);
}
if (!string.IsNullOrWhiteSpace(responseBody)) if (!string.IsNullOrWhiteSpace(responseBody))
{ {
writer.AppendLine(); writer.AppendLine();
writer.AppendLine(responseBody); writer.AppendLine(responseBody);
} }
if (response != null)
{
writer.AppendLine(); writer.AppendLine();
writer.AppendLine($"Elapsed: {elapsed}"); writer.AppendLine($"Elapsed: {elapsed}");
} }
else
if (isTimeout)
{ {
writer.AppendLine($"Timeout after {elapsed}"); writer.AppendLine($"Timeout after {elapsed}");
} }

Loading…
Cancel
Save