mirror of
https://github.com/flibusta-apps/telegram_files_cache_server.git
synced 2025-12-06 14:45:36 +01:00
Remove get link handler
This commit is contained in:
@@ -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"),
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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![];
|
||||
|
||||
Reference in New Issue
Block a user