summaryrefslogtreecommitdiff
path: root/windy/point_forecast.py
diff options
context:
space:
mode:
Diffstat (limited to 'windy/point_forecast.py')
-rw-r--r--windy/point_forecast.py24
1 files changed, 19 insertions, 5 deletions
diff --git a/windy/point_forecast.py b/windy/point_forecast.py
index 976f785..7f1930a 100644
--- a/windy/point_forecast.py
+++ b/windy/point_forecast.py
@@ -2,10 +2,20 @@ from dataclasses import dataclass
from enum import Enum
+def _json(value):
+ try:
+ return value.json()
+ except AttributeError:
+ return value
+
+
class _StrEnum(Enum):
def __str__(self):
return self.value
+ def json(self):
+ return self.value
+
class Model(_StrEnum):
AROME = "arome"
@@ -44,16 +54,16 @@ class Request:
parameters: list = None
levels: list = None
- def body(self):
+ def json(self):
body = {
'key': self.key,
'lat': self.lat,
'lon': self.lon,
- 'model': str(self.model),
+ 'model': _json(self.model),
'parameters': self.parameters or [],
}
if self.levels:
- body['levels'] = [str(x) for x in self.levels]
+ body['levels'] = [_json(x) for x in self.levels]
return body
@@ -61,5 +71,9 @@ class Request:
class Endpoint:
path: str
- def __call__(self, windy, request: Request):
- return windy.session.post(windy.api + self.path, json=request.body())
+ def __call__(self, ctx, *args, **kwargs):
+ try:
+ body = args[0].json()
+ except (IndexError, AttributeError):
+ body = Request(*args, **kwargs).json()
+ return ctx.session.post(ctx.api + self.path, json=body)