mod destination;
mod format;
mod manifest;
mod media;
mod placement;
mod push;
pub mod wizard;
mod worker;
use std::path::PathBuf;
use crate::core::job::Job;
pub(crate) use format::{InputFileType, VideoQuality};
pub(crate) use worker::{TransformPlan, TransformSummary};
pub(crate) struct TransformJob {
pub source_path: String,
pub destination_path: String,
pub local_output: PathBuf,
pub input_file_type: InputFileType,
pub video_quality: VideoQuality,
pub download_transfers: usize,
pub download_checkers: usize,
pub tpslimit: Option<usize>,
pub max_pending_downloads: usize,
pub run_id: String,
}
impl Job for TransformJob {
type Plan = TransformPlan;
type Summary = TransformSummary;
async fn gather(&self) -> Result<TransformPlan, String> {
Ok(TransformPlan {
source_path: self.source_path.clone(),
destination_path: self.destination_path.clone(),
local_output: self.local_output.clone(),
input_file_type: self.input_file_type,
video_quality: self.video_quality,
download_transfers: self.download_transfers,
download_checkers: self.download_checkers,
tpslimit: self.tpslimit,
max_pending_downloads: self.max_pending_downloads,
run_id: self.run_id.clone(),
})
}
async fn run(
self,
plan: TransformPlan,
concurrency: usize,
upload_concurrency: usize,
) -> Result<TransformSummary, String> {
worker::run_transform_job(&plan, concurrency, upload_concurrency).await
}
}