Skip to content

Commit a3339a7

Browse files
authored
Create Request class right away from payload (#653)
1 parent 085ff89 commit a3339a7

File tree

2 files changed

+25
-62
lines changed

2 files changed

+25
-62
lines changed

lib/PuppeteerSharp/NetworkManager.cs

Lines changed: 15 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -257,27 +257,32 @@ private async Task OnRequestInterceptedAsync(RequestInterceptedResponse e)
257257

258258
private void OnRequest(RequestWillBeSentPayload e, string interceptionId)
259259
{
260+
Request request;
260261
var redirectChain = new List<Request>();
261262
if (e.RedirectResponse != null)
262263
{
263-
_requestIdToRequest.TryGetValue(e.RequestId, out var request);
264+
_requestIdToRequest.TryGetValue(e.RequestId, out request);
264265
// If we connect late to the target, we could have missed the requestWillBeSent event.
265266
if (request != null)
266267
{
267268
HandleRequestRedirect(request, e.RedirectResponse);
268269
redirectChain = request.RedirectChainList;
269270
}
270271
}
271-
var isNavigationRequest = e.RequestId == e.LoaderId && e.Type == ResourceType.Document;
272-
HandleRequestStart(
273-
e.RequestId,
272+
var frame = !string.IsNullOrEmpty(e.FrameId) ? _frameManager.Frames[e.FrameId] : null;
273+
request = new Request(
274+
_client,
275+
frame,
274276
interceptionId,
275-
e.Request.Url,
276-
isNavigationRequest,
277-
e.Type,
278-
e.Request,
279-
e.FrameId,
277+
_userRequestInterceptionEnabled,
278+
e,
280279
redirectChain);
280+
281+
_requestIdToRequest.Add(e.RequestId, request);
282+
Request(this, new RequestEventArgs
283+
{
284+
Request = request
285+
});
281286
}
282287

283288
private void OnRequestServedFromCache(RequestServedFromCacheResponse response)
@@ -288,43 +293,7 @@ private void OnRequestServedFromCache(RequestServedFromCacheResponse response)
288293
}
289294
}
290295

291-
private void HandleRequestStart(
292-
string requestId,
293-
string interceptionId,
294-
string url,
295-
bool isNavigationRequest,
296-
ResourceType resourceType,
297-
Payload requestPayload,
298-
string frameId,
299-
List<Request> redirectChain)
300-
{
301-
Frame frame = null;
302-
303-
if (!string.IsNullOrEmpty(frameId))
304-
{
305-
_frameManager.Frames.TryGetValue(frameId, out frame);
306-
}
307-
308-
var request = new Request(
309-
_client,
310-
requestId,
311-
interceptionId,
312-
isNavigationRequest,
313-
_userRequestInterceptionEnabled,
314-
url,
315-
resourceType,
316-
requestPayload,
317-
frame,
318-
redirectChain);
319-
320-
_requestIdToRequest.Add(requestId, request);
321-
Request(this, new RequestEventArgs
322-
{
323-
Request = request
324-
});
325-
}
326-
327-
private void HandleRequestRedirect(Request request, Messaging.ResponsePayload responseMessage)
296+
private void HandleRequestRedirect(Request request, ResponsePayload responseMessage)
328297
{
329298
var response = new Response(
330299
_client,

lib/PuppeteerSharp/Request.cs

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Microsoft.Extensions.Logging;
2+
using PuppeteerSharp.Messaging;
23
using System;
34
using System.Collections.Generic;
45
using System.Net;
@@ -27,38 +28,31 @@ public class Request
2728
private bool _interceptionHandled;
2829
#endregion
2930

30-
internal Request()
31-
{
32-
}
3331
internal Request(
3432
CDPSession client,
35-
string requestId,
33+
Frame frame,
3634
string interceptionId,
37-
bool isNavigationRequest,
3835
bool allowInterception,
39-
string url,
40-
ResourceType resourceType,
41-
Payload payload,
42-
Frame frame,
36+
RequestWillBeSentPayload e,
4337
List<Request> redirectChain)
4438
{
4539
_client = client;
4640
_allowInterception = allowInterception;
4741
_interceptionHandled = false;
4842
_logger = _client.Connection.LoggerFactory.CreateLogger<Request>();
4943

50-
RequestId = requestId;
44+
RequestId = e.RequestId;
5145
InterceptionId = interceptionId;
52-
IsNavigationRequest = isNavigationRequest;
53-
Url = url;
54-
ResourceType = resourceType;
55-
Method = payload.Method;
56-
PostData = payload.PostData;
46+
IsNavigationRequest = e.RequestId == e.LoaderId && e.Type == ResourceType.Document;
47+
Url = e.Request.Url;
48+
ResourceType = e.Type;
49+
Method = e.Request.Method;
50+
PostData = e.Request.PostData;
5751
Frame = frame;
5852
RedirectChainList = redirectChain;
5953

6054
Headers = new Dictionary<string, string>();
61-
foreach (var keyValue in payload.Headers)
55+
foreach (var keyValue in e.Request.Headers)
6256
{
6357
Headers[keyValue.Key] = keyValue.Value;
6458
}

0 commit comments

Comments
 (0)