diff --git a/routers/api/packages/cargo/cargo.go b/routers/api/packages/cargo/cargo.go index 6c8d04bf507..c0ad0f0f039 100644 --- a/routers/api/packages/cargo/cargo.go +++ b/routers/api/packages/cargo/cargo.go @@ -178,11 +178,7 @@ func DownloadPackageFile(ctx *context.Context) { ctx.Req.Method, ) if err != nil { - if errors.Is(err, packages_model.ErrPackageNotExist) || errors.Is(err, packages_model.ErrPackageFileNotExist) { - apiError(ctx, http.StatusNotFound, err) - return - } - apiError(ctx, http.StatusInternalServerError, err) + apiError(ctx, helper.PackageErrorStatus(err), err) return } diff --git a/routers/api/packages/composer/composer.go b/routers/api/packages/composer/composer.go index f09263a9233..744e8cd9ad1 100644 --- a/routers/api/packages/composer/composer.go +++ b/routers/api/packages/composer/composer.go @@ -170,11 +170,7 @@ func DownloadPackageFile(ctx *context.Context) { ctx.Req.Method, ) if err != nil { - if errors.Is(err, packages_model.ErrPackageNotExist) || errors.Is(err, packages_model.ErrPackageFileNotExist) { - apiError(ctx, http.StatusNotFound, err) - return - } - apiError(ctx, http.StatusInternalServerError, err) + apiError(ctx, helper.PackageErrorStatus(err), err) return } diff --git a/routers/api/packages/conan/conan.go b/routers/api/packages/conan/conan.go index cbf23aa5015..ff6237de4bb 100644 --- a/routers/api/packages/conan/conan.go +++ b/routers/api/packages/conan/conan.go @@ -498,11 +498,7 @@ func downloadFile(ctx *context.Context, fileFilter container.Set[string], fileKe ctx.Req.Method, ) if err != nil { - if errors.Is(err, packages_model.ErrPackageNotExist) || errors.Is(err, packages_model.ErrPackageFileNotExist) { - apiError(ctx, http.StatusNotFound, err) - return - } - apiError(ctx, http.StatusInternalServerError, err) + apiError(ctx, helper.PackageErrorStatus(err), err) return } diff --git a/routers/api/packages/debian/debian.go b/routers/api/packages/debian/debian.go index ee9d4d554a8..6ccaf15fd00 100644 --- a/routers/api/packages/debian/debian.go +++ b/routers/api/packages/debian/debian.go @@ -68,11 +68,7 @@ func GetRepositoryFile(ctx *context.Context) { ctx.Req.Method, ) if err != nil { - if errors.Is(err, packages_model.ErrPackageNotExist) || errors.Is(err, packages_model.ErrPackageFileNotExist) { - apiError(ctx, http.StatusNotFound, err) - } else { - apiError(ctx, http.StatusInternalServerError, err) - } + apiError(ctx, helper.PackageErrorStatus(err), err) return } diff --git a/routers/api/packages/generic/generic.go b/routers/api/packages/generic/generic.go index 32abf661aab..f1ad4efe9fe 100644 --- a/routers/api/packages/generic/generic.go +++ b/routers/api/packages/generic/generic.go @@ -43,11 +43,7 @@ func DownloadPackageFile(ctx *context.Context) { ctx.Req.Method, ) if err != nil { - if errors.Is(err, packages_model.ErrPackageNotExist) || errors.Is(err, packages_model.ErrPackageFileNotExist) { - apiError(ctx, http.StatusNotFound, err) - return - } - apiError(ctx, http.StatusInternalServerError, err) + apiError(ctx, helper.PackageErrorStatus(err), err) return } @@ -180,11 +176,7 @@ func DeletePackageFile(ctx *context.Context) { return pv, pf, nil }() if err != nil { - if errors.Is(err, packages_model.ErrPackageNotExist) || errors.Is(err, packages_model.ErrPackageFileNotExist) { - apiError(ctx, http.StatusNotFound, err) - return - } - apiError(ctx, http.StatusInternalServerError, err) + apiError(ctx, helper.PackageErrorStatus(err), err) return } diff --git a/routers/api/packages/helper/helper.go b/routers/api/packages/helper/helper.go index 309d5ff4a1c..3961b1296c8 100644 --- a/routers/api/packages/helper/helper.go +++ b/routers/api/packages/helper/helper.go @@ -4,6 +4,7 @@ package helper import ( + "errors" "fmt" "io" "net/http" @@ -12,9 +13,18 @@ import ( packages_model "gitea.dev/models/packages" "gitea.dev/modules/log" "gitea.dev/modules/setting" + "gitea.dev/modules/util" "gitea.dev/services/context" ) +// PackageErrorStatus returns the status to report for a package lookup error +func PackageErrorStatus(err error) int { + if errors.Is(err, util.ErrNotExist) { + return http.StatusNotFound + } + return http.StatusInternalServerError +} + // ProcessErrorForUser logs the error and returns a user-error message for the end user. // If the status is http.StatusInternalServerError, the message is stripped for non-admin users in production. func ProcessErrorForUser(ctx *context.Context, status int, errObj any) string { diff --git a/routers/api/packages/npm/npm.go b/routers/api/packages/npm/npm.go index e2b4474bc0e..bae2b2d355a 100644 --- a/routers/api/packages/npm/npm.go +++ b/routers/api/packages/npm/npm.go @@ -99,11 +99,7 @@ func DownloadPackageFile(ctx *context.Context) { ctx.Req.Method, ) if err != nil { - if errors.Is(err, packages_model.ErrPackageNotExist) || errors.Is(err, packages_model.ErrPackageFileNotExist) { - apiError(ctx, http.StatusNotFound, err) - return - } - apiError(ctx, http.StatusInternalServerError, err) + apiError(ctx, helper.PackageErrorStatus(err), err) return } diff --git a/routers/api/packages/nuget/nuget.go b/routers/api/packages/nuget/nuget.go index 4c3e1f8c8cc..8aa21e6a10a 100644 --- a/routers/api/packages/nuget/nuget.go +++ b/routers/api/packages/nuget/nuget.go @@ -414,11 +414,7 @@ func DownloadPackageFile(ctx *context.Context) { ctx.Req.Method, ) if err != nil { - if errors.Is(err, packages_model.ErrPackageNotExist) || errors.Is(err, packages_model.ErrPackageFileNotExist) { - apiError(ctx, http.StatusNotFound, err) - return - } - apiError(ctx, http.StatusInternalServerError, err) + apiError(ctx, helper.PackageErrorStatus(err), err) return } @@ -667,11 +663,7 @@ func DownloadSymbolFile(ctx *context.Context) { s, u, pf, err := packages_service.OpenFileForDownload(ctx, pfs[0], ctx.Req.Method) if err != nil { - if errors.Is(err, packages_model.ErrPackageNotExist) || errors.Is(err, packages_model.ErrPackageFileNotExist) { - apiError(ctx, http.StatusNotFound, err) - return - } - apiError(ctx, http.StatusInternalServerError, err) + apiError(ctx, helper.PackageErrorStatus(err), err) return } diff --git a/routers/api/packages/pypi/pypi.go b/routers/api/packages/pypi/pypi.go index 3526d1aac2d..c34e5902a4a 100644 --- a/routers/api/packages/pypi/pypi.go +++ b/routers/api/packages/pypi/pypi.go @@ -5,7 +5,6 @@ package pypi import ( "encoding/hex" - "errors" "io" "net/http" "regexp" @@ -95,11 +94,7 @@ func DownloadPackageFile(ctx *context.Context) { ctx.Req.Method, ) if err != nil { - if errors.Is(err, packages_model.ErrPackageNotExist) || errors.Is(err, packages_model.ErrPackageFileNotExist) { - apiError(ctx, http.StatusNotFound, err) - return - } - apiError(ctx, http.StatusInternalServerError, err) + apiError(ctx, helper.PackageErrorStatus(err), err) return } diff --git a/routers/api/packages/terraform/terraform.go b/routers/api/packages/terraform/terraform.go index ee188e685fe..0bc6dde5d4e 100644 --- a/routers/api/packages/terraform/terraform.go +++ b/routers/api/packages/terraform/terraform.go @@ -70,11 +70,7 @@ func streamState(ctx *context.Context, name, serial string) { ctx.Req.Method, ) if err != nil { - if errors.Is(err, packages_model.ErrPackageNotExist) || errors.Is(err, packages_model.ErrPackageFileNotExist) { - apiError(ctx, http.StatusNotFound, err) - return - } - apiError(ctx, http.StatusInternalServerError, err) + apiError(ctx, helper.PackageErrorStatus(err), err) return } diff --git a/routers/api/packages/vagrant/vagrant.go b/routers/api/packages/vagrant/vagrant.go index 5f275fcb48b..07038bcf0ee 100644 --- a/routers/api/packages/vagrant/vagrant.go +++ b/routers/api/packages/vagrant/vagrant.go @@ -4,7 +4,6 @@ package vagrant import ( - "errors" "fmt" "io" "net/http" @@ -231,11 +230,7 @@ func DownloadPackageFile(ctx *context.Context) { ctx.Req.Method, ) if err != nil { - if errors.Is(err, packages_model.ErrPackageNotExist) || errors.Is(err, packages_model.ErrPackageFileNotExist) { - apiError(ctx, http.StatusNotFound, err) - return - } - apiError(ctx, http.StatusInternalServerError, err) + apiError(ctx, helper.PackageErrorStatus(err), err) return }