Source code for httk.optimade.endpoints.error
from ..model.config import OptimadeConfig
from ..model.errors import OptimadeError
from ..model.request import EndpointResponse, RawRequest
from ..model.versions import optimade_default_version
from .meta import generate_meta
[docs]
def format_optimade_error(
ex: Exception,
request: RawRequest,
config: OptimadeConfig,
version: str = optimade_default_version,
) -> EndpointResponse:
if isinstance(ex, OptimadeError):
response_code = ex.response_code
title = ex.response_msg
detail = ex.content
else:
response_code = 500
title = "Internal Server Error"
detail = str(ex)
response = {
"errors": [
{
"status": response_code,
"title": title,
"detail": detail,
}
],
"meta": generate_meta(
representation=request.representation,
api_version=version,
config=config,
data_count=1,
more_data_available=False,
),
}
return EndpointResponse(
json_response=response,
content_type='application/vnd.api+json',
response_code=response_code,
response_msg=title,
encoding='utf-8',
)