Files
schedule-parser-rusted/src/xls_downloader/interface.rs
N08I40K 680419ea78 0.8.0
Реализованы все требуемые эндпоинты schedule.

Улучшена документация.
2025-03-28 23:24:37 +04:00

68 lines
1.8 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
use chrono::{DateTime, Utc};
/// Ошибки получения данных XLS
#[derive(PartialEq, Debug)]
pub enum FetchError {
/// Не установлена ссылка на файл
NoUrlProvided,
/// Неизвестная ошибка
Unknown,
/// Сервер вернул статус код отличающийся от 200
BadStatusCode,
/// Ссылка ведёт на файл другого типа
BadContentType,
/// Сервер не вернул ожидаемые заголовки
BadHeaders,
}
/// Результат получения данных XLS
pub struct FetchOk {
/// ETag объекта
pub etag: String,
/// Дата загрузки файла
pub uploaded_at: DateTime<Utc>,
/// Дата получения данных
pub requested_at: DateTime<Utc>,
/// Данные файла
pub data: Option<Vec<u8>>,
}
impl FetchOk {
/// Результат без контента файла
pub fn head(etag: String, uploaded_at: DateTime<Utc>) -> Self {
FetchOk {
etag,
uploaded_at,
requested_at: Utc::now(),
data: None,
}
}
/// Полный результат
pub fn get(etag: String, uploaded_at: DateTime<Utc>, data: Vec<u8>) -> Self {
FetchOk {
etag,
uploaded_at,
requested_at: Utc::now(),
data: Some(data),
}
}
}
pub type FetchResult = Result<FetchOk, FetchError>;
pub trait XLSDownloader {
/// Получение данных о файле, и, опционально, его контент
async fn fetch(&self, head: bool) -> FetchResult;
/// Установка ссылки на файл
async fn set_url(&mut self, url: String) -> FetchResult;
}