Code source de henrri_connect.units.synchro

"""
Sous-client pour les endpoints /v1/units.

Classes:
- ``henrri_connect.units.synchro.SyncUnitsClient`` : Accès synchrone aux endpoints unités.

Notes:
- Utiliser de préférence l'objet ``henrri_connect.SyncHenrriClient`` pour acceder aux endpoints.
"""

from __future__ import annotations

from typing import TYPE_CHECKING

from ..models import ListResponse, Unit

if TYPE_CHECKING:
    from ..connect import (
        SyncHenrriClient,
    )

UNITS_ENDPOINT = "/v1/units"

[docs] class SyncUnitsClient: """ Accès synchrone aux unités. Arguments - client (SyncHenrriClient) : Client synchrone pour acceder aux endpoints. Methods - list_units() : Liste toutes les unités disponibles. - add(unit: Unit) : Crée une nouvelle unité. - get(unit_id: int) : Récupère une unité par son identifiant. """ def __init__(self, client: SyncHenrriClient) -> None: self._c = client
[docs] def list_units(self) -> ListResponse[Unit]: """ Liste toutes les unités disponibles. Arguments - ``None`` Returns - ``ListResponse[Unit]`` : Liste de unités. """ resp = self._c.request("GET", UNITS_ENDPOINT) return ListResponse[Unit].model_validate(resp.json())
[docs] def add(self, unit: Unit) -> Unit: """ Crée une nouvelle unité. Arguments - ``unit: Unit`` : Unité à crée. Returns - ``Unit`` : Unité crée. """ resp = self._c.request( "POST", UNITS_ENDPOINT, json=unit.model_dump(by_alias=True, exclude_unset=True, exclude_none=True), ) return Unit.model_validate(resp.json())
[docs] def get(self, unit_id: int) -> Unit: """ Récupère une unité par son identifiant. Arguments - ``unit_id`` (int) : Identifiant de l'unité. Returns - ``Unit`` : Unité. """ resp = self._c.request("GET", f"{UNITS_ENDPOINT}/{unit_id}") return Unit.model_validate(resp.json())