14个版本 (8个破坏性更新)
0.9.0 | 2024年6月13日 |
---|---|
0.8.0 | 2022年10月29日 |
0.7.0 | 2022年9月19日 |
0.6.1 | 2022年6月18日 |
0.4.0 | 2021年11月21日 |
#169 in 认证
220KB
4K SLoC
vtubestudio-rs
与VTube Studio API交互的库。
基本用法
以下示例使用提供的构建器创建一个Client
,它使用tokio_tungstenite
- 连接到
ws://localhost:8001
- 使用现有令牌进行认证(如果存在且有效)
- 断开连接时重新连接,并在重新连接成功时重试失败的请求
- 收到认证错误时请求新的认证令牌,并在认证成功时重试初始失败的请求
use vtubestudio::data::StatisticsRequest;
use vtubestudio::{Client, ClientEvent, Error};
#[tokio::main]
async fn main() -> Result<(), Error> {
// An auth token from a previous successful authentication request
let stored_token = Some("...".to_string());
let (mut client, mut events) = Client::builder()
.auth_token(stored_token)
.authentication("Plugin name", "Developer name", None)
.build_tungstenite();
tokio::spawn(async move {
while let Some(event) = events.next().await {
match event {
ClientEvent::NewAuthToken(new_token) => {
// This returns whenever the authentication middleware receives a new auth
// token. We can handle it by saving it somewhere, etc.
println!("Got new auth token: {new_token}");
}
_ => {
// Other events, such as connections/disconnections, API events, etc
println!("Got event: {:?}", event);
}
}
}
});
// Use the client to send a `StatisticsRequest`, handling authentication if necessary.
// The return type is inferred from the input type to be `StatisticsResponse`.
let resp = client.send(&StatisticsRequest {}).await?;
println!("VTube Studio has been running for {}ms", resp.uptime);
Ok(())
}
有关更多详细信息,请参阅docs.rs上的文档。
依赖关系
~5.5–8MB
~136K SLoC