|
1 | 1 | from typing import Optional |
2 | 2 |
|
| 3 | +from hyperbrowser.exceptions import HyperbrowserError |
3 | 4 | from hyperbrowser.models.consts import POLLING_ATTEMPTS |
4 | 5 | from ...polling import ( |
5 | 6 | build_fetch_operation_name, |
@@ -31,9 +32,20 @@ def __init__(self, client): |
31 | 32 | async def start( |
32 | 33 | self, params: StartBatchScrapeJobParams |
33 | 34 | ) -> StartBatchScrapeJobResponse: |
| 35 | + try: |
| 36 | + payload = params.model_dump(exclude_none=True, by_alias=True) |
| 37 | + except HyperbrowserError: |
| 38 | + raise |
| 39 | + except Exception as exc: |
| 40 | + raise HyperbrowserError( |
| 41 | + "Failed to serialize batch scrape start params", |
| 42 | + original_error=exc, |
| 43 | + ) from exc |
| 44 | + if type(payload) is not dict: |
| 45 | + raise HyperbrowserError("Failed to serialize batch scrape start params") |
34 | 46 | response = await self._client.transport.post( |
35 | 47 | self._client._build_url("/scrape/batch"), |
36 | | - data=params.model_dump(exclude_none=True, by_alias=True), |
| 48 | + data=payload, |
37 | 49 | ) |
38 | 50 | return parse_response_model( |
39 | 51 | response.data, |
@@ -143,9 +155,20 @@ def __init__(self, client): |
143 | 155 | self.batch = BatchScrapeManager(client) |
144 | 156 |
|
145 | 157 | async def start(self, params: StartScrapeJobParams) -> StartScrapeJobResponse: |
| 158 | + try: |
| 159 | + payload = params.model_dump(exclude_none=True, by_alias=True) |
| 160 | + except HyperbrowserError: |
| 161 | + raise |
| 162 | + except Exception as exc: |
| 163 | + raise HyperbrowserError( |
| 164 | + "Failed to serialize scrape start params", |
| 165 | + original_error=exc, |
| 166 | + ) from exc |
| 167 | + if type(payload) is not dict: |
| 168 | + raise HyperbrowserError("Failed to serialize scrape start params") |
146 | 169 | response = await self._client.transport.post( |
147 | 170 | self._client._build_url("/scrape"), |
148 | | - data=params.model_dump(exclude_none=True, by_alias=True), |
| 171 | + data=payload, |
149 | 172 | ) |
150 | 173 | return parse_response_model( |
151 | 174 | response.data, |
|
0 commit comments