48 lines
1.5 KiB
Rust
48 lines
1.5 KiB
Rust
//! Tracker parsing, scrape models, and tracker transport implementations.
|
|
#![forbid(unsafe_code)]
|
|
|
|
pub(super) use std::{
|
|
collections::BTreeMap,
|
|
fmt::{Display, Formatter},
|
|
sync::atomic::{AtomicU32, Ordering},
|
|
};
|
|
|
|
pub(super) use reqwest::blocking::Client;
|
|
|
|
pub(super) use crate::{
|
|
torrent::{DhtMessageModel, TorrentPeerModel},
|
|
transport::{TransportError, TransportErrorKind},
|
|
};
|
|
|
|
/// Tracker parsing and validation error model.
|
|
mod error;
|
|
/// Bencode parsing plus tracker wire-format normalization helpers.
|
|
mod parsing;
|
|
/// Shared tracker and DHT request-response protocol models.
|
|
mod request_response;
|
|
/// Live reqwest-backed HTTP tracker transport.
|
|
mod reqwest_transport;
|
|
/// UDP tracker message types and transport helpers.
|
|
mod udp;
|
|
|
|
pub use self::error::TrackerParseError;
|
|
pub use self::request_response::{
|
|
DhtNodeModel, DhtTransport, TrackerPeerListModel, TrackerRequestModel, TrackerResponseModel,
|
|
TrackerScrapeFileModel, TrackerScrapeModel, TrackerTransport,
|
|
};
|
|
pub use self::reqwest_transport::ReqwestTrackerTransport;
|
|
pub use self::udp::{
|
|
UDP_TRACKER_PROTOCOL_ID, UdpTrackerAction, UdpTrackerAnnounceEvent, UdpTrackerAnnounceRequest,
|
|
UdpTrackerAnnounceResponse, UdpTrackerConnectRequest, UdpTrackerConnectResponse,
|
|
UdpTrackerResponseHeader, UdpTrackerScrapeRequest, UdpTrackerScrapeResponse,
|
|
UdpTrackerScrapeStats, UdpTrackerTransactionId,
|
|
};
|
|
|
|
#[cfg(test)]
|
|
fn hex_encode(bytes: &[u8]) -> String {
|
|
parsing::hex_encode(bytes)
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tracker_tests;
|