Skip to content

wowemulation-dev/cascette-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

35 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

cascette-rs

Open-source Rust implementation of Blizzard's NGDP (Next Generation Distribution Pipeline) for World of Warcraft emulation.

License License CI Status Crates.io Version docs.rs

🎯 Project Status

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

πŸš€ Quick Start

Library Usage

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(())
}

πŸ“¦ Installation

From crates.io

cargo add ribbit-client ngdp-bpsv

From source

git clone https://github.com/wowemulation-dev/cascette-rs
cd cascette-rs
cargo build --release

πŸ“š Documentation

πŸ“š Online References

πŸ”§ Features

Current

  • 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

Planned

  • TACT Implementation
    • Content manifest parsing
    • Encoding tables
    • Download manifests
    • Install manifests
    • Patch manifests

🀝 Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

Special thanks to the WoW emulation community and the documentation efforts at wowdev.wiki.

πŸ“„ License

This project is dual-licensed under either:

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.

About

A collection of Blizzard NGDP tools written for Rust.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages