From 69f495000113ad7b53578414b795b28c8793daac Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Thu, 31 Mar 2022 21:47:39 +0000 Subject: [PATCH 1/2] Increment counter on manifest download. --- routers/api/packages/container/container.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/routers/api/packages/container/container.go b/routers/api/packages/container/container.go index f0b1fafd26d3..ddac82ca7b53 100644 --- a/routers/api/packages/container/container.go +++ b/routers/api/packages/container/container.go @@ -513,6 +513,10 @@ func GetManifest(ctx *context.Context) { } defer s.Close() + if err := packages_model.IncrementDownloadCounter(ctx, manifest.File.VersionID); err != nil { + log.Error("Error incrementing download counter: %v", err) + } + setResponseHeaders(ctx.Resp, &containerHeaders{ ContentDigest: manifest.Properties.GetByName(container_module.PropertyDigest), ContentType: manifest.Properties.GetByName(container_module.PropertyMediaType), From 6a15f99eff160e6c9792a06a8cdb791ef8d31b3c Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Thu, 31 Mar 2022 21:59:33 +0000 Subject: [PATCH 2/2] Refactor GetPackageFileStream method. --- routers/api/packages/container/container.go | 8 ++------ routers/api/packages/nuget/nuget.go | 8 +------- routers/web/user/package.go | 1 - services/packages/packages.go | 8 ++++---- 4 files changed, 7 insertions(+), 18 deletions(-) diff --git a/routers/api/packages/container/container.go b/routers/api/packages/container/container.go index ddac82ca7b53..08b6b421b084 100644 --- a/routers/api/packages/container/container.go +++ b/routers/api/packages/container/container.go @@ -367,7 +367,7 @@ func GetBlob(ctx *context.Context) { return } - s, err := packages_module.NewContentStore().Get(packages_module.BlobHash256Key(blob.Blob.HashSHA256)) + s, _, err := packages_service.GetPackageFileStream(ctx, blob.File) if err != nil { apiError(ctx, http.StatusInternalServerError, err) return @@ -506,17 +506,13 @@ func GetManifest(ctx *context.Context) { return } - s, err := packages_module.NewContentStore().Get(packages_module.BlobHash256Key(manifest.Blob.HashSHA256)) + s, _, err := packages_service.GetPackageFileStream(ctx, manifest.File) if err != nil { apiError(ctx, http.StatusInternalServerError, err) return } defer s.Close() - if err := packages_model.IncrementDownloadCounter(ctx, manifest.File.VersionID); err != nil { - log.Error("Error incrementing download counter: %v", err) - } - setResponseHeaders(ctx.Resp, &containerHeaders{ ContentDigest: manifest.Properties.GetByName(container_module.PropertyDigest), ContentType: manifest.Properties.GetByName(container_module.PropertyMediaType), diff --git a/routers/api/packages/nuget/nuget.go b/routers/api/packages/nuget/nuget.go index f3bc5861259c..3af7155fae6d 100644 --- a/routers/api/packages/nuget/nuget.go +++ b/routers/api/packages/nuget/nuget.go @@ -376,13 +376,7 @@ func DownloadSymbolFile(ctx *context.Context) { return } - pv, err := packages_model.GetVersionByID(ctx, pfs[0].VersionID) - if err != nil { - apiError(ctx, http.StatusInternalServerError, err) - return - } - - s, _, err := packages_service.GetPackageFileStream(ctx, pv, pfs[0]) + s, _, err := packages_service.GetPackageFileStream(ctx, pfs[0]) if err != nil { if err == packages_model.ErrPackageNotExist || err == packages_model.ErrPackageFileNotExist { apiError(ctx, http.StatusNotFound, err) diff --git a/routers/web/user/package.go b/routers/web/user/package.go index 8a5294dce1ec..edbb4aadf6fd 100644 --- a/routers/web/user/package.go +++ b/routers/web/user/package.go @@ -331,7 +331,6 @@ func DownloadPackageFile(ctx *context.Context) { s, _, err := packages_service.GetPackageFileStream( ctx, - ctx.Package.Descriptor.Version, pf, ) if err != nil { diff --git a/services/packages/packages.go b/services/packages/packages.go index b26e60c71185..7f90f80bafc2 100644 --- a/services/packages/packages.go +++ b/services/packages/packages.go @@ -426,7 +426,7 @@ func GetFileStreamByPackageVersionAndFileID(ctx context.Context, owner *user_mod return nil, nil, err } - return GetPackageFileStream(ctx, pv, pf) + return GetPackageFileStream(ctx, pf) } // GetFileStreamByPackageVersion returns the content of the specific package file @@ -436,11 +436,11 @@ func GetFileStreamByPackageVersion(ctx context.Context, pv *packages_model.Packa return nil, nil, err } - return GetPackageFileStream(ctx, pv, pf) + return GetPackageFileStream(ctx, pf) } // GetPackageFileStream returns the content of the specific package file -func GetPackageFileStream(ctx context.Context, pv *packages_model.PackageVersion, pf *packages_model.PackageFile) (io.ReadCloser, *packages_model.PackageFile, error) { +func GetPackageFileStream(ctx context.Context, pf *packages_model.PackageFile) (io.ReadCloser, *packages_model.PackageFile, error) { pb, err := packages_model.GetBlobByID(ctx, pf.BlobID) if err != nil { return nil, nil, err @@ -449,7 +449,7 @@ func GetPackageFileStream(ctx context.Context, pv *packages_model.PackageVersion s, err := packages_module.NewContentStore().Get(packages_module.BlobHash256Key(pb.HashSHA256)) if err == nil { if pf.IsLead { - if err := packages_model.IncrementDownloadCounter(ctx, pv.ID); err != nil { + if err := packages_model.IncrementDownloadCounter(ctx, pf.VersionID); err != nil { log.Error("Error incrementing download counter: %v", err) } }