Backport #29531 by wxiaoguang Add two "HTMLURL" methods for PackageDescriptor. And rename "FullWebLink" to "VersionWebLink" Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>tags/v1.21.8
@@ -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) |
@@ -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, | |||
}, | |||
}, |
@@ -161,7 +161,7 @@ func RedirectToLastVersion(ctx *context.Context) { | |||
return | |||
} | |||
ctx.Redirect(pd.FullWebLink()) | |||
ctx.Redirect(pd.VersionWebLink()) | |||
} | |||
// ViewPackageVersion displays a single package version |
@@ -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 | |||
} | |||