54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
import typer
|
|
|
|
from .core import DEFAULT_TIMEOUT, build_runtime_context, emit_success, request_json
|
|
|
|
|
|
def runtime_context(ctx: typer.Context):
|
|
obj = ctx.obj or {}
|
|
return build_runtime_context(
|
|
server=obj.get("server"),
|
|
auth_stdin=obj.get("auth_stdin", False),
|
|
scheme=obj.get("scheme"),
|
|
timeout=obj.get("timeout", DEFAULT_TIMEOUT),
|
|
request_id=obj.get("request_id"),
|
|
)
|
|
|
|
|
|
def emit_api(
|
|
ctx: typer.Context,
|
|
*,
|
|
summary: str,
|
|
method: str,
|
|
path: str,
|
|
params: dict[str, Any] | None = None,
|
|
json_body: Any = None,
|
|
require_auth: bool = True,
|
|
require_project: bool = False,
|
|
require_network_ctx: bool = False,
|
|
require_username_ctx: bool = False,
|
|
next_commands: list[str] | None = None,
|
|
) -> None:
|
|
runtime = runtime_context(ctx)
|
|
data, duration_ms = request_json(
|
|
runtime,
|
|
method=method,
|
|
path=path,
|
|
params=params,
|
|
json_body=json_body,
|
|
require_auth=require_auth,
|
|
require_project=require_project,
|
|
require_network_ctx=require_network_ctx,
|
|
require_username_ctx=require_username_ctx,
|
|
)
|
|
emit_success(
|
|
summary=summary,
|
|
data=data,
|
|
ctx=runtime,
|
|
duration_ms=duration_ms,
|
|
next_commands=next_commands,
|
|
)
|