]> source.dussan.org Git - gitea.git/commitdiff
Fix incorrect relative/absolute URL usages (#29531)
authorwxiaoguang <wxiaoguang@gmail.com>
Sat, 2 Mar 2024 17:38:38 +0000 (01:38 +0800)
committerGitHub <noreply@github.com>
Sat, 2 Mar 2024 17:38:38 +0000 (17:38 +0000)
Add two "HTMLURL" methods for PackageDescriptor.
And rename "FullWebLink" to "VersionWebLink"

models/packages/descriptor.go
routers/api/packages/npm/api.go
routers/web/user/package.go
services/convert/package.go

index f849ab5c0417c38588844478c6d0820a19cab6b9..b8ef698d3822a351c0a10030964e2018ed1a5187 100644 (file)
@@ -70,16 +70,26 @@ type PackageFileDescriptor struct {
        Properties PackagePropertyList
 }
 
-// PackageWebLink returns the package web link
+// PackageWebLink returns the relative package web link
 func (pd *PackageDescriptor) PackageWebLink() string {
        return fmt.Sprintf("%s/-/packages/%s/%s", pd.Owner.HomeLink(), string(pd.Package.Type), url.PathEscape(pd.Package.LowerName))
 }
 
-// FullWebLink returns the package version web link
-func (pd *PackageDescriptor) FullWebLink() string {
+// VersionWebLink returns the relative package version web link
+func (pd *PackageDescriptor) VersionWebLink() string {
        return fmt.Sprintf("%s/%s", pd.PackageWebLink(), url.PathEscape(pd.Version.LowerVersion))
 }
 
+// PackageHTMLURL returns the absolute package HTML URL
+func (pd *PackageDescriptor) PackageHTMLURL() string {
+       return fmt.Sprintf("%s/-/packages/%s/%s", pd.Owner.HTMLURL(), string(pd.Package.Type), url.PathEscape(pd.Package.LowerName))
+}
+
+// VersionHTMLURL returns the absolute package version HTML URL
+func (pd *PackageDescriptor) VersionHTMLURL() string {
+       return fmt.Sprintf("%s/%s", pd.PackageHTMLURL(), url.PathEscape(pd.Version.LowerVersion))
+}
+
 // CalculateBlobSize returns the total blobs size in bytes
 func (pd *PackageDescriptor) CalculateBlobSize() int64 {
        size := int64(0)
index 8470874884238380cff7df961bc86488eaf00f70..f8e839c42412e0ab27d8d71ad49509e068f62187 100644 (file)
@@ -12,6 +12,7 @@ import (
 
        packages_model "code.gitea.io/gitea/models/packages"
        npm_module "code.gitea.io/gitea/modules/packages/npm"
+       "code.gitea.io/gitea/modules/setting"
 )
 
 func createPackageMetadataResponse(registryURL string, pds []*packages_model.PackageDescriptor) *npm_module.PackageMetadata {
@@ -98,7 +99,7 @@ func createPackageSearchResponse(pds []*packages_model.PackageDescriptor, total
                                Maintainers: []npm_module.User{}, // npm cli needs this field
                                Keywords:    metadata.Keywords,
                                Links: &npm_module.PackageSearchPackageLinks{
-                                       Registry: pd.FullWebLink(),
+                                       Registry: setting.AppURL + "api/packages/" + pd.Owner.Name + "/npm",
                                        Homepage: metadata.ProjectURL,
                                },
                        },
index 4f3de13dfbced621a90a04d91c4a92fbcd3f7045..3ecc59a2abad38a8c26837bcf08462bd76c5fab0 100644 (file)
@@ -163,7 +163,7 @@ func RedirectToLastVersion(ctx *context.Context) {
                return
        }
 
-       ctx.Redirect(pd.FullWebLink())
+       ctx.Redirect(pd.VersionWebLink())
 }
 
 // ViewPackageVersion displays a single package version
index e90ce8a00f848eb54f626da0db844b56c99dd2b2..b5fca21a3c3a55c02d61e0c2e4e37153b8582d46 100644 (file)
@@ -35,7 +35,7 @@ func ToPackage(ctx context.Context, pd *packages.PackageDescriptor, doer *user_m
                Name:       pd.Package.Name,
                Version:    pd.Version.Version,
                CreatedAt:  pd.Version.CreatedUnix.AsTime(),
-               HTMLURL:    pd.FullWebLink(),
+               HTMLURL:    pd.VersionHTMLURL(),
        }, nil
 }