Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pub fn download<W>(&self, writer: &mut W, family: &str) -> Result<(), FontError>
- where W: Write
- {
- let client = Client::new();
- // make sure local path exists
- let path = dirs::font_cache().ok_or(FontError::FontDirectory)?;
- dirs::make_rec_dir(&path)?;
- // download and install each variant of the given font family
- let font = self.get_family(family).ok_or(FontError::FontNotFound)?;
- for (variant, uri) in &font.files {
- let path = dirs::get_font_path(&path, family, &variant, &uri);
- // let the user know which font we are processing
- let message = format!("Installing '{:?}'\n", path);
- eprint!("fontfinder: {}", message);
- let _ = writer.write(message.as_bytes());
- // download and store locally
- let mut file = OpenOptions::new().create(true).write(true).open(&path)?;
- let mut data = client.get(uri.as_str()).send()?;
- io::copy(&mut data, &mut file)?;
- }
- Ok(())
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement