1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//! # aria2-protocol
//!
//! Protocol implementations for the aria2-rust download utility.
//!
//! Provides client-side protocol handlers for HTTP/HTTPS, FTP/SFTP, BitTorrent,
//! Metalink, and SFTP downloads. Each protocol module is feature-gated to allow
//! minimal builds when only specific protocols are needed.
//!
//! ## Modules
//!
//! - **[`http`]** — HTTP/HTTPS client built on reqwest/hyper: request construction,
//! Range header handling, BASIC/Digest authentication, proxy support (HTTP/SOCKS5),
//! gzip/deflate decompression, Cookie management, chunked transfer decoding,
//! custom headers, and redirect following.
//!
//! - **[`ftp`]** — FTP/SFTP client: control connection (USER/PASS/CWD/SIZE/PASV/EPSV),
//! passive mode data transfer, anonymous and authenticated login, REST-based resume.
//!
//! - **[`bittorrent`]** *(feature: `bittorrent`)* — Full BitTorrent protocol stack:
//! bencode codec, .torrent parsing, info_hash computation, BT message protocol (10 types),
//! handshake, Tracker communication (HTTP announce/scrape), DHT network (K-buckets/KRPC),
//! PEX peer exchange, MSE encryption framework, PeerConnection, choke algorithm,
//! PiecePicker (RarestFirst/Sequential/Random/EndGame).
//!
//! - **[`metalink`]** *(feature: `metalink`)* — Metalink V3/V4 XML parser:
//! multi-mirror URL priority, hash verification (MD5/SHA1/SHA256/SHA512),
//! piece checksums, MetaURL torrent detection.
//!
//! - **[`sftp`]` *(feature: `sftp`)* — SFTP over SSH2 client: key/password auth,
//! file operations (stat/read/write/mkdir/rmdir/readdir/symlink), streaming transfer.