32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
from __future__ import annotations
|
|
|
|
from . import response_helper
|
|
import json
|
|
|
|
def handle_response(api_result, schema=None, loaded_client=None, response_url=None):
|
|
request_id = api_result.request_id
|
|
loaded_client.status(response_url, request_id, with_logs=False)
|
|
result = loaded_client.result(response_url, request_id)
|
|
|
|
try:
|
|
json_object = json.loads(json.dumps(result))
|
|
except ValueError as exc:
|
|
raise RuntimeError(f"Invalid JSON response received: {api_result}") from exc
|
|
|
|
remote_images = json_object.get("images", [])
|
|
image_tensors = []
|
|
first_bytes = None
|
|
for remote_image in remote_images:
|
|
image_url = remote_image.get("url") if isinstance(remote_image, dict) else None
|
|
if not image_url:
|
|
continue
|
|
|
|
image_bytes = response_helper.fetch_url_bytes(image_url)
|
|
tensor = response_helper.bytes_to_tensor(image_bytes)
|
|
if tensor is not None:
|
|
image_tensors.append(tensor)
|
|
if first_bytes is None:
|
|
first_bytes = image_bytes
|
|
|
|
return [response_helper.stack_image_tensors(image_tensors), first_bytes]
|