diff --git a/libips/src/repository/file_backend.rs b/libips/src/repository/file_backend.rs index 6ca72a1..4cae015 100644 --- a/libips/src/repository/file_backend.rs +++ b/libips/src/repository/file_backend.rs @@ -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 { + pub fn fetch_legacy_catalog(&self, _publisher: &str, _filename: &str) -> Result { todo!("Implement legacy catalog format for REST API"); } diff --git a/pkg6depotd/src/http/handlers/catalog.rs b/pkg6depotd/src/http/handlers/catalog.rs index 2362d5e..e9dae32 100644 --- a/pkg6depotd/src/http/handlers/catalog.rs +++ b/pkg6depotd/src/http/handlers/catalog.rs @@ -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>, - Path(publisher): Path, -) -> Result { - 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>, Path((publisher, filename)): Path<(String, String)>, req: Request, ) -> Result { - 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; diff --git a/pkg6depotd/src/http/handlers/versions.rs b/pkg6depotd/src/http/handlers/versions.rs index 8d2152e..ee69ead 100644 --- a/pkg6depotd/src/http/handlers/versions.rs +++ b/pkg6depotd/src/http/handlers/versions.rs @@ -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] }, diff --git a/pkg6depotd/src/http/routes.rs b/pkg6depotd/src/http/routes.rs index 701bc3c..b8700eb 100644 --- a/pkg6depotd/src/http/routes.rs +++ b/pkg6depotd/src/http/routes.rs @@ -9,7 +9,6 @@ use crate::http::handlers::{versions, catalog, manifest, file, info, publisher}; pub fn app_router(state: Arc) -> 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)) diff --git a/pkg6depotd/src/repo.rs b/pkg6depotd/src/repo.rs index 4b61fd2..30ca92a 100644 --- a/pkg6depotd/src/repo.rs +++ b/pkg6depotd/src/repo.rs @@ -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 { + pub fn get_legacy_catalog(&self, publisher: &str, filename: &str) -> Result { 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 { diff --git a/pkg6depotd/tests/integration_tests.rs b/pkg6depotd/tests/integration_tests.rs index 1c1ba40..e88aa4e 100644 --- a/pkg6depotd/tests/integration_tests.rs +++ b/pkg6depotd/tests/integration_tests.rs @@ -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);