///|
/// 管理端的驱动、设置与索引接口。
///|
/// 测 `/api/admin/driver/*`、`/api/admin/setting/*`、`/api/admin/index/progress`。
pub async fn check_admin_more(client : @lib.OpenListClient) -> Unit {
check_admin_driver(client)
check_admin_setting(client)
check_admin_index(client)
}
///|
/// 驱动接口。
async fn check_admin_driver(client : @lib.OpenListClient) -> Unit {
step("驱动 /api/admin/driver/*")
let names_result = check(
"GET /api/admin/driver/names",
"admin().driver_names()",
Ok(client.admin().driver_names()) catch {
error => Err(error)
},
fn(list) { "共 \{list.length()} 个:\{joined(take(list, 10))}" },
)
dump_raw(client, @lib.Method::Get, "/api/admin/driver/names")
let _ = check(
"GET /api/admin/driver/list",
"admin().list_drivers()",
Ok(client.admin().list_drivers()) catch {
error => Err(error)
},
fn(map) { "共 \{map.length()} 个驱动的配置项" },
)
dump_raw(client, @lib.Method::Get, "/api/admin/driver/list")
let names = match names_result {
Some(list) => list
None => []
}
match names {
[first, ..] => {
let _ = check(
"GET /api/admin/driver/info",
"admin().driver_info(driver)",
Ok(client.admin().driver_info(first)) catch {
error => Err(error)
},
fn(info) {
"\{driver_summary(first, info)};公共项前 5 个:\{joined(take(info.common, 5).map(driver_item_summary))}"
},
)
dump_raw(
client,
@lib.Method::Get,
"/api/admin/driver/info",
query=Json::object({ "driver": Json::string(first) }),
)
}
[] => ()
}
}
///|
/// 设置接口。
async fn check_admin_setting(client : @lib.OpenListClient) -> Unit {
step("设置 /api/admin/setting/*")
let listing = check(
"GET /api/admin/setting/list",
"admin().list_settings(group=0)",
Ok(client.admin().list_settings(group=0)) catch {
error => Err(error)
},
fn(list) {
"共 \{list.length()} 项,前 10 个 key:\{joined(take(list, 10).map(fn(item) { item.key }))}"
},
)
dump_raw(
client,
@lib.Method::Get,
"/api/admin/setting/list",
query=Json::object({ "group": Json::number(0) }),
)
let settings = match listing {
Some(list) => list
None => []
}
match settings {
[first, ..] => {
let _ = check(
"GET /api/admin/setting/get",
"admin().get_setting(key)",
Ok(client.admin().get_setting(first.key)) catch {
error => Err(error)
},
setting_summary,
)
dump_raw(
client,
@lib.Method::Get,
"/api/admin/setting/get",
query=Json::object({ "key": Json::string(first.key) }),
)
}
[] => ()
}
}
///|
/// 索引状态。
async fn check_admin_index(client : @lib.OpenListClient) -> Unit {
step("索引 /api/admin/index/*")
let _ = check(
"GET /api/admin/index/progress",
"admin().index_progress()",
Ok(client.admin().index_progress()) catch {
error => Err(error)
},
index_summary,
)
dump_raw(client, @lib.Method::Get, "/api/admin/index/progress")
}