trauma 1.1.0

Simplify and prettify HTTP downloads
Documentation

Trauma

Crates.io Documentation ci

Tokio Rust Asynchronous Universal download MAnager

Description

`Trauma is a library simplifying and prettifying HTTP(s) downloads. The downloads are executed asynchronously and progress bars are drawn on the screen to help monitoring the process.

screenshot

Features

  • Library only
  • HTTP(S) downloads
  • Download files via providing a list of URLs
    • Ability to rename downloaded files
  • Ability to configure the download manager
    • Download directory
    • Maximum simultaneous requests
    • Number of retries
  • Asynchronous w/ Tokio
  • Progress bar w/ indicatif
    • Display the individual progress
    • Display the total progress
  • Ability to customize the progress bars
    • Customize the format
    • Customize the progression style
    • Leave them on the screen or clear them upon completion
    • Hide any or both of them
    • Add pre-configured styles

Usage

Add this to your Cargo.toml:

[dependencies]
trauma = "1.0"

Quick start

use std::path::PathBuf;
use trauma::{download::Download, downloader::DownloaderBuilder, Error};

#[tokio::main]
async fn main() -> Result<(), Error> {
    let reqwest_rs = "https://github.com/seanmonstar/reqwest/archive/refs/tags/v0.11.9.zip";
    let downloads = vec![Download::try_from(reqwest_rs).unwrap()];
    let downloader = DownloaderBuilder::new()
        .directory(PathBuf::from("output"))
        .build();
    downloader.download(&downloads).await;
    Ok(())
}

More examples can be found in the examples folder.

Why another download manager

Before starting this project, I spent some time searching the internet, trying not to reinvent the wheel. And I did find a bunch of interesting existing projects!

However they are almost all abandoned:

As a result, I decided to write trauma.

Potential ideas for future versions

  • Resume download
  • Support for other download protocol (i.e.: FTP)