steamroom-client 0.1.0

High-level Steam depot download orchestration and delta patching
Documentation

steamroom-client

High-level download orchestration for Steam depots built on top of steamroom.

What's in this crate

  • Pipelined downloads -- Concurrent chunk fetching with backpressure, retry, and ordered reassembly
  • Delta patching -- Compares old and new manifests to skip unchanged files and remove deleted ones
  • File filtering -- Filter downloads by literal paths, regex patterns, or regex:-prefixed filelist files
  • CDN server pool -- Automatic rotation across CDN servers with health tracking and rate-limit backoff
  • Manifest caching -- Local cache for depot manifests to avoid redundant downloads
  • Event stream -- DownloadEvent channel for progress bars, logging, or custom UI

Usage

use steamroom::depot::{DepotId, DepotKey};
use steamroom::cdn::{CdnClient, CdnServerPool};
use steamroom_client::download::{CdnChunkFetcher, DepotJob, FileFilter};

// Build a download job
let job = DepotJob::builder()
    .depot_id(DepotId(481))
    .depot_key(depot_key)
    .install_dir("/tmp/output".into())
    .file_filter(FileFilter::Regex(regex::Regex::new(r"\.dll$").unwrap()))
    .verify(true)
    .build()
    .unwrap();

// Create a CDN fetcher with server pool
let fetcher = CdnChunkFetcher::new(
    CdnClient::new().unwrap(),
    CdnServerPool::new(cdn_servers),
    None,
);

// Download (returns stats)
// let stats = job.download(&manifest, std::sync::Arc::new(fetcher)).await?;

License

MIT OR Apache-2.0