printers 2.3.0

Get printers and print files on unix and windows
Documentation
use std::{
    fs::{File, metadata},
    io::Read,
};

#[cfg(target_family = "unix")]
use std::{
    env,
    io::Write,
    path::PathBuf,
    time::{SystemTime, UNIX_EPOCH},
};

use crate::common::base::errors::PrintersError;

#[cfg(target_family = "unix")]
pub fn save_tmp_file(buffer: &[u8]) -> Result<PathBuf, PrintersError> {
    let time = SystemTime::now()
        .duration_since(UNIX_EPOCH)
        .map_err(PrintersError::file_error)?
        .subsec_nanos();

    let file_path = env::temp_dir().join(time.to_string());

    File::create(&file_path)
        .map_err(PrintersError::file_error)?
        .write(buffer)
        .map(|_| file_path)
        .map_err(PrintersError::file_error)
}

pub fn get_file_as_bytes(path: &str) -> Result<Vec<u8>, PrintersError> {
    let metadata = metadata(path).map_err(PrintersError::file_error)?;
    let mut buffer = vec![0; metadata.len() as usize];

    File::open(path)
        .map_err(PrintersError::file_error)?
        .read(&mut buffer)
        .map_err(PrintersError::file_error)
        .map(|_| buffer)
}