Source code for hvpy.core
from typing import Any, Dict, Union
import requests
from hvpy.io import HvpyParameters, OutputType
__all__ = ["execute_api_call", "parse_response"]
[docs]def parse_response(response: requests.Response, output_type: OutputType) -> Union[bytes, str, Dict[str, Any]]:
"""
Parses the response from the API call based on the output type.
Parameters
----------
response
The response from the API call.
output_type
The output type.
Returns
-------
Union[bytes, str, Dict[str, Any]]
The parsed response.
"""
if output_type == OutputType.RAW:
return response.content
elif output_type == OutputType.STRING:
return response.content.decode("utf-8")
elif output_type == OutputType.JSON:
return response.json()
else:
raise ValueError(f"Unknown output type: {output_type}")
[docs]def execute_api_call(input_parameters: HvpyParameters) -> Union[bytes, str, Dict[str, Any]]:
"""
Executes the API call and returns a parsed response.
Parameters
----------
input_parameters
The input parameters.
Returns
-------
Union[bytes, str, Dict[str, Any]]
Parsed response from the API.
"""
response = requests.get(input_parameters.url, params=input_parameters.model_dump())
response.raise_for_status()
return parse_response(response, input_parameters.get_output_type())