use clap::Args;
use crate::{DEFAULT_HOST, DEFAULT_PORT};
#[derive(Debug, Args, Clone)]
pub struct ServeArgs {
#[arg(long, env = "AMAGI_HOST", default_value = DEFAULT_HOST)]
pub host: String,
#[arg(long, env = "AMAGI_PORT", default_value_t = DEFAULT_PORT)]
pub port: u16,
#[command(flatten)]
pub runtime: ServeRuntimeArgs,
}
#[derive(Debug, Args, Clone, Default)]
pub struct ServeRuntimeArgs {
#[arg(long = "proxy-timeout-ms", env = "AMAGI_PROXY_TIMEOUT_MS")]
pub proxy_timeout_ms: Option<u64>,
#[arg(long = "proxy-max-hops", env = "AMAGI_PROXY_MAX_HOPS")]
pub proxy_max_hops: Option<u32>,
#[arg(long = "node-id", env = "AMAGI_NODE_ID")]
pub node_id: Option<String>,
#[arg(
long = "node-role",
env = "AMAGI_NODE_ROLE",
value_parser = ["root", "worker", "relay", "hybrid"]
)]
pub node_role: Option<String>,
#[arg(long = "node-accept-downstream", env = "AMAGI_NODE_ACCEPT_DOWNSTREAM")]
pub node_accept_downstream: Option<bool>,
#[arg(long = "node-connect-upstream", env = "AMAGI_NODE_CONNECT_UPSTREAM")]
pub node_connect_upstream: Option<String>,
#[arg(long = "node-auth-token", env = "AMAGI_NODE_AUTH_TOKEN")]
pub node_auth_token: Option<String>,
#[arg(long = "node-auth-credentials", env = "AMAGI_NODE_AUTH_CREDENTIALS")]
pub node_auth_credentials: Option<String>,
#[arg(long = "node-control-token", env = "AMAGI_NODE_CONTROL_TOKEN")]
pub node_control_token: Option<String>,
#[arg(long = "node-allow-insecure-ws", env = "AMAGI_NODE_ALLOW_INSECURE_WS")]
pub node_allow_insecure_ws: Option<bool>,
#[arg(long = "node-heartbeat-ms", env = "AMAGI_NODE_HEARTBEAT_MS")]
pub node_heartbeat_ms: Option<u64>,
#[arg(
long = "node-request-timeout-ms",
env = "AMAGI_NODE_REQUEST_TIMEOUT_MS"
)]
pub node_request_timeout_ms: Option<u64>,
#[arg(long = "node-max-hops", env = "AMAGI_NODE_MAX_HOPS")]
pub node_max_hops: Option<u32>,
#[arg(
long = "node-max-concurrent-tasks",
env = "AMAGI_NODE_MAX_CONCURRENT_TASKS"
)]
pub node_max_concurrent_tasks: Option<u32>,
#[arg(
long = "node-auto-claim-published-routes",
env = "AMAGI_NODE_AUTO_CLAIM_PUBLISHED_ROUTES"
)]
pub node_auto_claim_published_routes: Option<bool>,
#[arg(
long = "douyin-mode",
env = "AMAGI_PLATFORM_DOUYIN_MODE",
value_parser = ["enabled", "local", "upstream", "disabled"]
)]
pub douyin_mode: Option<String>,
#[arg(long = "douyin-route", env = "AMAGI_PLATFORM_DOUYIN_ROUTE")]
pub douyin_route: Option<String>,
#[arg(long = "douyin-upstream", env = "AMAGI_PLATFORM_DOUYIN_UPSTREAM")]
pub douyin_upstream: Option<String>,
#[arg(
long = "bilibili-mode",
env = "AMAGI_PLATFORM_BILIBILI_MODE",
value_parser = ["enabled", "local", "upstream", "disabled"]
)]
pub bilibili_mode: Option<String>,
#[arg(long = "bilibili-route", env = "AMAGI_PLATFORM_BILIBILI_ROUTE")]
pub bilibili_route: Option<String>,
#[arg(long = "bilibili-upstream", env = "AMAGI_PLATFORM_BILIBILI_UPSTREAM")]
pub bilibili_upstream: Option<String>,
#[arg(
long = "kuaishou-mode",
env = "AMAGI_PLATFORM_KUAISHOU_MODE",
value_parser = ["enabled", "local", "upstream", "disabled"]
)]
pub kuaishou_mode: Option<String>,
#[arg(long = "kuaishou-route", env = "AMAGI_PLATFORM_KUAISHOU_ROUTE")]
pub kuaishou_route: Option<String>,
#[arg(long = "kuaishou-upstream", env = "AMAGI_PLATFORM_KUAISHOU_UPSTREAM")]
pub kuaishou_upstream: Option<String>,
#[arg(
long = "xiaohongshu-mode",
env = "AMAGI_PLATFORM_XIAOHONGSHU_MODE",
value_parser = ["enabled", "local", "upstream", "disabled"]
)]
pub xiaohongshu_mode: Option<String>,
#[arg(long = "xiaohongshu-route", env = "AMAGI_PLATFORM_XIAOHONGSHU_ROUTE")]
pub xiaohongshu_route: Option<String>,
#[arg(
long = "xiaohongshu-upstream",
env = "AMAGI_PLATFORM_XIAOHONGSHU_UPSTREAM"
)]
pub xiaohongshu_upstream: Option<String>,
#[arg(
long = "twitter-mode",
env = "AMAGI_PLATFORM_TWITTER_MODE",
value_parser = ["enabled", "local", "upstream", "disabled"]
)]
pub twitter_mode: Option<String>,
#[arg(long = "twitter-route", env = "AMAGI_PLATFORM_TWITTER_ROUTE")]
pub twitter_route: Option<String>,
#[arg(long = "twitter-upstream", env = "AMAGI_PLATFORM_TWITTER_UPSTREAM")]
pub twitter_upstream: Option<String>,
}