1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use actix_web::{web::{Data, self, Json}, get, Responder, HttpResponse, http::{header::ContentType, self}, error};
use anthill_di::DependencyContext;
use botx_api::{api::{result::ExpressResult, models::Status}, bot::models::*};

use crate::contexts::BotXApiFrameworkContext;

#[get("/status")]
pub async fn status(request: web::Query<StatusRequest>, ioc_ctx: Data<DependencyContext>) -> impl Responder {
    log::debug!("{:#?}", request);

    let context = ioc_ctx.resolve::<BotXApiFrameworkContext>().await.expect("Контекст фреймворка не может быть получен из ioc");

    Json(match context.process_status_result(request.0).await {
        Some(response) => response,
        None => StatusResponseBuilder::default().with_status(Status::Ok)
            .with_result(StatusResponseResultBuilder::default()
                .with_status_message("Бот активен")
                .with_enabled(true)
                .build()
                .unwrap())
            .build()
            .unwrap()
    })
}