teremock 0.5.5

Fast integration testing library for teloxide Telegram bots
Documentation
use std::sync::Mutex;

use actix_web::web;
use serde::Deserialize;
use teloxide::types::FileId;

use super::common::{lock_state, RouteError, RouteResult};
use super::make_telegram_result;
use crate::state::State;

#[derive(Deserialize)]
pub struct GetFileQuery {
    file_id: FileId,
}

pub async fn get_file(
    query: web::Json<GetFileQuery>,
    state: web::Data<Mutex<State>>,
) -> RouteResult {
    let lock = lock_state(&state)?;
    let Some(file) = lock.files.iter().find(|f| f.id == query.file_id) else {
        return Err(RouteError::bad_request("File not found"));
    };
    Ok(make_telegram_result(file))
}