ngdp-client
Command-line interface for interacting with Blizzard's NGDP (Next Generation Distribution Pipeline) services.
Features
- 📦 Query product information from Ribbit protocol
- 📂 Manage local CASC storage (placeholder)
- ⬇️ Download content using TACT protocol (placeholder)
- 🔍 Inspect NGDP data structures
- 🔐 Download certificates by SKI/hash
- ⚙️ Configuration management
- 💾 Built-in caching for API responses
- 🔄 Automatic fallback from Ribbit to TACT on failures
Installation
Usage
Basic Commands
# Show help
# List all products
# Filter products by name
# Show product versions
# Show all regions for a product
# Get product information (specific region)
# Get product information (all regions)
# Show CDN configuration for a specific region
Output Formats
The CLI supports multiple output formats:
# Default text output
# JSON output
# Pretty-printed JSON
# Raw BPSV format
Inspect Commands
# Parse and display BPSV data
# Show raw BPSV data
# Inspect from URL
Certificate Commands
# Download a certificate by SKI/hash
# Download and show certificate details
# Save certificate to file
# Download certificate in DER format
# Get certificate details as JSON
Configuration
# Show current configuration
# Get a specific config value
# Set a config value
# Reset configuration to defaults
Caching and Fallback
The CLI includes built-in caching for both Ribbit and TACT API responses with automatic fallback:
# Disable caching for a single command
# Clear all cached data before running command
Fallback Behavior:
- Primary: Ribbit protocol (TCP-based, official)
- Fallback: TACT HTTP protocol (when Ribbit fails)
- Both protocols return identical BPSV data
- Caching works transparently for both protocols
- SG region automatically falls back to US for TACT
Library Usage
The ngdp-client can also be used as a library:
use ;
async
Examples
See the examples/
directory for more usage examples.
Development
Running Tests
Running Benchmarks
📄 License
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.
🫶 Acknowledgments
This crate is part of the cascette-rs
project, providing tools for World of Warcraft
emulation development.