Files
scraper/src/application/uploader.rs
T
asepharyana 2769b11918
Deploy Scraper / build-and-deploy (push) Canceled after 0s
feat(uploader): add ryzencdn local-disk uploader (POST multipart + GET serve)
Shirokami-API source uploads to Ryzumi S3 (s3.ryzumi.vip) which is DNS-dead
from this VPS. Implemented a local-disk uploader keeping the source's response
shape {success, url, fileName, size}:
- POST /uploader/ryzencdn (multipart 'file' field, magic-byte ext detection)
- GET /uploader/file/{name} (path-traversal safe, MIME by extension)
Files stored under /var/lib/scraper/uploads (owned by scraper user).
2026-09-01 20:39:09 +07:00

14 lines
456 B
Rust

//! Application use-cases for the uploader.
use crate::domain::error::ScrapingError;
use crate::infrastructure::repository::uploader as Repo;
use serde_json::Value;
pub fn upload(buffer: &[u8], file_name: &str) -> Result<Value, ScrapingError> {
Repo::save_file(buffer, file_name).map_err(ScrapingError::Http)
}
pub fn serve(file_name: &str) -> Result<(Vec<u8>, String), ScrapingError> {
Repo::read_file(file_name).map_err(ScrapingError::Http)
}