backup: 2026-04-09 17:52

This commit is contained in:
Dmitry
2026-04-09 17:52:17 +03:00
parent 6573b20105
commit 9677609ef3
39 changed files with 1324 additions and 1403 deletions
+11
View File
@@ -7,11 +7,13 @@ BASE_URL = "http://127.0.0.1:5000"
def ask_format() -> str:
"""Запрашивает желаемый формат ответа и возвращает json или wsdl."""
raw = input("Формат ответа (json/wsdl) [json]: ").strip().lower()
return raw if raw in {"json", "wsdl"} else "json"
def print_response(resp: requests.Response) -> None:
"""Печатает HTTP-статус и тело ответа в JSON или сыром виде."""
print(f"\nHTTP {resp.status_code}")
try:
print(json.dumps(resp.json(), ensure_ascii=False, indent=2))
@@ -20,6 +22,7 @@ def print_response(resp: requests.Response) -> None:
def input_payload() -> dict:
"""Собирает поля объекта из консоли и возвращает payload для POST/PUT."""
print("Оставьте поле пустым, если не хотите его передавать")
payload = {}
@@ -51,6 +54,7 @@ def input_payload() -> dict:
def list_calls() -> None:
"""Запрашивает и выводит пагинированный список объектов calls."""
page = input("page [1]: ").strip() or "1"
per_page = input("per_page [20]: ").strip() or "20"
fmt = ask_format()
@@ -64,6 +68,7 @@ def list_calls() -> None:
def get_call() -> None:
"""Запрашивает и выводит один объект calls по ID."""
call_id = input("ID объекта: ").strip()
fmt = ask_format()
resp = requests.get(
@@ -73,6 +78,7 @@ def get_call() -> None:
def create_call() -> None:
"""Создает новый объект calls из введенных пользователем данных."""
payload = input_payload()
fmt = ask_format()
resp = requests.post(
@@ -82,6 +88,7 @@ def create_call() -> None:
def update_call() -> None:
"""Обновляет существующий объект calls по ID введенными полями."""
call_id = input("ID объекта: ").strip()
payload = input_payload()
fmt = ask_format()
@@ -95,6 +102,7 @@ def update_call() -> None:
def delete_call() -> None:
"""Удаляет объект calls по ID и выводит результат операции."""
call_id = input("ID объекта: ").strip()
fmt = ask_format()
resp = requests.delete(
@@ -104,6 +112,7 @@ def delete_call() -> None:
def stats_by_hour() -> None:
"""Запрашивает статистику количества обращений по выбранному часу."""
hour = input("Час (0-23): ").strip()
fmt = ask_format()
resp = requests.get(
@@ -113,11 +122,13 @@ def stats_by_hour() -> None:
def show_wsdl() -> None:
"""Получает и выводит WSDL-описание API."""
resp = requests.get(f"{BASE_URL}/api/wsdl", timeout=30)
print_response(resp)
def menu() -> None:
"""Запускает интерактивное меню CLI и обрабатывает выбор пользователя."""
actions = {
"1": ("Список объектов", list_calls),
"2": ("Один объект по ID", get_call),