diff --git a/src/services/telegram_files/mod.rs b/src/services/telegram_files/mod.rs index f801e7a..11f5962 100644 --- a/src/services/telegram_files/mod.rs +++ b/src/services/telegram_files/mod.rs @@ -1,4 +1,6 @@ -use reqwest::{Response, multipart::{Form, Part}, header}; +use std::fmt; + +use reqwest::{Response, multipart::{Form, Part}, header, StatusCode}; use serde::Deserialize; use tracing::log; @@ -19,6 +21,19 @@ pub struct UploadResult { } +#[derive(Debug, Clone)] +struct DownloadError { + status_code: StatusCode, +} + +impl fmt::Display for DownloadError { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "Status code is {0}", self.status_code) + } +} + +impl std::error::Error for DownloadError {} + pub async fn download_from_telegram_files( message_id: i64, chat_id: i64 @@ -35,6 +50,10 @@ pub async fn download_from_telegram_files( .await? .error_for_status()?; + if response.status() == StatusCode::NO_CONTENT { + return Err(Box::new(DownloadError { status_code: StatusCode::NO_CONTENT })) + }; + Ok(response) }