use std::fs;
use std::path::{PathBuf};
use crate::{RuleConfig};
#[derive(Default)]
pub struct RulePathManager;
impl RulePathManager {
pub fn get_etag_record_path(&self, config: &RuleConfig) -> PathBuf {
self.ensure_cache_dir_exists(config);
config.options.cache_dir.join("etag_records.json")
}
pub fn get_raw_file_cache_dir(&self, config: &RuleConfig) -> PathBuf {
self.ensure_cache_dir_exists(config);
let dir = config.options.cache_dir.join("raw_files");
if !dir.exists() {
let _ = fs::create_dir_all(&dir);
}
dir
}
pub fn generate_local_raw_file_path(&self, config: &RuleConfig) -> PathBuf {
let raw_dir = self.get_raw_file_cache_dir(config);
let cache_file_path = config.get_cache_file_path();
let file_name = cache_file_path.file_name().unwrap();
raw_dir.join(file_name) }
fn ensure_cache_dir_exists(&self, config: &RuleConfig) {
let cache_dir = &config.options.cache_dir;
if !cache_dir.exists() {
let _ = fs::create_dir_all(cache_dir);
}
}
pub fn get_rule_cache_file_path(&self, config: &RuleConfig) -> PathBuf {
self.ensure_cache_dir_exists(config);
config.get_cache_file_path()
}
}