pinakes-server: fix api key timing, notification scoping, and validate progress inputs
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: Ieb342b4b48034de0a2184cdf89d068316a6a6964
This commit is contained in:
parent
52f0b5defc
commit
2b2c1830a1
7 changed files with 334 additions and 179 deletions
|
|
@ -52,22 +52,21 @@ pub async fn upload_file(
|
|||
.next_field()
|
||||
.await
|
||||
.map_err(|e| {
|
||||
ApiError::bad_request(format!("Failed to read multipart field: {}", e))
|
||||
ApiError::bad_request(format!("Failed to read multipart field: {e}"))
|
||||
})?
|
||||
.ok_or_else(|| ApiError::bad_request("No file provided"))?;
|
||||
|
||||
let original_filename = field
|
||||
.file_name()
|
||||
.map(|s| s.to_string())
|
||||
.unwrap_or_else(|| "unknown".to_string());
|
||||
.map_or_else(|| "unknown".to_string(), std::string::ToString::to_string);
|
||||
|
||||
let content_type = field
|
||||
.content_type()
|
||||
.map(|s| s.to_string())
|
||||
.unwrap_or_else(|| "application/octet-stream".to_string());
|
||||
let content_type = field.content_type().map_or_else(
|
||||
|| "application/octet-stream".to_string(),
|
||||
std::string::ToString::to_string,
|
||||
);
|
||||
|
||||
let data = field.bytes().await.map_err(|e| {
|
||||
ApiError::bad_request(format!("Failed to read file data: {}", e))
|
||||
ApiError::bad_request(format!("Failed to read file data: {e}"))
|
||||
})?;
|
||||
|
||||
// Process the upload
|
||||
|
|
@ -79,7 +78,7 @@ pub async fn upload_file(
|
|||
Some(&content_type),
|
||||
)
|
||||
.await
|
||||
.map_err(|e| ApiError::internal(format!("Upload failed: {}", e)))?;
|
||||
.map_err(|e| ApiError::internal(format!("Upload failed: {e}")))?;
|
||||
|
||||
Ok(Json(result.into()))
|
||||
}
|
||||
|
|
@ -95,7 +94,7 @@ pub async fn download_file(
|
|||
.storage
|
||||
.get_media(media_id)
|
||||
.await
|
||||
.map_err(|e| ApiError::not_found(format!("Media not found: {}", e)))?;
|
||||
.map_err(|e| ApiError::not_found(format!("Media not found: {e}")))?;
|
||||
|
||||
let managed_storage = state
|
||||
.managed_storage
|
||||
|
|
@ -107,7 +106,7 @@ pub async fn download_file(
|
|||
// For external files, stream from their original path
|
||||
let file = tokio::fs::File::open(&item.path)
|
||||
.await
|
||||
.map_err(|e| ApiError::not_found(format!("File not found: {}", e)))?;
|
||||
.map_err(|e| ApiError::not_found(format!("File not found: {e}")))?;
|
||||
|
||||
let stream = ReaderStream::new(file);
|
||||
let body = axum::body::Body::from_stream(stream);
|
||||
|
|
@ -132,7 +131,7 @@ pub async fn download_file(
|
|||
let file = managed_storage
|
||||
.open(&item.content_hash)
|
||||
.await
|
||||
.map_err(|e| ApiError::not_found(format!("Blob not found: {}", e)))?;
|
||||
.map_err(|e| ApiError::not_found(format!("Blob not found: {e}")))?;
|
||||
|
||||
let stream = ReaderStream::new(file);
|
||||
let body = axum::body::Body::from_stream(stream);
|
||||
|
|
@ -171,7 +170,7 @@ pub async fn move_to_managed(
|
|||
media_id,
|
||||
)
|
||||
.await
|
||||
.map_err(|e| ApiError::internal(format!("Migration failed: {}", e)))?;
|
||||
.map_err(|e| ApiError::internal(format!("Migration failed: {e}")))?;
|
||||
|
||||
Ok(StatusCode::NO_CONTENT)
|
||||
}
|
||||
|
|
@ -185,7 +184,7 @@ pub async fn managed_stats(
|
|||
.storage
|
||||
.managed_storage_stats()
|
||||
.await
|
||||
.map_err(|e| ApiError::internal(format!("Failed to get stats: {}", e)))?;
|
||||
.map_err(|e| ApiError::internal(format!("Failed to get stats: {e}")))?;
|
||||
|
||||
Ok(Json(stats.into()))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue