backup: 2026-04-09 17:52
This commit is contained in:
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user