implement (rules) list api

This commit is contained in:
postscriptum 2026-03-23 09:00:19 +02:00
parent 461f838cc0
commit eeafed077a
4 changed files with 34 additions and 1 deletions

View file

@ -95,4 +95,13 @@ impl List {
pub async fn cache_clean(&self) -> Result<Option<Vec<String>>> {
self.cache.clean().await
}
/// Return active rules (from server memory)
pub async fn list(&self) -> Vec<String> {
self.index
.read()
.await
.iter()
.map(|item| item.to_string())
.collect()
}
}

View file

@ -17,3 +17,12 @@ impl Item {
}
}
}
impl std::fmt::Display for Item {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Ending(s) => write!(f, ".{}", s),
Self::Exact(s) => write!(f, "{}", s),
}
}
}

View file

@ -56,6 +56,13 @@ async fn api_block(
})?))
}
#[rocket::get("/api/list")]
async fn api_list(list: &State<Arc<List>>) -> Result<Json<Vec<String>>, Status> {
let result = list.list().await;
info!("Get list rules (total: {})", result.len());
Ok(Json(result))
}
#[rocket::get("/api/cache/clean")]
async fn api_cache_clean(list: &State<Arc<List>>) -> Result<Json<Option<Vec<String>>>, Status> {
let result = list.cache_clean().await;
@ -101,7 +108,14 @@ async fn rocket() -> _ {
.manage(Instant::now())
.mount(
"/",
rocket::routes![index, api_totals, api_allow, api_block, api_cache_clean],
rocket::routes![
index,
api_totals,
api_allow,
api_block,
api_list,
api_cache_clean
],
)
}