Open-source Rust implementation of Blizzard's NGDP (Next Generation Distribution Pipeline) for World of Warcraft emulation.
Component | Status | Description |
---|---|---|
ngdp-bpsv |
Ready | BPSV parser/writer for NGDP formats |
ribbit-client |
Ready | Ribbit protocol client |
tact-client |
Planned | TACT content transfer protocol |
Add to your Cargo.toml
:
[dependencies]
ribbit-client = "0.1"
ngdp-bpsv = "0.1"
Basic example:
use ribbit_client::{RibbitClient, Region, Endpoint};
use ngdp_bpsv::BpsvDocument;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create client for US region
let client = RibbitClient::new(Region::US);
// Get WoW version information
let endpoint = Endpoint::ProductVersions("wow".to_string());
let response = client.request(&endpoint).await?;
// Parse the BPSV data
if let Some(data) = response.data {
let doc = BpsvDocument::parse(&data)?;
println!("Found {} versions", doc.rows().len());
// Access specific fields
for row in doc.rows() {
let region = row.get_raw_by_name("Region", doc.schema()).unwrap_or("");
let build_id = row.get_raw_by_name("BuildId", doc.schema()).unwrap_or("");
println!("{}: {}", region, build_id);
}
}
Ok(())
}
cargo add ribbit-client ngdp-bpsv
git clone https://github.com/wowemulation-dev/cascette-rs
cd cascette-rs
cargo build --release
-
BPSV Parser/Writer
- β Complete BPSV format support
- β Type-safe field definitions (STRING, HEX, DEC)
- β Schema validation
- β Sequence number handling
- β Builder pattern for document creation
- β Round-trip compatibility
- β Empty value support
-
Ribbit Protocol Client
- β All Blizzard regions (US, EU, CN, KR, TW, SG)
- β V1 (MIME) and V2 (PSV) protocol support
- β Product version queries
- β CDN configuration retrieval
- β Certificate and OCSP endpoints
- β SHA-256 checksum validation
- β PKCS#7/CMS signature parsing
- β Async/await with Tokio
- TACT Implementation
- Content manifest parsing
- Encoding tables
- Download manifests
- Install manifests
- Patch manifests
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Special thanks to the WoW emulation community and the documentation efforts at wowdev.wiki.
This project is dual-licensed under either:
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Note: This project is not affiliated with or endorsed by Blizzard Entertainment. It is an independent implementation based on reverse engineering efforts by the community for educational and preservation purposes.