25 lines
1.1 KiB
Python
25 lines
1.1 KiB
Python
# __ _____ _ __ ____________________ __ _____________________ _____ _______________
|
|
# / ___/ / /_ ____ ____ / /_ ___ ____ / __ \ ___ _ __/
|
|
# \__ \ / __ \ / __ \ / __ \ / __/ / _ \ / __/ ____ / / / / / _ \ | | / /
|
|
# ___/ / / / / / / /_/ / / /_/ / / /_ / __/ / / /___/ / /_/ / / __/ | |/ /
|
|
# /____/ /_/ /_/ \____/ \____/ \__/ \___/ /_/ _______ /______/ \___/ |___/
|
|
"""Ports HTTP des endpoints de mutation, substituables par des doubles de test."""
|
|
|
|
from typing import Protocol
|
|
|
|
|
|
class IPostClient(Protocol):
|
|
"""Transport requis par un endpoint de création."""
|
|
|
|
async def post(self, url: str, data: dict[str, object] | list[dict[str, str]]) -> dict[str, object]:
|
|
"""Envoyer le corps JSON et retourner la réponse décodée."""
|
|
...
|
|
|
|
|
|
class IDeleteClient(Protocol):
|
|
"""Transport requis par un endpoint de suppression."""
|
|
|
|
async def delete(self, url: str, data: dict[str, object] | list[dict[str, str]] | None = None) -> dict[str, object]:
|
|
"""Supprimer la ressource ; une réponse sans contenu devient un objet vide."""
|
|
...
|