use std::fs;
use crate::{Request, Response};
fn read_file(parent_dir: String, request: Request, mut response: Response) {
    match fs::read_to_string(
        parent_dir.chars().skip(1).collect::<String>() + &request.target.relative_path,
    ) {
        Ok(contents) => response.send(contents),
        Err(error) => {
            use crate::enums::Status;
            use std::io::ErrorKind;
            let status: Status = match error.kind() {
                ErrorKind::NotFound => Status::NotFound,
                _ => Status::InternalError,
            };
            response.status(status);
            response.end();
        }
    }
}
pub fn read_same_dir(request: Request, response: Response) {
    read_file(request.target.target_path.clone(), request, response)
}
pub fn read_diff_dir<S>(parent_dir: S) -> impl Fn(Request, Response)
where
    S: Into<String> + Clone,
{
    move |request: Request, response: Response| {
        read_file(parent_dir.clone().into(), request, response)
    }
}