botx_api/api/v3/files/upload_file/
models.rs

1use serde::{Serialize, Deserialize};
2use uuid::Uuid;
3
4use crate::api::models::AsyncFile;
5
6#[derive(Debug, Serialize, Deserialize, Default, Clone, Builder)]
7#[builder(setter(into, prefix = "with", strip_option))]
8pub struct UploadRequest {
9    /// Идентификатор чата
10    pub group_chat_id: Uuid,
11
12    /// Имя файла. Берется из content
13    pub file_name: String,
14
15    /// mime тип файла. Берется из content
16    pub mime_type: String,
17
18    /// Бинарное содержимое файла
19    pub content: Vec<u8>,
20
21    /// Метаданные файла 
22    pub meta: FileMeta,
23}
24
25#[derive(Debug, Serialize, Deserialize, Default, Clone, Builder)]
26#[builder(setter(into, prefix = "with", strip_option))]
27pub struct FileMeta {
28    /// (Default: null) - длительность видео/аудио в секундах
29    pub duration: Option<u128>,
30
31    /// (Default: null) - caption файла
32    pub captions: Option<String>,
33}
34
35/// Модель ответа сервера на запрос на загрузку файла
36#[derive(Debug, Serialize, Deserialize, Clone)]
37pub struct UploadResponse {
38    /// Результат запроса на загрузку файла
39    pub result: AsyncFile
40}