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_port: u32,
|
||||||
pub postgres_db: String,
|
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_api_key: String,
|
||||||
pub downloader_url: String,
|
pub downloader_url: String,
|
||||||
|
|
||||||
@@ -45,12 +39,6 @@ impl Config {
|
|||||||
postgres_port: get_env("POSTGRES_PORT").parse().unwrap(),
|
postgres_port: get_env("POSTGRES_PORT").parse().unwrap(),
|
||||||
postgres_db: get_env("POSTGRES_DB"),
|
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_api_key: get_env("DOWNLOADER_API_KEY"),
|
||||||
downloader_url: get_env("DOWNLOADER_URL"),
|
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 bots;
|
||||||
pub mod download_utils;
|
pub mod download_utils;
|
||||||
pub mod downloader;
|
pub mod downloader;
|
||||||
pub mod minio;
|
|
||||||
pub mod telegram_files;
|
pub mod telegram_files;
|
||||||
|
|
||||||
use chrono::Duration;
|
use chrono::Duration;
|
||||||
@@ -24,9 +23,8 @@ use crate::{
|
|||||||
use self::{
|
use self::{
|
||||||
book_library::{get_book, get_books, types::BaseBook},
|
book_library::{get_book, get_books, types::BaseBook},
|
||||||
bots::ROUND_ROBIN_BOT,
|
bots::ROUND_ROBIN_BOT,
|
||||||
download_utils::{response_to_tempfile, DownloadResult},
|
download_utils::DownloadResult,
|
||||||
downloader::{download_from_downloader, get_filename, FilenameData},
|
downloader::{download_from_downloader, get_filename, FilenameData},
|
||||||
minio::upload_to_minio,
|
|
||||||
telegram_files::{download_from_telegram_files, upload_to_telegram_files, UploadData},
|
telegram_files::{download_from_telegram_files, upload_to_telegram_files, UploadData},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -237,46 +235,6 @@ pub struct FileLinkResult {
|
|||||||
pub caption: String,
|
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(
|
pub async fn get_books_for_update(
|
||||||
) -> Result<Vec<BaseBook>, Box<dyn std::error::Error + Send + Sync>> {
|
) -> Result<Vec<BaseBook>, Box<dyn std::error::Error + Send + Sync>> {
|
||||||
let mut result: Vec<BaseBook> = vec![];
|
let mut result: Vec<BaseBook> = vec![];
|
||||||
|
|||||||
Reference in New Issue
Block a user