use anyhow::{bail, Result};
use std::path::Path;
pub fn validate_path(path: &Path) -> Result<()> {
let path_str = path.to_string_lossy();
if path_str.contains("..") || path_str.contains('~') {
bail!("Path traversal attempt detected");
}
if !path.exists() {
bail!("Path does not exist: {}", path.display());
}
if !path.is_dir() && !path.is_file() {
bail!("Path is not a file or directory: {}", path.display());
}
Ok(())
}
pub fn validate_url(url: &str) -> Result<()> {
if !url.starts_with("https://") && !url.starts_with("http://") {
bail!("Invalid URL: must start with http:// or https://");
}
if url.contains("github.com") && !url.contains("/") {
bail!("Invalid GitHub URL format");
}
Ok(())
}