66from base64 import b64encode
77from urllib .parse import unquote
88
9- from scrapy .utils .python import to_bytes
10-
119try :
1210 from scrapy import Request , Spider
11+ from scrapy .utils .python import to_bytes
1312 from scrapy .utils .request import request_from_dict
1413except ImportError as exc :
1514 raise ImportError (
@@ -51,7 +50,8 @@ def to_apify_request(scrapy_request: Request, spider: Spider) -> dict:
5150 Returns:
5251 The converted Apify request.
5352 """
54- assert isinstance (scrapy_request , Request ) # noqa: S101
53+ if not isinstance (scrapy_request , Request ):
54+ raise TypeError ('scrapy_request must be an instance of the scrapy.Request class' )
5555
5656 call_id = crypto_random_object_id (8 )
5757 Actor .log .debug (f'[{ call_id } ]: to_apify_request was called (scrapy_request={ scrapy_request } )...' )
@@ -91,11 +91,14 @@ def to_scrapy_request(apify_request: dict, spider: Spider) -> Request:
9191 Returns:
9292 The converted Scrapy request.
9393 """
94- assert isinstance (apify_request , dict ) # noqa: S101
95- assert 'url' in apify_request # noqa: S101
96- assert 'method' in apify_request # noqa: S101
97- assert 'id' in apify_request # noqa: S101
98- assert 'uniqueKey' in apify_request # noqa: S101
94+ if not isinstance (apify_request , dict ):
95+ raise TypeError ('apify_request must be a dictionary' )
96+
97+ required_keys = ['url' , 'method' , 'id' , 'uniqueKey' ]
98+ missing_keys = [key for key in required_keys if key not in apify_request ]
99+
100+ if missing_keys :
101+ raise ValueError (f"apify_request must contain { ', ' .join (map (repr , missing_keys ))} key(s)" )
99102
100103 call_id = crypto_random_object_id (8 )
101104 Actor .log .debug (f'[{ call_id } ]: to_scrapy_request was called (apify_request={ apify_request } )...' )
@@ -106,14 +109,19 @@ def to_scrapy_request(apify_request: dict, spider: Spider) -> Request:
106109 # - This process involves decoding the base64-encoded request data and reconstructing
107110 # the Scrapy Request object from its dictionary representation.
108111 Actor .log .debug (f'[{ call_id } ]: Restoring the Scrapy Request from the apify_request...' )
112+
109113 scrapy_request_dict_encoded = apify_request ['userData' ]['scrapy_request' ]
110- assert isinstance (scrapy_request_dict_encoded , str ) # noqa: S101
114+ if not isinstance (scrapy_request_dict_encoded , str ):
115+ raise TypeError ('scrapy_request_dict_encoded must be a string' )
111116
112117 scrapy_request_dict = pickle .loads (codecs .decode (scrapy_request_dict_encoded .encode (), 'base64' ))
113- assert isinstance (scrapy_request_dict , dict ) # noqa: S101
118+ if not isinstance (scrapy_request_dict , dict ):
119+ raise TypeError ('scrapy_request_dict must be a dictionary' )
114120
115121 scrapy_request = request_from_dict (scrapy_request_dict , spider = spider )
116- assert isinstance (scrapy_request , Request ) # noqa: S101
122+ if not isinstance (scrapy_request , Request ):
123+ raise TypeError ('scrapy_request must be an instance of the Request class' )
124+
117125 Actor .log .debug (f'[{ call_id } ]: Scrapy Request successfully reconstructed (scrapy_request={ scrapy_request } )...' )
118126
119127 # Update the meta field with the meta field from the apify_request
0 commit comments