botx_api_framework/integration/actix/
status_handler.rs

1use actix_web::{web::{Data, self, Json}, get, Responder, HttpResponse, http::{header::ContentType, self}, error};
2use anthill_di::DependencyContext;
3use botx_api::{api::{result::ExpressResult, models::Status}, bot::models::*};
4
5use crate::contexts::BotXApiFrameworkContext;
6
7#[get("/status")]
8pub async fn status(request: web::Query<StatusRequest>, ioc_ctx: Data<DependencyContext>) -> impl Responder {
9    log::debug!("{:#?}", request);
10
11    let context = ioc_ctx.resolve::<BotXApiFrameworkContext>().await.expect("Контекст фреймворка не может быть получен из ioc");
12
13    Json(match context.process_status_result(request.0).await {
14        Some(response) => response,
15        None => StatusResponseBuilder::default().with_status(Status::Ok)
16            .with_result(StatusResponseResultBuilder::default()
17                .with_status_message("Бот активен")
18                .with_enabled(true)
19                .build()
20                .unwrap())
21            .build()
22            .unwrap()
23    })
24}