public async Task Invoke(HttpContext context, IEnumerable <IHttpServerEventCallback> callbacks) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (callbacks == null) { throw new ArgumentNullException(nameof(callbacks)); } var stopwatch = Stopwatch.StartNew(); callbacks.Invoke(() => HttpServerRequest.Create(context)); try { await _next(context); } catch (HttpException e) { await WriteResponse(context, e.StatusCode, e.Message); } catch (Exception e) { await WriteResponse(context, HttpStatusCode.InternalServerError, "FAIL!"); callbacks.Invoke(() => HttpServerException.Create(context, stopwatch.ElapsedMilliseconds, e)); } callbacks.Invoke(() => HttpServerResponse.Create(context, stopwatch.ElapsedMilliseconds)); }
public void logs_one_item() { var httpServerRequest = HttpServerRequest.Create(_httpContext); _testSubject.Invoke(httpServerRequest); _logger.Logs.Count.ShouldBe(1); }
public void serialise_server_request() { var httpServerRequest = HttpServerRequest.Create(_httpContext); httpServerRequest.Timestamp = new DateTimeOffset(2016, 11, 18, 19, 52, 6, TimeSpan.Zero).AddTicks(4425454); _testSubject.Invoke(httpServerRequest); _logger.Logs[0].ShouldBe("{\"eventType\":\"HttpServerRequest\",\"timestamp\":\"2016-11-18T19:52:06.4425454+00:00\",\"uri\":\"/ping?v=1\",\"method\":\"GET\",\"userAgent\":\"my-user-agent\"}"); }