private void OnRequestWillBeSent(NetworkRequestWillBeSentFirefoxEvent e) { _requests.TryGetValue(e.RedirectedFrom ?? string.Empty, out var redirectId); var frame = (redirectId != null ? redirectId.Request.Frame : (e.FrameId != null ? _page.FrameManager.Frames[e.FrameId] : null)) as Frame; if (frame == null) { return; } var redirectChain = new List <Request>(); if (redirectId != null) { redirectChain = new List <Request>(redirectId.Request.RedirectChain); redirectChain.Add(redirectId.Request); _requests.TryRemove(redirectId.Id, out var _); } var request = new FirefoxInterceptableRequest(_session, frame, redirectChain, e); _requests[request.Id] = request; _page.FrameManager.RequestStarted(request.Request); }
public static ResourceType GetResourceType(this NetworkRequestWillBeSentFirefoxEvent networkRequestWillBeSent) => networkRequestWillBeSent.Cause switch { "TYPE_INVALID" => ResourceType.Other,
public FirefoxInterceptableRequest(FirefoxSession session, Frame frame, List <Request> redirectChain, NetworkRequestWillBeSentFirefoxEvent payload) { Id = payload.RequestId; _session = session; var headers = payload.Headers.ToDictionary(header => header.Name.ToLower(), header => header.Value, StringComparer.InvariantCultureIgnoreCase); Request = new Request(payload.IsIntercepted == true ? this : null, frame, redirectChain, payload.NavigationId, payload.Url, payload.GetResourceType(), new HttpMethod(payload.Method), payload.PostData, headers); }