mirror of
https://github.com/hpd840321/craftlabs-authorization-sdk.git
synced 2026-06-09 18:10:30 +08:00
feat(cli): add migrate command, platform API, config management
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
use serde::{Serialize, Deserialize};
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct ActivationReport {
|
||||
sn: String,
|
||||
device_id: String,
|
||||
timestamp: String,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct ApiResponse {
|
||||
status: String,
|
||||
message: Option<String>,
|
||||
}
|
||||
|
||||
pub struct PlatformClient {
|
||||
base_url: String,
|
||||
client: reqwest::Client,
|
||||
}
|
||||
|
||||
impl PlatformClient {
|
||||
pub fn new(base_url: &str) -> Self {
|
||||
PlatformClient {
|
||||
base_url: base_url.trim_end_matches('/').to_string(),
|
||||
client: reqwest::Client::new(),
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn report_activation(&self, sn: &str, device_id: &str) -> Result<(), String> {
|
||||
let body = ActivationReport {
|
||||
sn: sn.to_string(),
|
||||
device_id: device_id.to_string(),
|
||||
timestamp: chrono::Utc::now().to_rfc3339(),
|
||||
};
|
||||
|
||||
let url = format!("{}/api/v1/licenses/activate", self.base_url);
|
||||
let resp = self.client
|
||||
.post(&url)
|
||||
.json(&body)
|
||||
.send()
|
||||
.await
|
||||
.map_err(|e| format!("请求失败: {}", e))?;
|
||||
|
||||
if resp.status().is_success() {
|
||||
Ok(())
|
||||
} else {
|
||||
let status = resp.status();
|
||||
let text = resp.text().await.unwrap_or_default();
|
||||
Err(format!("HTTP {}: {}", status, text))
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user