1 个不稳定版本
新 0.1.0-beta.0 | 2024 年 8 月 23 日 |
---|
#1411 在 网页编程
24KB
362 行
TSAR Rust SDK
TSAR 的官方 Rust SDK。Rust 是我们的主要关注点,因此此 SDK 将得到最全面的维护。
示例导入
cargo add tsar-sdk
tsar-sdk = "0.1.0-beta.0"
示例用法
use tsar_sdk::{AuthParams, Client, ClientParams};
// You should have gotten these values after creating your app
// You can find them in your app's configuration settings
const APP_ID: &str = "00000000-0000-0000-0000-000000000000";
const CLIENT_KEY: &str = "MFk...";
fn main() {
let options = ClientParams {
app_id: APP_ID.to_string(),
client_key: CLIENT_KEY.to_string(),
debug: true, // Print out debug statements
};
// This will create a new client & perform a hash check on your binary
let client_init = Client::create(options);
// Check if client init was successful
match client_init {
Ok(client) => {
println!(
"Client successfully initialized. Hostname returned by server: {}",
client.dashboard_hostname
);
// Check if user is authorized. Default AuthParams open the user's browser when auth fails.
let mut user_result = client.authenticate(AuthParams::default());
// If they aren't authorized, continue to check until they've authenticated themselves in their browser.
while user_result.is_err() {
println!("Attempting to check if user is valid...");
std::thread::sleep(std::time::Duration::from_secs(3)); // Keep a delay of at least 3 seconds to prevent rate-limiting.
// Make sure to set open_browser to false when in a loop, or else the browser will keep opening nonstop.
user_result = client.authenticate(AuthParams {
open_browser: false,
});
}
// At this point the user is authenticated
let user = user_result.unwrap();
println!("User authorized. User ID: {}", user.id);
// Start a heartbeat loop to continue checking if the user is authorized (we recommend running this in a background thread)
//
// **MAKE SURE THE LOOP RUNS ONLY ONCE EVERY 20 - 30 SECONDS**
// Otherwise, your users might get rate-limited.
//
// Using a heartbeat thread will allow you to delete user sessions and have them be kicked off of your software live.
// Additionally, if their subscription expires they will also be kicked during the heartbeat check.
loop {
match user.heartbeat() {
Ok(_) => println!("Heartbeat success"),
Err(err) => {
println!("Heartbeat failed: {:?}: {}", err, err)
}
}
std::thread::sleep(std::time::Duration::from_secs(30));
}
}
Err(err) => println!("Failed to initialize client: {:?}: {}", err, err),
}
}
想要贡献吗?
此 SDK 对社区贡献开放!所有拉取请求都将由我们的团队审核。
需要帮助?
如果您有任何问题,请加入我们的 discord 社区。对于其他联系方式,请 在此处访问。
依赖项
~7–19MB
~299K SLoC