This change updates all dependencies. Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
319 lines
13 KiB
Go
319 lines
13 KiB
Go
// Copyright 2020 The go-github AUTHORS. All rights reserved.
|
|
//
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package github
|
|
|
|
import (
|
|
"encoding/json"
|
|
)
|
|
|
|
// Package represents a GitHub package.
|
|
type Package struct {
|
|
ID *int64 `json:"id,omitempty"`
|
|
Name *string `json:"name,omitempty"`
|
|
PackageType *string `json:"package_type,omitempty"` // One of "npm", "maven", "rubygems", "docker", "nuget", "container". For webhook events "container" is "CONTAINER"
|
|
HTMLURL *string `json:"html_url,omitempty"`
|
|
Visibility *string `json:"visibility,omitempty"`
|
|
Owner *User `json:"owner,omitempty"`
|
|
Repository *Repository `json:"repository,omitempty"`
|
|
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
|
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
|
|
|
// The following are only populated for webhook events
|
|
Namespace *string `json:"namespace,omitempty"`
|
|
Description *string `json:"description,omitempty"`
|
|
Ecosystem *string `json:"ecosystem,omitempty"`
|
|
PackageVersion *PackageVersion `json:"package_version,omitempty"`
|
|
Registry *PackageRegistry `json:"registry,omitempty"`
|
|
|
|
// The following are NOT populated for webhook events
|
|
URL *string `json:"url,omitempty"`
|
|
VersionCount *int64 `json:"version_count,omitempty"`
|
|
}
|
|
|
|
func (p Package) String() string {
|
|
return Stringify(p)
|
|
}
|
|
|
|
// PackageVersion represents a GitHub package version.
|
|
type PackageVersion struct {
|
|
ID *int64 `json:"id,omitempty"`
|
|
Name *string `json:"name,omitempty"`
|
|
URL *string `json:"url,omitempty"`
|
|
PackageHTMLURL *string `json:"package_html_url,omitempty"`
|
|
License *string `json:"license,omitempty"`
|
|
Description *string `json:"description,omitempty"`
|
|
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
|
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
|
Metadata json.RawMessage `json:"metadata,omitempty"` // For webhook events this will be []interface, else it will be of type PackageMetadata
|
|
|
|
// The following are only populated for webhook events
|
|
Version *string `json:"version,omitempty"`
|
|
Summary *string `json:"summary,omitempty"`
|
|
Body json.RawMessage `json:"body,omitempty"` // Can either be a string or of type PackageVersionBody
|
|
BodyHTML *string `json:"body_html,omitempty"`
|
|
Release *PackageRelease `json:"release,omitempty"`
|
|
Manifest *string `json:"manifest,omitempty"`
|
|
HTMLURL *string `json:"html_url,omitempty"`
|
|
TagName *string `json:"tag_name,omitempty"`
|
|
TargetCommitish *string `json:"target_commitish,omitempty"`
|
|
TargetOID *string `json:"target_oid,omitempty"`
|
|
Draft *bool `json:"draft,omitempty"`
|
|
Prerelease *bool `json:"prerelease,omitempty"`
|
|
ContainerMetadata *PackageEventContainerMetadata `json:"container_metadata,omitempty"`
|
|
DockerMetadata []interface{} `json:"docker_metadata,omitempty"`
|
|
NPMMetadata *PackageNPMMetadata `json:"npm_metadata,omitempty"`
|
|
NugetMetadata []*PackageNugetMetadata `json:"nuget_metadata,omitempty"`
|
|
RubyMetadata map[string]any `json:"ruby_metadata,omitempty"`
|
|
PackageFiles []*PackageFile `json:"package_files,omitempty"`
|
|
PackageURL *string `json:"package_url,omitempty"`
|
|
Author *User `json:"author,omitempty"`
|
|
SourceURL *string `json:"source_url,omitempty"`
|
|
InstallationCommand *string `json:"installation_command,omitempty"`
|
|
|
|
// The following are NOT populated for webhook events
|
|
DeletedAt *Timestamp `json:"deleted_at,omitempty"`
|
|
}
|
|
|
|
// GetBody returns the body field as a string if it's valid.
|
|
func (pv *PackageVersion) GetBody() (body string, ok bool) {
|
|
if pv == nil || pv.Body == nil {
|
|
return "", false
|
|
}
|
|
|
|
if err := json.Unmarshal(pv.Body, &body); err != nil {
|
|
return "", false
|
|
}
|
|
|
|
return body, true
|
|
}
|
|
|
|
// GetBodyAsPackageVersionBody returns the body field as a PackageVersionBody if it's valid.
|
|
func (pv *PackageVersion) GetBodyAsPackageVersionBody() (body *PackageVersionBody, ok bool) {
|
|
if pv == nil || pv.Body == nil {
|
|
return nil, false
|
|
}
|
|
|
|
if err := json.Unmarshal(pv.Body, &body); err != nil {
|
|
return nil, false
|
|
}
|
|
|
|
return body, true
|
|
}
|
|
|
|
// GetMetadata returns the metadata field as PackageMetadata if it's valid.
|
|
func (pv *PackageVersion) GetMetadata() (metadata *PackageMetadata, ok bool) {
|
|
if pv == nil || pv.Metadata == nil {
|
|
return nil, false
|
|
}
|
|
|
|
if err := json.Unmarshal(pv.Metadata, &metadata); err != nil {
|
|
return nil, false
|
|
}
|
|
|
|
return metadata, true
|
|
}
|
|
|
|
// GetRawMetadata returns the metadata field as a json.RawMessage.
|
|
func (pv *PackageVersion) GetRawMetadata() json.RawMessage {
|
|
if pv == nil || pv.Metadata == nil {
|
|
return json.RawMessage{}
|
|
}
|
|
|
|
return pv.Metadata
|
|
}
|
|
|
|
func (pv PackageVersion) String() string {
|
|
return Stringify(pv)
|
|
}
|
|
|
|
// PackageRelease represents a GitHub package version release.
|
|
type PackageRelease struct {
|
|
URL *string `json:"url,omitempty"`
|
|
HTMLURL *string `json:"html_url,omitempty"`
|
|
ID *int64 `json:"id,omitempty"`
|
|
TagName *string `json:"tag_name,omitempty"`
|
|
TargetCommitish *string `json:"target_commitish,omitempty"`
|
|
Name *string `json:"name,omitempty"`
|
|
Draft *bool `json:"draft,omitempty"`
|
|
Author *User `json:"author,omitempty"`
|
|
Prerelease *bool `json:"prerelease,omitempty"`
|
|
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
|
PublishedAt *Timestamp `json:"published_at,omitempty"`
|
|
}
|
|
|
|
func (r PackageRelease) String() string {
|
|
return Stringify(r)
|
|
}
|
|
|
|
// PackageFile represents a GitHub package version release file.
|
|
type PackageFile struct {
|
|
DownloadURL *string `json:"download_url,omitempty"`
|
|
ID *int64 `json:"id,omitempty"`
|
|
Name *string `json:"name,omitempty"`
|
|
SHA256 *string `json:"sha256,omitempty"`
|
|
SHA1 *string `json:"sha1,omitempty"`
|
|
MD5 *string `json:"md5,omitempty"`
|
|
ContentType *string `json:"content_type,omitempty"`
|
|
State *string `json:"state,omitempty"`
|
|
Author *User `json:"author,omitempty"`
|
|
Size *int64 `json:"size,omitempty"`
|
|
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
|
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
|
}
|
|
|
|
func (pf PackageFile) String() string {
|
|
return Stringify(pf)
|
|
}
|
|
|
|
// PackageRegistry represents a GitHub package registry.
|
|
type PackageRegistry struct {
|
|
AboutURL *string `json:"about_url,omitempty"`
|
|
Name *string `json:"name,omitempty"`
|
|
Type *string `json:"type,omitempty"`
|
|
URL *string `json:"url,omitempty"`
|
|
Vendor *string `json:"vendor,omitempty"`
|
|
}
|
|
|
|
func (r PackageRegistry) String() string {
|
|
return Stringify(r)
|
|
}
|
|
|
|
// PackageListOptions represents the optional list options for a package.
|
|
type PackageListOptions struct {
|
|
// Visibility of packages "public", "internal" or "private".
|
|
Visibility *string `url:"visibility,omitempty"`
|
|
|
|
// PackageType represents the type of package.
|
|
// It can be one of "npm", "maven", "rubygems", "nuget", "docker", or "container".
|
|
PackageType *string `url:"package_type,omitempty"`
|
|
|
|
// State of package either "active" or "deleted".
|
|
State *string `url:"state,omitempty"`
|
|
|
|
ListOptions
|
|
}
|
|
|
|
// PackageMetadata represents metadata from a package.
|
|
type PackageMetadata struct {
|
|
PackageType *string `json:"package_type,omitempty"`
|
|
Container *PackageContainerMetadata `json:"container,omitempty"`
|
|
}
|
|
|
|
func (r PackageMetadata) String() string {
|
|
return Stringify(r)
|
|
}
|
|
|
|
// PackageContainerMetadata represents container metadata for docker container packages.
|
|
type PackageContainerMetadata struct {
|
|
Tags []string `json:"tags,omitempty"`
|
|
}
|
|
|
|
func (r PackageContainerMetadata) String() string {
|
|
return Stringify(r)
|
|
}
|
|
|
|
// PackageVersionBody represents the body field of a package version.
|
|
type PackageVersionBody struct {
|
|
Repo *Repository `json:"repository,omitempty"`
|
|
Info *PackageVersionBodyInfo `json:"info,omitempty"`
|
|
}
|
|
|
|
func (b PackageVersionBody) String() string {
|
|
return Stringify(b)
|
|
}
|
|
|
|
// PackageVersionBodyInfo represents the info field of a PackageVersionBody.
|
|
type PackageVersionBodyInfo struct {
|
|
Type *string `json:"type,omitempty"`
|
|
OID *string `json:"oid,omitempty"`
|
|
Mode *int64 `json:"mode,omitempty"`
|
|
Name *string `json:"name,omitempty"`
|
|
Path *string `json:"path,omitempty"`
|
|
Size *int64 `json:"size,omitempty"`
|
|
Collection *bool `json:"collection,omitempty"`
|
|
}
|
|
|
|
func (bi PackageVersionBodyInfo) String() string {
|
|
return Stringify(bi)
|
|
}
|
|
|
|
// PackageEventContainerMetadata represents metadata for container packages as part of a webhook event.
|
|
// See also PackageContainerMetadata.
|
|
type PackageEventContainerMetadata struct {
|
|
Labels map[string]any `json:"labels,omitempty"`
|
|
Manifest map[string]any `json:"manifest,omitempty"`
|
|
Tag *PackageEventContainerMetadataTag `json:"tag,omitempty"`
|
|
}
|
|
|
|
func (m PackageEventContainerMetadata) String() string {
|
|
return Stringify(m)
|
|
}
|
|
|
|
// PackageEventContainerMetadataTag represents a tag of a GitHub container package.
|
|
type PackageEventContainerMetadataTag struct {
|
|
Name *string `json:"name,omitempty"`
|
|
Digest *string `json:"digest,omitempty"`
|
|
}
|
|
|
|
func (mt PackageEventContainerMetadataTag) String() string {
|
|
return Stringify(mt)
|
|
}
|
|
|
|
// PackageNugetMetadata represents nuget metadata for a GitHub package.
|
|
type PackageNugetMetadata struct {
|
|
ID json.RawMessage `json:"id,omitempty"` // Can either be a int64 or string
|
|
Name *string `json:"name,omitempty"`
|
|
Value json.RawMessage `json:"value,omitempty"` // Can either be a bool, string, integer or object
|
|
}
|
|
|
|
func (nm PackageNugetMetadata) String() string {
|
|
return Stringify(nm)
|
|
}
|
|
|
|
// PackageNPMMetadata represents NPM metadata for a GitHub package.
|
|
type PackageNPMMetadata struct {
|
|
Name *string `json:"name,omitempty"`
|
|
Version *string `json:"version,omitempty"`
|
|
NPMUser *string `json:"npm_user,omitempty"`
|
|
Author map[string]string `json:"author,omitempty"`
|
|
Bugs map[string]string `json:"bugs,omitempty"`
|
|
Dependencies map[string]string `json:"dependencies,omitempty"`
|
|
DevDependencies map[string]string `json:"dev_dependencies,omitempty"`
|
|
PeerDependencies map[string]string `json:"peer_dependencies,omitempty"`
|
|
OptionalDependencies map[string]string `json:"optional_dependencies,omitempty"`
|
|
Description *string `json:"description,omitempty"`
|
|
Dist map[string]string `json:"dist,omitempty"`
|
|
GitHead *string `json:"git_head,omitempty"`
|
|
Homepage *string `json:"homepage,omitempty"`
|
|
License *string `json:"license,omitempty"`
|
|
Main *string `json:"main,omitempty"`
|
|
Repository map[string]string `json:"repository,omitempty"`
|
|
Scripts map[string]any `json:"scripts,omitempty"`
|
|
ID *string `json:"id,omitempty"`
|
|
NodeVersion *string `json:"node_version,omitempty"`
|
|
NPMVersion *string `json:"npm_version,omitempty"`
|
|
HasShrinkwrap *bool `json:"has_shrinkwrap,omitempty"`
|
|
Maintainers []interface{} `json:"maintainers,omitempty"`
|
|
Contributors []interface{} `json:"contributors,omitempty"`
|
|
Engines map[string]string `json:"engines,omitempty"`
|
|
Keywords []string `json:"keywords,omitempty"`
|
|
Files []string `json:"files,omitempty"`
|
|
Bin map[string]any `json:"bin,omitempty"`
|
|
Man map[string]any `json:"man,omitempty"`
|
|
Directories map[string]string `json:"directories,omitempty"`
|
|
OS []string `json:"os,omitempty"`
|
|
CPU []string `json:"cpu,omitempty"`
|
|
Readme *string `json:"readme,omitempty"`
|
|
InstallationCommand *string `json:"installation_command,omitempty"`
|
|
ReleaseID *int64 `json:"release_id,omitempty"`
|
|
CommitOID *string `json:"commit_oid,omitempty"`
|
|
PublishedViaActions *bool `json:"published_via_actions,omitempty"`
|
|
DeletedByID *int64 `json:"deleted_by_id,omitempty"`
|
|
}
|
|
|
|
func (nm PackageNPMMetadata) String() string {
|
|
return Stringify(nm)
|
|
}
|