You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

package.go 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // Copyright 2021 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package convert
  4. import (
  5. "context"
  6. "code.gitea.io/gitea/models/packages"
  7. access_model "code.gitea.io/gitea/models/perm/access"
  8. user_model "code.gitea.io/gitea/models/user"
  9. api "code.gitea.io/gitea/modules/structs"
  10. )
  11. // ToPackage convert a packages.PackageDescriptor to api.Package
  12. func ToPackage(ctx context.Context, pd *packages.PackageDescriptor, doer *user_model.User) (*api.Package, error) {
  13. var repo *api.Repository
  14. if pd.Repository != nil {
  15. permission, err := access_model.GetUserRepoPermission(ctx, pd.Repository, doer)
  16. if err != nil {
  17. return nil, err
  18. }
  19. if permission.HasAccess() {
  20. repo = ToRepo(ctx, pd.Repository, permission)
  21. }
  22. }
  23. return &api.Package{
  24. ID: pd.Version.ID,
  25. Owner: ToUser(ctx, pd.Owner, doer),
  26. Repository: repo,
  27. Creator: ToUser(ctx, pd.Creator, doer),
  28. Type: string(pd.Package.Type),
  29. Name: pd.Package.Name,
  30. Version: pd.Version.Version,
  31. CreatedAt: pd.Version.CreatedUnix.AsTime(),
  32. HTMLURL: pd.FullWebLink(),
  33. }, nil
  34. }
  35. // ToPackageFile converts packages.PackageFileDescriptor to api.PackageFile
  36. func ToPackageFile(pfd *packages.PackageFileDescriptor) *api.PackageFile {
  37. return &api.PackageFile{
  38. ID: pfd.File.ID,
  39. Size: pfd.Blob.Size,
  40. Name: pfd.File.Name,
  41. HashMD5: pfd.Blob.HashMD5,
  42. HashSHA1: pfd.Blob.HashSHA1,
  43. HashSHA256: pfd.Blob.HashSHA256,
  44. HashSHA512: pfd.Blob.HashSHA512,
  45. }
  46. }