33It allows making HTTP requests using the browser's fetch API.
44"""
55
6+ from __future__ import annotations
7+
68import json as jsonlib
79import logging
810from typing import TYPE_CHECKING , Any , Callable , Optional , Union , cast
911from urllib .parse import parse_qs , urlencode , urlparse , urlunparse
1012
11- from pydoll .browser .requests .response import HTTPError , Response
13+ from pydoll .browser .requests .response import Response
1214from pydoll .commands .runtime_commands import RuntimeCommands
1315from pydoll .constants import Scripts
16+ from pydoll .exceptions import HTTPError
1417from pydoll .protocol .fetch .types import HeaderEntry
15- from pydoll .protocol .network .events import NetworkEvent
18+ from pydoll .protocol .network .events import NetworkEvent , ResponseReceivedExtraInfoEventParams
1619from pydoll .protocol .network .types import CookieParam
1720
1821logger = logging .getLogger (__name__ )
2730 ResponseReceivedEvent ,
2831 ResponseReceivedEventParams ,
2932 ResponseReceivedExtraInfoEvent ,
30- ResponseReceivedExtraInfoEventParams ,
3133 )
3234 from pydoll .protocol .runtime .methods import EvaluateResponse
3335
@@ -71,7 +73,7 @@ class Request:
7173 - Cookies are managed automatically by the browser
7274 """
7375
74- def __init__ (self , tab : ' Tab' ):
76+ def __init__ (self , tab : Tab ):
7577 """Initialize a new Request instance bound to a browser tab.
7678
7779 Args:
@@ -81,8 +83,8 @@ def __init__(self, tab: 'Tab'):
8183 """
8284 self .tab = tab
8385 self ._network_events_enabled = False
84- self ._requests_sent : list [' RequestSentEvent' ] = []
85- self ._requests_received : list [' RequestReceivedEvent' ] = []
86+ self ._requests_sent : list [RequestSentEvent ] = []
87+ self ._requests_received : list [RequestReceivedEvent ] = []
8688 logger .debug ('Request helper initialized for tab' )
8789
8890 async def request (
@@ -334,7 +336,7 @@ def _handle_data_options(
334336 options ['body' ] = data
335337 logger .debug ('Request data set as raw payload' )
336338
337- async def _execute_fetch_request (self , url : str , options : dict [str , Any ]) -> ' EvaluateResponse' :
339+ async def _execute_fetch_request (self , url : str , options : dict [str , Any ]) -> EvaluateResponse :
338340 """Execute the fetch request using browser's runtime."""
339341 script = Scripts .MAKE_REQUEST .format (url = jsonlib .dumps (url ), options = jsonlib .dumps (options ))
340342 await self ._register_callbacks ()
@@ -350,7 +352,7 @@ async def _execute_fetch_request(self, url: str, options: dict[str, Any]) -> 'Ev
350352
351353 @staticmethod
352354 def _build_response (
353- result : ' EvaluateResponse' ,
355+ result : EvaluateResponse ,
354356 response_headers : list [HeaderEntry ],
355357 request_headers : list [HeaderEntry ],
356358 cookies : list [CookieParam ],
@@ -385,11 +387,11 @@ async def _register_callbacks(self) -> None:
385387 logger .debug ('Network events enabled on tab for request capture' )
386388
387389 def append_received_request (event : dict ) -> None :
388- self ._requests_received .append (cast (' RequestReceivedEvent' , event ))
390+ self ._requests_received .append (cast (RequestReceivedEvent , event ))
389391 logger .debug (f'Appended received request: event={ event } ' )
390392
391393 def append_sent_request (event : dict ) -> None :
392- self ._requests_sent .append (cast (' RequestSentEvent' , event ))
394+ self ._requests_sent .append (cast (RequestSentEvent , event ))
393395 logger .debug (f'Appended sent request: event={ event } ' )
394396
395397 await self .tab .on (
@@ -450,7 +452,7 @@ def _extract_sent_headers(self) -> list[HeaderEntry]:
450452
451453 @staticmethod
452454 def _extract_headers_from_events (
453- events : Union [list [' RequestSentEvent' ], list [' RequestReceivedEvent' ]],
455+ events : Union [list [RequestSentEvent ], list [RequestReceivedEvent ]],
454456 event_extractors : dict [str , Callable [[Any ], list [HeaderEntry ]]],
455457 ) -> list [HeaderEntry ]:
456458 """Extract headers from network events using appropriate extractors.
@@ -488,7 +490,7 @@ def _extract_headers_from_events(
488490 return headers
489491
490492 def _extract_request_sent_headers (
491- self , params : ' RequestWillBeSentEventParams'
493+ self , params : RequestWillBeSentEventParams
492494 ) -> list [HeaderEntry ]:
493495 """Extract headers from main request event.
494496
@@ -503,7 +505,7 @@ def _extract_request_sent_headers(
503505 return self ._convert_dict_to_header_entries (request .get ('headers' , {}))
504506
505507 def _extract_request_sent_extra_info_headers (
506- self , params : ' RequestWillBeSentExtraInfoEventParams'
508+ self , params : RequestWillBeSentExtraInfoEventParams
507509 ) -> list [HeaderEntry ]:
508510 """Extract headers from extra request info event.
509511
@@ -520,7 +522,7 @@ def _extract_request_sent_extra_info_headers(
520522 return self ._convert_dict_to_header_entries (params .get ('headers' , {}))
521523
522524 def _extract_response_received_headers (
523- self , params : ' ResponseReceivedEventParams'
525+ self , params : ResponseReceivedEventParams
524526 ) -> list [HeaderEntry ]:
525527 """Extract headers from main response event.
526528
@@ -535,7 +537,7 @@ def _extract_response_received_headers(
535537 return self ._convert_dict_to_header_entries (response .get ('headers' , {}))
536538
537539 def _extract_response_received_extra_info_headers (
538- self , params : ' ResponseReceivedExtraInfoEventParams'
540+ self , params : ResponseReceivedExtraInfoEventParams
539541 ) -> list [HeaderEntry ]:
540542 """Extract headers from extra response info event.
541543
@@ -583,7 +585,7 @@ def _extract_set_cookies(self) -> list[CookieParam]:
583585 f'response_extra_info_events={ response_extra_info_events } '
584586 )
585587 for event in response_extra_info_events :
586- params = cast (' ResponseReceivedExtraInfoEventParams' , event ['params' ])
588+ params = cast (ResponseReceivedExtraInfoEventParams , event ['params' ])
587589 headers = self ._convert_dict_to_header_entries (params ['headers' ])
588590 logger .debug (f'Converting dictionary to header entries: headers={ headers } ' )
589591 set_cookie_headers = [
@@ -598,7 +600,7 @@ def _extract_set_cookies(self) -> list[CookieParam]:
598600 logger .debug (f'Set cookies extracted: cookies={ cookies } ' )
599601 return cookies
600602
601- def _filter_response_extra_info_events (self ) -> list [' RequestReceivedEvent' ]:
603+ def _filter_response_extra_info_events (self ) -> list [RequestReceivedEvent ]:
602604 """Filter network events to find those containing Set-Cookie information.
603605
604606 Returns:
0 commit comments