use std::path::{Path, PathBuf};
use bytes::Bytes;
#[derive(Debug, Clone)]
pub struct ScreenshotResult {
pub image: Bytes,
pub metadata: ScreenshotMetadata,
}
#[derive(Debug, Clone, Default)]
pub struct ScreenshotMetadata {
pub extension_name: String,
pub upstream_status_code: u16,
pub upstream_url: String,
}
impl ScreenshotResult {
pub fn save(&self, name: &str, dir: Option<&Path>) -> std::io::Result<PathBuf> {
let dir = dir.unwrap_or_else(|| Path::new("."));
std::fs::create_dir_all(dir)?;
let ext = if self.metadata.extension_name.is_empty() {
"bin"
} else {
&self.metadata.extension_name
};
let path = dir.join(format!("{}.{}", name, ext));
std::fs::write(&path, &self.image)?;
Ok(path)
}
}