Remove get link handler

This commit is contained in:
2024-05-07 19:15:17 +02:00
parent 4cf15542f3
commit e1982ba173
3 changed files with 1 additions and 158 deletions

View File

@@ -9,12 +9,6 @@ pub struct Config {
pub postgres_port: u32,
pub postgres_db: String,
pub minio_host: String,
pub internal_minio_host: String,
pub minio_bucket: String,
pub minio_access_key: String,
pub minio_secret_key: String,
pub downloader_api_key: String,
pub downloader_url: String,
@@ -45,12 +39,6 @@ impl Config {
postgres_port: get_env("POSTGRES_PORT").parse().unwrap(),
postgres_db: get_env("POSTGRES_DB"),
minio_host: get_env("MINIO_HOST"),
internal_minio_host: get_env("INTERNAL_MINIO_HOST"),
minio_bucket: get_env("MINIO_BUCKET"),
minio_access_key: get_env("MINIO_ACCESS_KEY"),
minio_secret_key: get_env("MINIO_SECRET_KEY"),
downloader_api_key: get_env("DOWNLOADER_API_KEY"),
downloader_url: get_env("DOWNLOADER_URL"),

View File

@@ -1,103 +0,0 @@
use std::io::Read;
use async_stream::stream;
use bytes::Bytes;
use minio_rsc::{client::PresignedArgs, error::Error, provider::StaticProvider, Minio};
use tempfile::SpooledTempFile;
use crate::config;
pub fn get_minio() -> Minio {
let provider = StaticProvider::new(
&config::CONFIG.minio_access_key,
&config::CONFIG.minio_secret_key,
None,
);
Minio::builder()
.endpoint(&config::CONFIG.minio_host)
.provider(provider)
.secure(true)
.build()
.unwrap()
}
pub fn get_internal_minio() -> Minio {
let provider = StaticProvider::new(
&config::CONFIG.minio_access_key,
&config::CONFIG.minio_secret_key,
None,
);
Minio::builder()
.endpoint(&config::CONFIG.internal_minio_host)
.provider(provider)
.secure(false)
.build()
.unwrap()
}
pub fn get_stream(
mut temp_file: Box<dyn Read + Send + Sync>,
) -> impl futures_core::Stream<Item = Result<Bytes, Error>> {
stream! {
let mut buf = [0; 2048];
while let Ok(count) = temp_file.read(&mut buf) {
if count == 0 {
break;
}
yield Ok(Bytes::copy_from_slice(&buf[0..count]))
}
}
}
pub async fn upload_to_minio(
archive: SpooledTempFile,
filename: String,
) -> Result<String, Box<dyn std::error::Error + Send + Sync>> {
let internal_minio = get_internal_minio();
let is_bucket_exist = match internal_minio
.bucket_exists(&config::CONFIG.minio_bucket)
.await
{
Ok(v) => v,
Err(err) => return Err(Box::new(err)),
};
if !is_bucket_exist {
let _ = internal_minio
.make_bucket(&config::CONFIG.minio_bucket, false)
.await;
}
let data_stream = get_stream(Box::new(archive));
if let Err(err) = internal_minio
.put_object_stream(
&config::CONFIG.minio_bucket,
filename.clone(),
Box::pin(data_stream),
None,
)
.await
{
return Err(Box::new(err));
}
let minio = get_minio();
let link = match minio
.presigned_get_object(PresignedArgs::new(&config::CONFIG.minio_bucket, filename))
.await
{
Ok(v) => v,
Err(err) => {
return Err(Box::new(err));
}
};
Ok(link)
}

View File

@@ -2,7 +2,6 @@ pub mod book_library;
pub mod bots;
pub mod download_utils;
pub mod downloader;
pub mod minio;
pub mod telegram_files;
use chrono::Duration;
@@ -24,9 +23,8 @@ use crate::{
use self::{
book_library::{get_book, get_books, types::BaseBook},
bots::ROUND_ROBIN_BOT,
download_utils::{response_to_tempfile, DownloadResult},
download_utils::DownloadResult,
downloader::{download_from_downloader, get_filename, FilenameData},
minio::upload_to_minio,
telegram_files::{download_from_telegram_files, upload_to_telegram_files, UploadData},
};
@@ -237,46 +235,6 @@ pub struct FileLinkResult {
pub caption: String,
}
pub async fn get_download_link(
object_id: i32,
object_type: String,
db: Database,
) -> Result<Option<FileLinkResult>, Box<dyn std::error::Error + Send + Sync>> {
let cached_file = match get_cached_file_or_cache(object_id, object_type, db.clone()).await {
Some(v) => v,
None => return Ok(None),
};
let data = match download_from_cache(cached_file, db).await {
Some(v) => v,
None => return Ok(None),
};
let DownloadResult {
mut response,
filename,
filename_ascii,
caption,
} = data;
let tempfile = match response_to_tempfile(&mut response).await {
Some(v) => v.0,
None => return Ok(None),
};
let link = match upload_to_minio(tempfile, filename.clone()).await {
Ok(v) => v,
Err(err) => return Err(err),
};
Ok(Some(FileLinkResult {
link,
filename,
filename_ascii,
caption,
}))
}
pub async fn get_books_for_update(
) -> Result<Vec<BaseBook>, Box<dyn std::error::Error + Send + Sync>> {
let mut result: Vec<BaseBook> = vec![];