mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 10:05:28 +03:00
Update documentation and code snippets
This commit is contained in:
@@ -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("Вы и так не были аутентифицированы.")
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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}")
|
||||
|
||||
Reference in New Issue
Block a user