use std::fs::File;
use std::io::Read;
use std::path::Path;
use crate::decode::from_bytes;
use crate::error::Error;
use crate::model::BinaryCookies;
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
pub fn from_reader<R: Read>(mut reader: R) -> Result<BinaryCookies, Error> {
let mut buffer = Vec::new();
let _ = reader.read_to_end(&mut buffer)?;
from_bytes(&buffer)
}
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
pub fn from_path<P: AsRef<Path>>(path: P) -> Result<BinaryCookies, Error> {
let mut file = File::open(path)?;
let cap = file
.metadata()
.ok()
.and_then(|meta| usize::try_from(meta.len()).ok())
.unwrap_or(0);
let mut buffer = Vec::with_capacity(cap);
let _ = file.read_to_end(&mut buffer)?;
from_bytes(&buffer)
}