Source code for action0.open_meteo.elevation.operations
# generated by action0-client-openapi v0.1.2 from elevation.yml — do not edit
from __future__ import annotations
from typing import Any
from action0.client import JsonOperation
from action0.client import query
from action0.req import Method
from action0.req import Response
from .errors import BadRequestError
from .errors import decode_error
from .models import GetV1ElevationResponse
from .models import get_v1_elevation_error_from_json
from .models import get_v1_elevation_response_from_json
[docs]
class GetV1Elevation(JsonOperation[GetV1ElevationResponse]):
"""
``GET /v1/elevation`` — Get terrain elevation for coordinates
Returns terrain elevation using a 90-metre digital elevation model.
"""
method = Method.GET
path = "/v1/elevation"
#: Comma-separated list of latitude values in WGS84.
latitude: str = query()
#: Comma-separated list of longitude values in WGS84.
longitude: str = query()
apikey: str | None = query(default=None)
[docs]
def check(self, response: Response) -> None:
"""
:param response: the response the backend produced
:raises BadRequestError: for the documented ``400`` answer
:raises APIError: for any other non-2xx status
"""
if response.status == 400:
data = decode_error(response)
if isinstance(data, dict):
message = f"{type(self).__name__}: unexpected status {response.status}"
raise BadRequestError(
f"{message} {response.phrase}".rstrip(),
response=response,
error=get_v1_elevation_error_from_json(data),
)
super().check(response)
[docs]
def load_json(self, data: Any) -> GetV1ElevationResponse:
"""
:param data: the decoded JSON payload
:return: the parsed result
"""
return get_v1_elevation_response_from_json(data)