private void OnFetchRequestPaused(object sender, Fetch.RequestPausedEventArgs e) { if (e.ResponseErrorReason == null && e.ResponseStatusCode == null) { RequestPausedEventArgs wrapped = new RequestPausedEventArgs(); wrapped.RequestData = new HttpRequestData() { RequestId = e.RequestId, Method = e.Request.Method, Url = e.Request.Url, PostData = e.Request.PostData, Headers = new Dictionary <string, string>(e.Request.Headers) }; this.OnRequestPaused(wrapped); } else { ResponsePausedEventArgs wrapped = new ResponsePausedEventArgs(); wrapped.ResponseData = new HttpResponseData() { RequestId = e.RequestId, StatusCode = e.ResponseStatusCode.Value, Url = e.Request.Url, ResourceType = e.ResourceType.ToString(), ErrorReason = e.ResponseErrorReason.HasValue ? e.ResponseErrorReason.Value.ToString() : "" }; foreach (var header in e.ResponseHeaders) { wrapped.ResponseData.Headers.Add(header.Name, header.Value); } this.OnResponsePaused(wrapped); } }
private async void OnResponsePaused(object sender, ResponsePausedEventArgs e) { if (e.ResponseData.Headers.Count > 0) { // If no headers are present, the body cannot be retrieved. await this.session.Value.Domains.Network.AddResponseBody(e.ResponseData); } if (this.NetworkResponseReceived != null) { this.NetworkResponseReceived(this, new NetworkResponseReceivedEventArgs(e.ResponseData)); } foreach (var handler in this.responseHandlers) { if (handler.ResponseMatcher.Invoke(e.ResponseData)) { // NOTE: We create a dummy HttpRequestData object here, because the ContinueRequestWithResponse // method demands one; however, the only property used by that method is the RequestId property. // It might be better to refactor that method signature to simply pass the request ID, or // alternatively, just pass the response data, which should also contain the request ID anyway. HttpRequestData requestData = new HttpRequestData() { RequestId = e.ResponseData.RequestId }; await this.session.Value.Domains.Network.ContinueRequestWithResponse(requestData, handler.ResponseTransformer(e.ResponseData)); return; } } await this.session.Value.Domains.Network.ContinueResponseWithoutModification(e.ResponseData); }
private void OnFetchRequestPaused(object sender, Fetch.RequestPausedEventArgs e) { if (e.ResponseErrorReason == null && e.ResponseStatusCode == null) { RequestPausedEventArgs wrapped = new RequestPausedEventArgs(); wrapped.RequestData = new HttpRequestData() { RequestId = e.RequestId, Method = e.Request.Method, Url = e.Request.Url, PostData = e.Request.PostData, Headers = new Dictionary <string, string>(e.Request.Headers) }; this.OnRequestPaused(wrapped); } else { ResponsePausedEventArgs wrappedResponse = new ResponsePausedEventArgs(); wrappedResponse.ResponseData = new HttpResponseData() { RequestId = e.RequestId, Url = e.Request.Url, ResourceType = e.ResourceType.ToString() }; if (e.ResponseStatusCode.HasValue) { wrappedResponse.ResponseData.StatusCode = e.ResponseStatusCode.Value; } if (e.ResponseHeaders != null) { foreach (var header in e.ResponseHeaders) { if (header.Name.ToLowerInvariant() == "set-cookie") { wrappedResponse.ResponseData.CookieHeaders.Add(header.Value); } else { if (wrappedResponse.ResponseData.Headers.ContainsKey(header.Name)) { string currentHeaderValue = wrappedResponse.ResponseData.Headers[header.Name]; wrappedResponse.ResponseData.Headers[header.Name] = currentHeaderValue + ", " + header.Value; } else { wrappedResponse.ResponseData.Headers.Add(header.Name, header.Value); } } } } this.OnResponsePaused(wrappedResponse); } }
private async void OnResponsePaused(object sender, ResponsePausedEventArgs e) { await this.session.Value.Domains.Network.AddResponseBody(e.ResponseData); await this.session.Value.Domains.Network.ContinueResponseWithoutModification(e.ResponseData); if (this.NetworkResponseReceived != null) { this.NetworkResponseReceived(this, new NetworkResponseRecievedEventArgs(e.ResponseData)); } }
private void OnNetworkResponseReceived(object sender, Network.ResponseReceivedEventArgs e) { HttpResponseData responseData = new HttpResponseData() { RequestId = e.RequestId, StatusCode = e.Response.Status, Url = e.Response.Url, ResourceType = e.Type.ToString() }; foreach (var header in e.Response.Headers) { responseData.Headers.Add(header.Key, header.Value); } ResponsePausedEventArgs wrapped = new ResponsePausedEventArgs() { ResponseData = responseData }; this.OnResponsePaused(wrapped); }