| 314 | self._log.close() |
| 315 | |
| 316 | def make_request( |
| 317 | self, |
| 318 | method: str, |
| 319 | path: str, |
| 320 | data: dict | Any | None = None, |
| 321 | headers: dict | None = None, |
| 322 | timeout: float | None = None, |
| 323 | ) -> ServerResponse: |
| 324 | url = f"http://{self.server_host}:{self.server_port}{path}" |
| 325 | parse_body = False |
| 326 | if method == "GET": |
| 327 | response = requests.get(url, headers=headers, timeout=timeout) |
| 328 | parse_body = True |
| 329 | elif method == "POST": |
| 330 | response = requests.post(url, headers=headers, json=data, timeout=timeout) |
| 331 | parse_body = True |
| 332 | elif method == "OPTIONS": |
| 333 | response = requests.options(url, headers=headers, timeout=timeout) |
| 334 | else: |
| 335 | raise ValueError(f"Unimplemented method: {method}") |
| 336 | result = ServerResponse() |
| 337 | result.headers = dict(response.headers) |
| 338 | result.status_code = response.status_code |
| 339 | if parse_body: |
| 340 | try: |
| 341 | result.body = response.json() |
| 342 | except JSONDecodeError: |
| 343 | result.body = response.text |
| 344 | else: |
| 345 | result.body = None |
| 346 | print("Response from server", json.dumps(result.body, indent=2)) |
| 347 | return result |
| 348 | |
| 349 | def make_stream_request( |
| 350 | self, |