3 个版本
0.1.2 | 2024年6月26日 |
---|---|
0.1.1 | 2024年6月26日 |
0.1.0 | 2024年6月26日 |
637 在 网页编程
每月40次下载
40KB
957 代码行
BW Web API (rust 版本)
用于与 StarCraft Brood War API 交互的 Rust 库。
这是 TypeScript 编写的 bw-web-api 库的移植版本。您可以在那里找到更多有关端点文档、预期响应形状等信息。
并非每个端点都可用,这仍然是一个正在进行中的项目。然而,最有用的端点已实现并可用(例如 aurora_profile_by_toon
)。
安装
cargoadd bw-web-api-rs
用法
此库使用了 async/await,因此您需要使用您首选的异步运行时,例如 tokio。
use bw_api::{AuroraProfileByToonV2FieldMask, BWClient, Region, SCApi};
#[tokio::main]
async fn main() {
let client = BWClient::new("https://127.0.0.1/:12345").unwrap();
let api = SCApi::new(client).unwrap();
let response = api
.aurora_profile_by_toon(
"By.SnOw1",
Region::Korea,
AuroraProfileByToonV2FieldMask::ScrProfile,
)
.await;
match response {
Ok(profile) => println!("{:?}", profile),
Err(e) => eprintln!("Error: {}", e),
}
}
您可以在此处找到端点的粗略文档。
StarCraft 端口
StarCraft 为网页 API 打开的端口不一定相同。您可以通过以下方式在 Windows 上确定端口
(作为管理员)
(Get-NetTCPConnection -OwningProcess (Get-Process -Name StarCraft | Select-Object -ExpandProperty Id) | Where-Object {$_.State -eq "Listen"} | Sort-Object -Property LocalPort | Select-Object -First 1).LocalPort
在 Rust 中运行此命令的示例
use std::process::Command;
use std::str;
fn get_starcraft_port() -> Result<String, Box<dyn std::error::Error>> {
let output = Command::new("powershell")
.arg("-Command")
.arg("(Get-NetTCPConnection -OwningProcess (Get-Process -Name StarCraft | Select-Object -ExpandProperty Id) | Where-Object { $_.State -eq 'Listen' } | Sort-Object -Property LocalPort | Select-Object -First 1).LocalPort")
.output()?;
if output.status.success() {
let port = str::from_utf8(&output.stdout)?.trim().to_string();
Ok(port)
} else {
let error_message = str::from_utf8(&output.stderr)?;
Err(Box::from(error_message))
}
}
依赖项
~4–15MB
~208K SLoC