mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-30 13:31:32 +00:00
Package files carry type specific properties like `debian.distribution`,
`debian.component`, `rpm.group` or `alpine.branch` that decide where a
file lives in a registry, but the API never returned them. A client
listing `GET /packages/{owner}/{type}/{name}/{version}/files` could not
tell which distribution or component a file belongs to, or tell apart
same-named files in different ones. Tools copying packages between
instances, like https://gitea.com/gitea/importer, need them to re-upload
a file to the same place.
This adds a `properties` map to `PackageFile`, limited to the properties
that locate a file. Internal ones like the rpm, alpine, arch and conda
metadata or the Debian control file stay hidden, as they can be many MiB
per file.
Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
52 lines
1.5 KiB
Go
52 lines
1.5 KiB
Go
// Copyright 2021 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package structs
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// Package represents a package
|
|
type Package struct {
|
|
// The unique identifier of the package
|
|
ID int64 `json:"id"`
|
|
// The owner of the package
|
|
Owner *User `json:"owner"`
|
|
// The repository that contains this package
|
|
Repository *Repository `json:"repository"`
|
|
// The user who created this package
|
|
Creator *User `json:"creator"`
|
|
// The type of the package (e.g., npm, maven, docker)
|
|
Type string `json:"type"`
|
|
// The name of the package
|
|
Name string `json:"name"`
|
|
// The version of the package
|
|
Version string `json:"version"`
|
|
// The HTML URL to view the package
|
|
HTMLURL string `json:"html_url"`
|
|
// swagger:strfmt date-time
|
|
// The date and time when the package was created
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
// PackageFile represents a package file
|
|
type PackageFile struct {
|
|
// The unique identifier of the package file
|
|
ID int64 `json:"id"`
|
|
// The size of the package file in bytes
|
|
Size int64 `json:"size"`
|
|
// The name of the package file
|
|
Name string `json:"name"`
|
|
// The MD5 hash of the package file
|
|
HashMD5 string `json:"md5"`
|
|
// The SHA1 hash of the package file
|
|
HashSHA1 string `json:"sha1"`
|
|
// The SHA256 hash of the package file
|
|
HashSHA256 string `json:"sha256"`
|
|
// The SHA512 hash of the package file
|
|
HashSHA512 string `json:"sha512"`
|
|
// The type specific properties locating the package file, e.g. the distribution and component of a Debian package
|
|
Properties map[string]string `json:"properties,omitempty"`
|
|
}
|