Rust Wrapper
Crate nxgate memberikan API async-first berbasis Tokio dengan dukungan penuh untuk verifikasi, retry exponential backoff, dan caching in-memory.
Instalasi
Cargo.toml
1# Cargo.toml2[dependencies]3nxgate = "1.0"4tokio = { version = "1", features = ["full"] }
Penggunaan Dasar
src/main.rs
1use nxgate::{Client, ClientConfig};23#[tokio::main]4async fn main() -> Result<(), Box<dyn std::error::Error>> {5 let client = Client::new(ClientConfig {6 api_key: std::env::var("NXGATE_API_KEY")?,7 license_key: "XXXX-XXXX-XXXX-XXXX".to_string(),8 ..Default::default()9 });1011 let result = client.verify().await?;1213 if result.valid {14 println!("Lisensi valid! Diberikan kepada: {}", result.owner);15 } else {16 eprintln!("Verifikasi gagal: {:?}", result.reason);17 }1819 Ok(())20}
Penggunaan Lanjutan
src/license.rs
1use nxgate::{Client, VerifyOptions, VerificationStatus};23let result = client4 .verify_with(VerifyOptions {5 scope: Some("production".into()),6 metadata: vec![7 ("hostname".into(), hostname::get()?.to_string_lossy().into()),8 ("version".into(), env!("CARGO_PKG_VERSION").into()),9 ],10 ..Default::default()11 })12 .await?;1314match result.status {15 VerificationStatus::Valid => enable_features(),16 VerificationStatus::IpLimitExceeded => {17 eprintln!("Lisensi sudah digunakan di terlalu banyak IP");18 }19 VerificationStatus::Expired => {20 eprintln!("Lisensi expired pada {}", result.expires_at.unwrap());21 }22 VerificationStatus::RateLimited => {23 eprintln!("Tunggu {} detik", result.retry_after.unwrap_or(60));24 }25 _ => {}26}
Catatan
Wrapper Rust mendukung feature flags native-tls dan rustls. Pilih sesuai dengan kebutuhan deployment Anda.