diff --git a/pyproject.toml b/pyproject.toml index d71730c..3862cf0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "vl-apify-shared" -version = "0.1.2" +version = "0.1.3" description = "Shared utility package for use with Apify actors" authors = [{ name = "Ryan Byrne", email = "ryanjbyrne30@gmail.com" }] requires-python = ">=3.12" diff --git a/src/vl_apify_shared/zenrows.py b/src/vl_apify_shared/zenrows.py index c9af841..a64e095 100644 --- a/src/vl_apify_shared/zenrows.py +++ b/src/vl_apify_shared/zenrows.py @@ -109,3 +109,59 @@ class ZenRowsScraper: f"ZenRows fetched url: {url}. Returned status: {response.status_code} in {elapsed_time}ms" ) return response + + def post( + self, + url: str, + data: str, + js_render: bool = False, + wait: Optional[int] = None, + wait_for: Optional[str] = None, + premium_proxy: bool = False, + js_instructions: Optional[list] = None, + headers: Optional[dict] = None, + ): + """POST to a URL through ZenRows.""" + self.logger.debug(f"ZenRows posting to url: {url}...") + params = _build_params( + js_render=js_render, + wait=wait, + wait_for=wait_for, + premium_proxy=premium_proxy, + js_instructions=js_instructions, + ) + start = time.monotonic() + response = self.client.post(url, params=params, data=data, headers=headers) + elapsed_time = round((time.monotonic() - start) * 1000) + self.logger.debug( + f"ZenRows posted to url: {url}. Returned status: {response.status_code} in {elapsed_time}ms" + ) + return response + + async def post_async( + self, + url: str, + data: str, + js_render: bool = False, + wait: Optional[int] = None, + wait_for: Optional[str] = None, + premium_proxy: bool = False, + js_instructions: Optional[list] = None, + headers: Optional[dict] = None, + ): + """POST to a URL asynchronously through ZenRows.""" + self.logger.debug(f"ZenRows posting to url: {url}...") + params = _build_params( + js_render=js_render, + wait=wait, + wait_for=wait_for, + premium_proxy=premium_proxy, + js_instructions=js_instructions, + ) + start = time.monotonic() + response = await self.client.post_async(url, params=params, data=data, headers=headers) + elapsed_time = round((time.monotonic() - start) * 1000) + self.logger.debug( + f"ZenRows posted to url: {url}. Returned status: {response.status_code} in {elapsed_time}ms" + ) + return response