55 lines
1.2 KiB
Python
55 lines
1.2 KiB
Python
"""Constants for the Uptime Robot integration."""
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
from datetime import timedelta
|
|
from enum import Enum
|
|
from logging import Logger, getLogger
|
|
from typing import Final
|
|
|
|
LOGGER: Logger = getLogger(__package__)
|
|
|
|
COORDINATOR_UPDATE_INTERVAL: timedelta = timedelta(seconds=60)
|
|
|
|
DOMAIN: Final = "uptimerobot"
|
|
PLATFORMS: Final = ["binary_sensor"]
|
|
|
|
CONNECTION_ERROR: Final = "Error connecting to the Uptime Robot API"
|
|
|
|
ATTRIBUTION: Final = "Data provided by Uptime Robot"
|
|
|
|
ATTR_TARGET: Final = "target"
|
|
|
|
API_ATTR_STAT: Final = "stat"
|
|
API_ATTR_OK: Final = "ok"
|
|
API_ATTR_MONITORS: Final = "monitors"
|
|
|
|
|
|
class MonitorType(Enum):
|
|
"""Monitors type."""
|
|
|
|
HTTP = 1
|
|
keyword = 2
|
|
ping = 3
|
|
|
|
|
|
@dataclass
|
|
class MonitorData:
|
|
"""Dataclass for monitors."""
|
|
|
|
id: int
|
|
status: int
|
|
url: str
|
|
name: str
|
|
type: MonitorType
|
|
|
|
@staticmethod
|
|
def from_dict(monitor: dict) -> MonitorData:
|
|
"""Create a new monitor from a dict."""
|
|
return MonitorData(
|
|
id=monitor["id"],
|
|
status=monitor["status"],
|
|
url=monitor["url"],
|
|
name=monitor["friendly_name"],
|
|
type=MonitorType(monitor["type"]),
|
|
)
|