Update documentation and code snippets

This commit is contained in:
2025-12-02 10:51:44 +03:00
parent 2a96dfcabe
commit 19906c1b1b
28 changed files with 85 additions and 531 deletions
+6 -19
View File
@@ -2,44 +2,32 @@ from argenta import Router, Response, Command, DataBridge
from argenta.command import Flag
from argenta.di import FromDishka
# 1. Создаём роутер
router = Router(title="Authentication")
# 2. Определяем сервис и обработчики
def authenticate_user(username: str) -> str:
"""Возвращает фиктивный токен для пользователя."""
return f"token_for_{username}"
@router.command(Command("login", flags=Flag("username")))
def login_handler(response: Response, data_bridge: FromDishka[DataBridge]):
"""Обработчик для команды 'login'. Сохраняет токен в хранилище."""
username_flag = response.input_flags.get_flag_by_name("username")
if not username_flag or not username_flag.input_value:
print(
"[red]Ошибка:[/red] необходимо указать имя пользователя с помощью флага --username."
)
print("Ошибка необходимо указать имя пользователя с помощью флага --username.")
return
username = username_flag.input_value
token = authenticate_user(username)
# Сохраняем токен в общем хранилище сессии
data_bridge.update({"auth_token": token})
print(f"[green]Успешный вход![/green] Пользователь '{username}' аутентифицирован.")
print(f"Успешный вход! Пользователь '{username}' аутентифицирован.")
@router.command("get-profile")
def get_profile_handler(response: Response, data_bridge: FromDishka[DataBridge]):
"""Обработчик для команды 'get-profile'. Использует токен из хранилища."""
session_data = data_bridge.get_all()
token = session_data.get("auth_token")
def get_profile_handler(response: Response, data_bridge: FromDishka[DataBridge])
token = data_bridge.get_by_key("auth_token")
if not token:
print(
"[red]Ошибка:[/red] вы не аутентифицированы. Сначала выполните команду 'login'."
)
print("Ошибка: вы не аутентифицированы. Сначала выполните команду 'login'.")
return
print(f"Загрузка профиля с использованием токена: [yellow]{token}[/yellow]")
@@ -47,9 +35,8 @@ def get_profile_handler(response: Response, data_bridge: FromDishka[DataBridge])
@router.command("logout")
def logout_handler(response: Response, data_bridge: FromDishka[DataBridge]):
"""Обработчик для команды 'logout'. Очищает токен."""
try:
data_bridge.delete_by_key("auth_token")
print("[green]Выход выполнен.[/green] Данные сессии очищены.")
print("Выход выполнен. Данные сессии очищены.")
except KeyError:
print("Вы и так не были аутентифицированы.")
-4
View File
@@ -6,10 +6,6 @@ router = Router(title="Example")
@router.command(Command("greet", description="Greet the user"))
def greet_handler(response: Response):
# response автоматически передаётся в обработчик
# response.status содержит статус валидации флагов
# response.input_flags содержит все введённые флаги
if response.status == ResponseStatus.ALL_FLAGS_VALID:
print("Hello! All flags are valid.")
else:
+7 -6
View File
@@ -1,5 +1,6 @@
from argenta import Command, Response, Router
from argenta.command import Flag, Flags
from argenta.command.flag import ValidationStatus
from argenta.response import ResponseStatus
router = Router(title="Flags Example")
@@ -9,14 +10,15 @@ router = Router(title="Flags Example")
Command(
"process",
description="Process with flags",
flags=Flags([Flag("format", possible_values=["json", "xml"]), Flag("verbose")]),
flags=Flags([
Flag("format", possible_values=["json", "xml"]),
Flag("verbose")
]),
)
)
def process_handler(response: Response):
# Проверяем статус валидации флагов
print(f"Status: {response.status.value}")
print(f"Status: {response.status}")
# Работаем с флагами
format_flag = response.input_flags.get_flag_by_name("format")
verbose_flag = response.input_flags.get_flag_by_name("verbose")
@@ -27,11 +29,10 @@ def process_handler(response: Response):
if verbose_flag:
print("Verbose mode enabled")
# Проверяем валидность флагов
if response.status == ResponseStatus.ALL_FLAGS_VALID:
print("All flags are valid, proceeding...")
elif response.status == ResponseStatus.INVALID_VALUE_FLAGS:
print("Warning: Some flags have invalid values")
for flag in response.input_flags:
if flag.status and flag.status.name == "INVALID":
if flag.status == ValidationStatus.INVALID:
print(f" Invalid flag: {flag.string_entity} = {flag.input_value}")