regenmaschine/endpoints/restriction.py
"""Define an object to interact with restriction info."""
from __future__ import annotations
from typing import Any, cast
from regenmaschine.endpoints import EndpointManager
class Restriction(EndpointManager):
"""Define a restriction object."""
@EndpointManager.raise_on_gen1_controller
async def current(self) -> dict[str, Any]:
"""Get currently active restrictions.
Returns:
An API response payload.
"""
return await self.controller.request("get", "restrictions/currently")
@EndpointManager.raise_on_gen1_controller
async def hourly(self) -> list[dict[str, Any]]:
"""Get a list of restrictions that are active over the next hour.
Returns:
An API response payload.
"""
data = await self.controller.request("get", "restrictions/hourly")
return cast(list[dict[str, Any]], data["hourlyRestrictions"])
async def raindelay(self) -> dict[str, Any]:
"""Get restriction info related to rain delays.
Returns:
An API response payload.
"""
return await self.controller.request("get", "restrictions/raindelay")
@EndpointManager.raise_on_gen1_controller
async def set_universal(self, payload: dict[str, Any]) -> dict[str, Any]:
"""Set global (always active) restrictions based on a payload.
Args:
payload: An API request payload.
Returns:
An API response payload.
"""
return await self.controller.request(
"post", "restrictions/global", json=payload
)
@EndpointManager.raise_on_gen1_controller
async def universal(self) -> dict[str, Any]:
"""Get global (always active) restrictions.
Returns:
An API response payload.
"""
return await self.controller.request("get", "restrictions/global")