public CrowbarHttpWorker(ICrowbarHttpRequest request, CrowbarHttpResponse response, IRequestWaitHandle handle) : base(request.Path, request.QueryString, response.Output) { this.request = request; this.response = response; this.handle = handle; }
/// <summary> /// Creates an instance of <see cref="CrowbarHttpRequestCapture"/>. /// </summary> /// <param name="request">The request.</param> public CrowbarHttpRequestCapture(ICrowbarHttpRequest request) { this.request = request; }
/// <summary> /// Throws an exception due to an error during the request. /// </summary> /// <param name="request">The HTTP request.</param> protected virtual void Throw(ICrowbarHttpRequest request) { using (var writer = new StringWriter()) { writer.WriteLine("The MVC application threw an exception during the following HTTP request:"); writer.WriteLine(); writer.WriteLine(request); var exception = CrowbarContext.ExceptionContext.Exception; if (exception.IsSerializable()) { throw new CrowbarException(writer.ToString(), exception); } writer.WriteLine(exception.Message); throw new Exception(writer.ToString()); } }
/// <summary> /// Creates the client response. /// </summary> /// <param name="request">The HTTP request.</param> /// <param name="response">The HTTP response.</param> /// <returns>The client response.</returns> protected virtual ClientResponse CreateResponse(ICrowbarHttpRequest request, CrowbarHttpResponse response) { if (CrowbarContext.ExceptionContext != null) { Throw(request); } return new ClientResponse { Advanced = new AdvancedClientResponse { ActionExecutedContext = CrowbarContext.ActionExecutedContext, ActionExecutingContext = CrowbarContext.ActionExecutingContext, ResultExecutedContext = CrowbarContext.ResultExecutedContext, ResultExecutingContext = CrowbarContext.ResultExecutingContext, HttpResponse = CrowbarContext.HttpResponse, HttpSessionState = CrowbarContext.HttpSessionState }, Headers = response.GetHeaders(), ResponseBody = response.GetResponseBody(), RawHttpRequest = request.ToString(), RawHttpResponse = response.ToString(), StatusCode = response.StatusCode, StatusDescription = response.StatusDescription }; }