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);
        }
Пример #2
0
 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);
        }