54 lines
2.0 KiB
Rust
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)
|
|
}
|