2 个不稳定版本
0.2.0-alpha | 2024年7月20日 |
---|---|
0.1.0-alpha | 2024年3月21日 |
#843 in 网页开发
每月 112 次下载
39KB
893 行
discloud-rs
使用 Rust 语言制作的 Discloud API 封装 🦀。
该库提供 tracing 调试功能。
路由
点击查看使用示例
使用说明
用户
获取用户信息
use discloud_rs::Discloud;
#[tokio::main]
async fn main() {
let client = Discloud::new("TOKEN");
let user = client.get_user_info().await.unwrap();
}
设置地区
use discloud_rs::{ Discloud, Locale };
#[tokio::main]
async fn main() {
let client = Discloud::new("TOKEN");
client.set_locale(Locale::PtBR).await.unwrap(); // Set language to Brazilian Portuguese
}
应用
获取应用
use discloud_rs::{ Discloud };
#[tokio::main]
async fn main() {
let client = Discloud::new("TOKEN");
client.get_all_apps().await.unwrap(); // Get all apps
client.get_app("APP_ID").await.unwrap(); // Get app by id
}
获取应用状态
use discloud_rs::{ Discloud };
#[tokio::main]
async fn main() {
let client = Discloud::new("TOKEN");
client.get_all_apps_status().await.unwrap(); // Get all apps status
client.get_app_status("APP_ID").await.unwrap(); // Get app status by id
// Get status from app
let app = client.get_app("APP_ID").await.unwrap();
app.get_status(&client).await.unwrap();
}
获取应用日志
use discloud_rs::{ Discloud };
#[tokio::main]
async fn main() {
let client = Discloud::new("TOKEN");
client.get_all_apps_logs().await.unwrap(); // Get all apps logs (Be careful if you have many apps)
client.get_app_logs("APP_ID").await.unwrap(); // Get app logs by id
// Get logs from app
let app = client.get_app("APP_ID").await.unwrap();
app.get_logs(&client).await.unwrap();
}
获取应用备份
use discloud_rs::{ Discloud };
#[tokio::main]
async fn main() {
let client = Discloud::new("TOKEN");
client.get_all_apps_backup().await.unwrap(); // Get all apps backup (This may take a while)
client.get_app_backup("APP_ID").await.unwrap(); // Get app logs by id
// Get logs from app
let app = client.get_app("APP_ID").await.unwrap();
app.get_backup(&client).await.unwrap();
}
管理应用
启动
use discloud_rs::{ Discloud, AppStartError };
#[tokio::main]
async fn main() {
let client = Discloud::new("TOKEN");
// Start all of your apps
let response = client.start_all_apps().await.unwrap();
// Start app by id
match client.start_app("APP_ID").await {
Ok(_) => { }, // App was started.
Err(error) => {
match error {
AppStartError::AlreadyStarted => { }, // App is already online
AppStartError::Other(e) => { } // discloud_rs::Error
}
}
};
// Start from app
let app = client.get_app("APP_ID").await.unwrap();
match app.start(&client).await {
Ok(_) => { }, // App was started.
Err(error) => {
match error {
AppStartError::AlreadyStarted => { }, // App is already online
AppStartError::Other(e) => { } // discloud_rs::Error
}
}
};
}
重启
use discloud_rs::{ Discloud };
#[tokio::main]
async fn main() {
let client = Discloud::new("TOKEN");
client.restart_all_apps().await.unwrap(); // Restart all of your apps
client.restart_app("APP_ID").await.unwrap(); // Restart app by id
// Restart from app
let app = client.get_app("APP_ID").await.unwrap();
app.restart(&client).await.unwrap();
}
停止
use discloud_rs::{ Discloud, AppStopError };
#[tokio::main]
async fn main() {
let client = Discloud::new("TOKEN");
// Stop all of your apps
client.stop_all_apps().await.unwrap();
// Stop app by id
match client.stop_app("APP_ID").await {
Ok(_) => { }, // App was stopped.
Err(error) => {
match error {
AppStopError::AlreadyStopped => { }, // App is already stopped
AppStopError::Other(e) => { } // discloud_rs::Error
}
}
};
// Stop from app
let app = client.get_app("APP_ID").await.unwrap();
match app.stop(&client).await {
Ok(_) => { }, // App was stopped.
Err(error) => {
match error {
AppStopError::AlreadyStopped => { }, // App is already stopped
AppStopError::Other(e) => { } // discloud_rs::Error
}
}
};
}
设置 RAM
use discloud_rs::{ Discloud, AppRamError };
#[tokio::main]
async fn main() {
let client = Discloud::new("TOKEN");
// Set app ram (in MB)
match client.set_app_ram("APP_ID", 100).await {
Ok(_) => { }, // App ram was changed
Err(error) => {
match error {
AppRamError::ForbiddenQuantity(message) => { }, // Forbidden quantity (Not enough memory or minimum required)
AppRamError::Other(e) => { } // discloud_rs::Error
}
}
};
// Set ram from app
let app = client.get_app("APP_ID").await.unwrap();
match app.set_ram(&client, 100).await {
Ok(_) => { }, // App ram was changed
Err(error) => {
match error {
AppRamError::ForbiddenQuantity(message) => { }, // Forbidden quantity (Not enough memory or minimum required
AppRamError::Other(e) => { } // discloud_rs::Error
}
}
};
}
删除
use discloud_rs::Discloud;
#[tokio::main]
async fn main() {
let client = Discloud::new("TOKEN");
// Delete all apps
client.delete_all_apps().await.unwrap();
// Delete app
client.delete_app("APP_ID").await.unwrap();
// Delete from app
let app = client.get_app("APP_ID").await.unwrap();
app.delete(&client).await.unwrap();
}
团队管理
获取应用团队
use discloud_rs::Discloud;
#[tokio::main]
async fn main() {
let client = Discloud::new("TOKEN");
// Get app team using client
client.get_app_team("APP_ID").await.unwrap();
// Get app team using app
let app = client.get_app("APP_ID").await.unwrap();
app.get_team(&client).await.unwrap();
}
添加应用模块
use discloud_rs::{Discloud, TeamPerms};
#[tokio::main]
async fn main() {
let client = Discloud::new("TOKEN");
// Add app mod using client
client.add_app_mod("APP_ID", "MOD_ID", vec![TeamPerms::Start, TeamPerms::Stop]).await.unwrap();
// Add app mod using app
let app = client.get_app("APP_ID").await.unwrap();
app.add_mod(&client, "MOD_ID", vec![TeamPerms::Start, TeamPerms::Stop]).await.unwrap();
}
编辑应用模块
use discloud_rs::{Discloud, TeamPerms};
#[tokio::main]
async fn main() {
let client = Discloud::new("TOKEN");
// Edit mod permissions using client
client.edit_app_mod("APP_ID", "MOD_ID", vec![TeamPerms::Start, TeamPerms::Stop]).await.unwrap();
// Edit mod permissions using app
let app = client.get_app("APP_ID").await.unwrap();
app.edit_mod(&client, "MOD_ID", vec![TeamPerms::Start, TeamPerms::Stop]).await.unwrap();
// Edit mod permissions from mod
if let Some(mod) = app.get_team(&client).await.unwrap().first() {
mod.edit_perms(&client, vec![TeamPerms::Start, TeamPerms::Stop]).await.unwrap();
// Or add permissions to mod
mod.add_perms(&client, vec![TeamPerms::Start, TeamPerms::Stop]).await.unwrap();
};
}
移除应用模块
use discloud_rs::{Discloud, TeamPerms};
#[tokio::main]
async fn main() {
let client = Discloud::new("TOKEN");
// Remove mod using client
client.remove_app_mod("APP_ID", "MOD_ID").await.unwrap();
// Remove mod using app
let app = client.get_app("APP_ID").await.unwrap();
app.remove_mod(&client, "MOD_ID").await.unwrap();
// Remove from mod
if let Some(mod) = app.get_team(&client).await.unwrap().first() {
mod.remove(&client).await.unwrap();
};
}
依赖
~4–15MB
~216K SLoC