std_x 0.1.4

Collection of general purpose tools for solving problems. Fundamentally extend the language without spoiling, so may be used solely or in conjunction with another module of such kind.
Documentation
//!
//! Work with crate on `crates.io`.
//!

use ureq::Agent;
use std::time::Duration;
use core::fmt::Write;
use std::io::Read;

///
/// Get data of remote package.
///

pub fn retrieve_bytes<'a>( name : &'a str, version : &'a str ) -> anyhow::Result<Vec<u8>>
{
  let agent: Agent = ureq::AgentBuilder::new()
  .timeout_read( Duration::from_secs( 5 ) )
  .timeout_write( Duration::from_secs( 5 ) )
  .build();
  let mut buf = String::new();
  write!( &mut buf, "https://static.crates.io/crates/{0}/{0}-{1}.crate", name, version )?;

  let resp = agent.get( &buf[ .. ] ).call()?;

  let len: usize = resp.header( "Content-Length" )
  .unwrap()
  .parse()?;

  let mut bytes: Vec<u8> = Vec::with_capacity( len );
  resp.into_reader()
  .take( u64::MAX )
  .read_to_end( &mut bytes )?;
  Ok( bytes )
}