hsapi-client/hsapi_client/routes.py

42 lines
1.1 KiB
Python

from typing import Optional, List
from pydantic import BaseModel, Field
from .model import HSAPICall
from .schemas import v1Route
class v1ListRoutesResponse(BaseModel):
routes: Optional[List[Optional[v1Route]]] = Field(
alias="routes", default=None)
class Route(HSAPICall):
objectPath = "routes"
def list(self) -> v1ListRoutesResponse:
response = self.call('get')
return v1ListRoutesResponse(**response.json())
def get(self, routeId: int) -> Optional[v1Route | None]:
routes = self.list()
route = [r for r in routes.routes if r.id == routeId]
if route:
return route[0]
return None
def delete(self, routeId: str) -> None:
self.call('delete', call_path=routeId)
def enable(self, routeId: int) -> None:
self.call('post', f'{routeId}/enable')
def disable(self, routeId: int) -> None:
self.call('post', f'{routeId}/disable')
def toggle(self, routeId: int) -> None:
route = self.get(routeId)
if route and route.enabled:
self.disable(routeId)
else:
self.enable(routeId)