use crate::{ admin::{AllowedDomains, BlockedDomains, ConnectedActors, Domains}, collector::{MemoryCollector, Snapshot}, error::Error, extractors::Admin, }; use actix_web::{ web::{Data, Json}, HttpResponse, }; pub(crate) async fn allow( admin: Admin, Json(Domains { domains }): Json, ) -> Result { admin.db_ref().add_allows(domains).await?; Ok(HttpResponse::NoContent().finish()) } pub(crate) async fn disallow( admin: Admin, Json(Domains { domains }): Json, ) -> Result { admin.db_ref().remove_allows(domains).await?; Ok(HttpResponse::NoContent().finish()) } pub(crate) async fn block( admin: Admin, Json(Domains { domains }): Json, ) -> Result { admin.db_ref().add_blocks(domains).await?; Ok(HttpResponse::NoContent().finish()) } pub(crate) async fn unblock( admin: Admin, Json(Domains { domains }): Json, ) -> Result { admin.db_ref().remove_blocks(domains).await?; Ok(HttpResponse::NoContent().finish()) } pub(crate) async fn allowed(admin: Admin) -> Result, Error> { let allowed_domains = admin.db_ref().allows().await?; Ok(Json(AllowedDomains { allowed_domains })) } pub(crate) async fn blocked(admin: Admin) -> Result, Error> { let blocked_domains = admin.db_ref().blocks().await?; Ok(Json(BlockedDomains { blocked_domains })) } pub(crate) async fn connected(admin: Admin) -> Result, Error> { let connected_actors = admin.db_ref().connected_ids().await?; Ok(Json(ConnectedActors { connected_actors })) } pub(crate) async fn stats( _admin: Admin, collector: Data, ) -> Result, Error> { Ok(Json(collector.snapshot())) }