summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian T. T. <109338575+Sebastian-T-T@users.noreply.github.com>2024-12-11 17:20:04 +0100
committerGitHub <noreply@github.com>2024-12-11 16:20:04 +0000
commit874b8484aa9f7e10172fd1a8a7c768e70b36c475 (patch)
tree7a62b0044f1705c422b1bff8cd3f0e6c080e68fb
parent4814f43af778d636f1a920e4fa45d7b173ef4582 (diff)
downloadgitea-874b8484aa9f7e10172fd1a8a7c768e70b36c475.tar.gz
gitea-874b8484aa9f7e10172fd1a8a7c768e70b36c475.zip
Add standard-compliant route to serve outdated R packages (#32783)
The R package repository currently does not have support for older versions of packages which should be stored in a separate /Archive router. This PR remedies that by adding a new path router. I am a member of a group that loves using Gitea and this bug has been annoying us for a long time. Hope it can be merged in time for Gitea 1.23.0. Any feedback much appreciated. Fixes #32782
-rw-r--r--routers/api/packages/api.go1
-rw-r--r--tests/integration/api_packages_cran_test.go8
2 files changed, 9 insertions, 0 deletions
diff --git a/routers/api/packages/api.go b/routers/api/packages/api.go
index 4e194f65fa..47ea7137b8 100644
--- a/routers/api/packages/api.go
+++ b/routers/api/packages/api.go
@@ -358,6 +358,7 @@ func CommonRoutes() *web.Router {
r.Get("/PACKAGES", cran.EnumerateSourcePackages)
r.Get("/PACKAGES{format}", cran.EnumerateSourcePackages)
r.Get("/{filename}", cran.DownloadSourcePackageFile)
+ r.Get("/Archive/{packagename}/{filename}", cran.DownloadSourcePackageFile)
})
r.Put("", reqPackageAccess(perm.AccessModeWrite), cran.UploadSourcePackageFile)
})
diff --git a/tests/integration/api_packages_cran_test.go b/tests/integration/api_packages_cran_test.go
index d307e87d4e..667ba0908c 100644
--- a/tests/integration/api_packages_cran_test.go
+++ b/tests/integration/api_packages_cran_test.go
@@ -115,6 +115,14 @@ func TestPackageCran(t *testing.T) {
MakeRequest(t, req, http.StatusOK)
})
+ t.Run("DownloadArchived", func(t *testing.T) {
+ defer tests.PrintCurrentTest(t)()
+
+ req := NewRequest(t, "GET", fmt.Sprintf("%s/src/contrib/Archive/%s/%s_%s.tar.gz", url, packageName, packageName, packageVersion)).
+ AddBasicAuth(user.Name)
+ MakeRequest(t, req, http.StatusOK)
+ })
+
t.Run("Enumerate", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()