use serde::{Serialize, Deserialize};
use uuid::Uuid;
use crate::api::models::*;
#[derive(Debug, Serialize, Deserialize, Default, Clone, Builder)]
#[builder(setter(into, prefix = "with", strip_option))]
pub struct DownloadFileRequest {
pub group_chat_id: Uuid,
pub file_id: Uuid,
pub is_preview: bool,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct DownloadFileError {
pub status: String,
#[serde(flatten)]
pub reason: DownloadFileExpressError,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(tag = "reason")]
pub enum DownloadFileExpressError {
#[serde(rename(serialize = "chat_not_found", deserialize = "chat_not_found"))]
ChatNotFound(ChatNotFound),
#[serde(rename(serialize = "error_from_messaging_service", deserialize = "error_from_messaging_service"))]
ErrorFromMessagingService(ErrorFromMessagingService),
#[serde(rename(serialize = "file_metadata_not_found", deserialize = "file_metadata_not_found"))]
FileMetadataNotFound(FileMetadataNotFound),
#[serde(rename(serialize = "error_from_file_service", deserialize = "error_from_file_service"))]
ErrorFromFileService(ErrorFromFileService),
#[serde(rename(serialize = "file_deleted", deserialize = "file_deleted"))]
FileDeleted(FileDeleted),
#[serde(rename(serialize = "file_download_failed", deserialize = "file_download_failed"))]
FileDownloadFailed(FileDownloadFailed),
#[serde(rename(serialize = "error_from_s3_file_service", deserialize = "error_from_s3_file_service"))]
ErrorFromS3FileService(ErrorFromS3FileService),
#[serde(rename(serialize = "file_without_preview", deserialize = "file_without_preview"))]
FileWithoutPreview(FileWithoutPreview),
#[serde(other)]
Other,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct FileMetadataNotFound {
pub errors: Vec<String>,
pub error_data: FileMetadataNotFoundData,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct FileMetadataNotFoundData {
pub file_id: Uuid,
pub group_chat_id: Uuid,
pub error_description: String,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct ErrorFromFileService {
pub errors: Vec<String>,
pub error_data: ErrorFromFileServiceData,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct ErrorFromFileServiceData {
pub file_id: Uuid,
pub group_chat_id: Uuid,
pub reason: String,
pub error_description: String,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct FileDeleted {
pub errors: Vec<String>,
pub error_data: FileDeletedData,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct FileDeletedData {
pub link: String,
pub error_description: String,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct FileDownloadFailed {
pub errors: Vec<String>,
pub error_data: FileDownloadFailedData,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct FileDownloadFailedData {
pub link: String,
pub error_description: String,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct ErrorFromS3FileService {
pub errors: Vec<String>,
pub error_data: ErrorFromS3FileServiceData,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct ErrorFromS3FileServiceData {
pub source_link: String,
pub location: String,
pub error_description: String,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct FileWithoutPreview {
pub errors: Vec<String>,
pub error_data: FileWithoutPreviewData,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct FileWithoutPreviewData {
pub file_id: Uuid,
pub group_chat_id: Uuid,
pub error_description: String,
}