scrapfly_sdk/result/
screenshot.rs1use std::path::{Path, PathBuf};
4
5use bytes::Bytes;
6
7#[derive(Debug, Clone)]
9pub struct ScreenshotResult {
10 pub image: Bytes,
12 pub metadata: ScreenshotMetadata,
14}
15
16#[derive(Debug, Clone, Default)]
18pub struct ScreenshotMetadata {
19 pub extension_name: String,
21 pub upstream_status_code: u16,
23 pub upstream_url: String,
25}
26
27impl ScreenshotResult {
28 pub fn save(&self, name: &str, dir: Option<&Path>) -> std::io::Result<PathBuf> {
31 let dir = dir.unwrap_or_else(|| Path::new("."));
32 std::fs::create_dir_all(dir)?;
33 let ext = if self.metadata.extension_name.is_empty() {
34 "bin"
35 } else {
36 &self.metadata.extension_name
37 };
38 let path = dir.join(format!("{}.{}", name, ext));
39 std::fs::write(&path, &self.image)?;
40 Ok(path)
41 }
42}