bachya/regenmaschine

View on GitHub
regenmaschine/endpoints/parser.py

Summary

Maintainability
A
0 mins
Test Coverage
"""Define an object to interact with RainMachine weather parsers."""

from __future__ import annotations

from typing import Any, cast

from regenmaschine.endpoints import EndpointManager


class Parser(EndpointManager):
    """Define a parser object."""

    async def current(self) -> list[dict[str, Any]]:
        """Get current diagnostics.

        Returns:
            An API response payload.
        """
        data = await self.controller.request("get", "parser")
        return cast(list[dict[str, Any]], data["parsers"])

    async def post_data(
        self, payload: dict[str, list[dict[str, Any]]]
    ) -> dict[str, Any]:
        """Post weather data from an external source.

        Reference API Documentation for details:
        https://rainmachine.docs.apiary.io/#reference/weather-services/parserdata/post

        Args:
            payload: A dictionary of parser data.

        Returns:
            An API response payload.
        """
        return await self.controller.request("post", "parser/data", json=payload)