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