mirror of
https://codeberg.org/Toasterson/ips.git
synced 2026-04-10 13:20:42 +00:00
Remove deprecated Catalog v0 support and refactor legacy catalog handling.
- Removed `get_catalog` handler and associated Catalog v0 route. - Updated `get_legacy_catalog` to accept `filename` for enhanced flexibility. - Adjusted integration tests to validate changes and focus on Catalog v1 support. - Refactored `SupportedOperation` definitions to exclude Catalog v0.
This commit is contained in:
parent
048dddf487
commit
84b2c50ed6
6 changed files with 6 additions and 27 deletions
|
|
@ -1696,7 +1696,7 @@ impl FileBackend {
|
|||
Err(RepositoryError::NotFound(format!("manifest for {} not found", fmri)))
|
||||
}
|
||||
/// Fetch legacy catalog content (stub)
|
||||
pub fn fetch_legacy_catalog(&self, _publisher: &str) -> Result<String> {
|
||||
pub fn fetch_legacy_catalog(&self, _publisher: &str, _filename: &str) -> Result<PathBuf> {
|
||||
todo!("Implement legacy catalog format for REST API");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
use axum::{
|
||||
extract::{Path, State, Request},
|
||||
response::{IntoResponse, Response},
|
||||
http::header,
|
||||
};
|
||||
use std::sync::Arc;
|
||||
use crate::repo::DepotRepo;
|
||||
|
|
@ -9,25 +8,12 @@ use crate::errors::DepotError;
|
|||
use tower_http::services::ServeFile;
|
||||
use tower::ServiceExt;
|
||||
|
||||
pub async fn get_catalog(
|
||||
State(repo): State<Arc<DepotRepo>>,
|
||||
Path(publisher): Path<String>,
|
||||
) -> Result<Response, DepotError> {
|
||||
let content = repo.get_legacy_catalog(&publisher)?;
|
||||
|
||||
Ok((
|
||||
[(header::CONTENT_TYPE, "text/plain")],
|
||||
content
|
||||
).into_response())
|
||||
}
|
||||
|
||||
pub async fn get_catalog_v1(
|
||||
State(repo): State<Arc<DepotRepo>>,
|
||||
Path((publisher, filename)): Path<(String, String)>,
|
||||
req: Request,
|
||||
) -> Result<Response, DepotError> {
|
||||
let path = repo.get_catalog_file_path(&publisher, &filename)
|
||||
.ok_or_else(|| DepotError::Repo(libips::repository::RepositoryError::NotFound(filename.clone())))?;
|
||||
let path = repo.get_legacy_catalog(&publisher, &filename)?;
|
||||
|
||||
let service = ServeFile::new(path);
|
||||
let result = service.oneshot(req).await;
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ pub async fn get_versions() -> impl IntoResponse {
|
|||
operations: vec![
|
||||
SupportedOperation { op: Operation::Info, versions: vec![0] },
|
||||
SupportedOperation { op: Operation::Versions, versions: vec![0] },
|
||||
SupportedOperation { op: Operation::Catalog, versions: vec![0, 1] },
|
||||
SupportedOperation { op: Operation::Catalog, versions: vec![1] },
|
||||
SupportedOperation { op: Operation::Manifest, versions: vec![0, 1] },
|
||||
SupportedOperation { op: Operation::File, versions: vec![0, 1] },
|
||||
SupportedOperation { op: Operation::Publisher, versions: vec![0, 1] },
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ use crate::http::handlers::{versions, catalog, manifest, file, info, publisher};
|
|||
pub fn app_router(state: Arc<DepotRepo>) -> Router {
|
||||
Router::new()
|
||||
.route("/versions/0/", get(versions::get_versions))
|
||||
.route("/{publisher}/catalog/0/", get(catalog::get_catalog))
|
||||
.route("/{publisher}/catalog/1/{filename}", get(catalog::get_catalog_v1))
|
||||
.route("/{publisher}/manifest/0/{fmri}", get(manifest::get_manifest))
|
||||
.route("/{publisher}/manifest/1/{fmri}", get(manifest::get_manifest))
|
||||
|
|
|
|||
|
|
@ -36,9 +36,9 @@ impl DepotRepo {
|
|||
backend.fetch_manifest_text(publisher, fmri).map_err(DepotError::Repo)
|
||||
}
|
||||
|
||||
pub fn get_legacy_catalog(&self, publisher: &str) -> Result<String> {
|
||||
pub fn get_legacy_catalog(&self, publisher: &str, filename: &str) -> Result<PathBuf> {
|
||||
let backend = self.backend.lock().map_err(|e| DepotError::Server(format!("Lock poisoned: {}", e)))?;
|
||||
backend.fetch_legacy_catalog(publisher).map_err(DepotError::Repo)
|
||||
backend.fetch_legacy_catalog(publisher, filename).map_err(DepotError::Repo)
|
||||
}
|
||||
|
||||
pub fn get_catalog_file_path(&self, publisher: &str, filename: &str) -> Option<PathBuf> {
|
||||
|
|
|
|||
|
|
@ -101,16 +101,10 @@ async fn test_depot_server() {
|
|||
assert!(resp.status().is_success());
|
||||
let text = resp.text().await.unwrap();
|
||||
assert!(text.contains("pkg-server pkg6depotd-0.5.1"));
|
||||
assert!(text.contains("catalog 0 1"));
|
||||
assert!(text.contains("catalog 1"));
|
||||
assert!(text.contains("manifest 0 1"));
|
||||
|
||||
// 2. Test Catalog
|
||||
// Catalog v0 stub check
|
||||
/*
|
||||
let catalog_url = format!("{}/test/catalog/0/", base_url);
|
||||
let resp = client.get(&catalog_url).send().await.unwrap();
|
||||
assert!(resp.status().is_success());
|
||||
*/
|
||||
|
||||
// Test Catalog v1
|
||||
let catalog_v1_url = format!("{}/test/catalog/1/catalog.attrs", base_url);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue