Files
kiro.rs/src/admin/router.rs
2026-03-05 21:28:41 +08:00

54 lines
2.0 KiB
Rust

//! Admin API 路由配置
use axum::{
Router, middleware,
routing::{delete, get, post},
};
use super::{
handlers::{
add_credential, delete_credential, get_all_credentials, get_cached_balances,
get_credential_balance, import_token_json, reset_failure_count, set_credential_disabled,
set_credential_priority, set_credential_region,
},
middleware::{AdminState, admin_auth_middleware},
};
/// 创建 Admin API 路由
///
/// # 端点
/// - `GET /credentials` - 获取所有凭据状态
/// - `POST /credentials` - 添加新凭据
/// - `POST /credentials/import-token-json` - 批量导入 token.json
/// - `DELETE /credentials/:id` - 删除凭据
/// - `POST /credentials/:id/disabled` - 设置凭据禁用状态
/// - `POST /credentials/:id/priority` - 设置凭据优先级
/// - `POST /credentials/:id/reset` - 重置失败计数
/// - `GET /credentials/:id/balance` - 获取凭据余额
/// - `GET /credentials/balances/cached` - 获取所有凭据的缓存余额
///
/// # 认证
/// 需要 Admin API Key 认证,支持:
/// - `x-api-key` header
/// - `Authorization: Bearer <token>` header
pub fn create_admin_router(state: AdminState) -> Router {
Router::new()
.route(
"/credentials",
get(get_all_credentials).post(add_credential),
)
.route("/credentials/balances/cached", get(get_cached_balances))
.route("/credentials/import-token-json", post(import_token_json))
.route("/credentials/{id}", delete(delete_credential))
.route("/credentials/{id}/disabled", post(set_credential_disabled))
.route("/credentials/{id}/priority", post(set_credential_priority))
.route("/credentials/{id}/region", post(set_credential_region))
.route("/credentials/{id}/reset", post(reset_failure_count))
.route("/credentials/{id}/balance", get(get_credential_balance))
.layer(middleware::from_fn_with_state(
state.clone(),
admin_auth_middleware,
))
.with_state(state)
}