chore: backup before migration to new repo

This commit is contained in:
Warren
2026-04-23 16:46:02 +08:00
parent 13dd3b30f3
commit 59809dae1f
40 changed files with 5566 additions and 1783 deletions

View File

@@ -5,6 +5,21 @@ use std::path::PathBuf;
const DEFAULT_API_URL: &str = "http://localhost:3002";
const DEV_API_URL: &str = "http://localhost:3003";
fn get_api_url() -> String {
std::env::var("MOMENTRY_API_URL").unwrap_or_else(|_| {
std::env::var("MOMENTRY_SERVER_PORT")
.ok()
.map(|port| format!("http://localhost:{}", port))
.unwrap_or_else(|| DEFAULT_API_URL.to_string())
})
}
fn get_api_key() -> Option<String> {
std::env::var("MOMENTRY_API_KEY").ok()
}
#[derive(Debug, Clone)]
pub struct ApiClient {
client: Client,
@@ -83,7 +98,7 @@ pub struct VideosResponse {
impl ApiClient {
pub fn new() -> Self {
let url = std::env::var("MOMENTRY_API_URL").unwrap_or_else(|_| DEFAULT_API_URL.to_string());
let url = get_api_url();
Self {
client: Client::new(),
base_url: url,
@@ -103,7 +118,11 @@ impl ApiClient {
let request = RegisterRequest {
path: path.to_string(),
};
let response = self.client.post(&url).json(&request).send().await?;
let mut request_builder = self.client.post(&url).json(&request);
if let Some(key) = get_api_key() {
request_builder = request_builder.header("X-API-Key", key);
}
let response = request_builder.send().await?;
let status = response.status();
let result = response.json::<RegisterResponse>().await?;
if !status.is_success() {
@@ -124,7 +143,11 @@ impl ApiClient {
limit,
uuid: uuid.map(|s| s.to_string()),
};
let response = self.client.post(&url).json(&request).send().await?;
let mut request_builder = self.client.post(&url).json(&request);
if let Some(key) = get_api_key() {
request_builder = request_builder.header("X-API-Key", key);
}
let response = request_builder.send().await?;
let status = response.status();
let result = response.json::<SearchResponse>().await?;
if !status.is_success() {
@@ -135,18 +158,30 @@ impl ApiClient {
pub async fn lookup_video(&self, uuid: &str) -> Result<LookupResponse> {
let url = format!("{}/api/v1/lookup?uuid={}", self.base_url, uuid);
let response = self.client.get(&url).send().await?;
let mut request = self.client.get(&url);
if let Some(key) = get_api_key() {
request = request.header("X-API-Key", key);
}
let response = request.send().await?;
let status = response.status();
let result = response.json::<LookupResponse>().await?;
if !status.is_success() {
if status == 200 {
let result = response.json::<LookupResponse>().await?;
if result.uuid.is_empty() {
anyhow::bail!("影片不存在: {}", uuid);
}
Ok(result)
} else {
anyhow::bail!("API request failed with status: {}", status);
}
Ok(result)
}
pub async fn list_videos(&self) -> Result<Vec<VideoInfo>> {
let url = format!("{}/api/v1/videos", self.base_url);
let response = self.client.get(&url).send().await?;
let mut request = self.client.get(&url);
if let Some(key) = get_api_key() {
request = request.header("X-API-Key", key);
}
let response = request.send().await?;
let status = response.status();
let result = response.json::<VideosResponse>().await?;
if !status.is_success() {