summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/xanzy/go-gitlab/packages.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/xanzy/go-gitlab/packages.go')
-rw-r--r--vendor/github.com/xanzy/go-gitlab/packages.go168
1 files changed, 168 insertions, 0 deletions
diff --git a/vendor/github.com/xanzy/go-gitlab/packages.go b/vendor/github.com/xanzy/go-gitlab/packages.go
new file mode 100644
index 0000000000..390ada242e
--- /dev/null
+++ b/vendor/github.com/xanzy/go-gitlab/packages.go
@@ -0,0 +1,168 @@
+//
+// Copyright 2021, Kordian Bruck
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+package gitlab
+
+import (
+ "fmt"
+ "net/http"
+ "time"
+)
+
+// PackagesService handles communication with the packages related methods
+// of the GitLab API.
+//
+// GitLab API docs: https://docs.gitlab.com/ee/api/packages.html
+type PackagesService struct {
+ client *Client
+}
+
+// Package represents a GitLab single package.
+//
+// GitLab API docs: https://docs.gitlab.com/ee/api/packages.html
+type Package struct {
+ ID int `json:"id"`
+ Name string `json:"name"`
+ Version string `json:"version"`
+ PackageType string `json:"package_type"`
+ Links *PackageLinks `json:"_links"`
+ CreatedAt *time.Time `json:"created_at"`
+}
+
+func (s Package) String() string {
+ return Stringify(s)
+}
+
+// PackageLinks holds links for itself and deleting.
+type PackageLinks struct {
+ WebPath string `json:"web_path"`
+ DeleteAPIPath string `json:"delete_api_path"`
+}
+
+func (s PackageLinks) String() string {
+ return Stringify(s)
+}
+
+// PackageFile represents one file contained within a package.
+//
+// GitLab API docs: https://docs.gitlab.com/ee/api/packages.html
+type PackageFile struct {
+ ID int `json:"id"`
+ PackageID int `json:"package_id"`
+ CreatedAt *time.Time `json:"created_at"`
+ FileName string `json:"file_name"`
+ Size int `json:"size"`
+ FileMD5 string `json:"file_md5"`
+ FileSHA1 string `json:"file_sha1"`
+ Pipeline *[]Pipeline `json:"pipelines"`
+}
+
+func (s PackageFile) String() string {
+ return Stringify(s)
+}
+
+// ListProjectPackagesOptions are the parameters available in a ListProjectPackages() Operation.
+//
+// GitLab API docs:
+// https://docs.gitlab.com/ee/api/packages.html#within-a-project
+type ListProjectPackagesOptions struct {
+ ListOptions
+ OrderBy *string `url:"order_by,omitempty" json:"order_by,omitempty"`
+ Sort *string `url:"sort,omitempty" json:"sort,omitempty"`
+ PackageType *string `url:"package_type,omitempty" json:"package_type,omitempty"`
+ PackageName *string `url:"package_name,omitempty" json:"package_name,omitempty"`
+ IncludeVersionless *bool `url:"include_versionless,omitempty" json:"include_versionless,omitempty"`
+}
+
+// ListProjectPackages gets a list of packages in a project.
+//
+// GitLab API docs:
+// https://docs.gitlab.com/ee/api/packages.html#within-a-project
+func (s *PackagesService) ListProjectPackages(pid interface{}, opt *ListProjectPackagesOptions, options ...RequestOptionFunc) ([]*Package, *Response, error) {
+ project, err := parseID(pid)
+ if err != nil {
+ return nil, nil, err
+ }
+ u := fmt.Sprintf("projects/%s/packages", pathEscape(project))
+
+ req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ var ps []*Package
+ resp, err := s.client.Do(req, &ps)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return ps, resp, err
+}
+
+// ListPackageFilesOptions represents the available
+// ListPackageFiles() options.
+//
+// GitLab API docs:
+// https://docs.gitlab.com/ee/api/packages.html#list-package-files
+type ListPackageFilesOptions ListOptions
+
+// ListPackageFiles gets a list of files that are within a package
+//
+// GitLab API docs:
+// https://docs.gitlab.com/ee/api/packages.html#list-package-files
+func (s *PackagesService) ListPackageFiles(pid interface{}, pkg int, opt *ListPackageFilesOptions, options ...RequestOptionFunc) ([]*PackageFile, *Response, error) {
+ project, err := parseID(pid)
+ if err != nil {
+ return nil, nil, err
+ }
+ u := fmt.Sprintf(
+ "projects/%s/packages/%d/package_files",
+ pathEscape(project),
+ pkg,
+ )
+
+ req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ var pfs []*PackageFile
+ resp, err := s.client.Do(req, &pfs)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return pfs, resp, err
+}
+
+// DeleteProjectPackage deletes a package in a project.
+//
+// GitLab API docs:
+// https://docs.gitlab.com/ee/api/packages.html#delete-a-project-package
+func (s *PackagesService) DeleteProjectPackage(pid interface{}, pkg int, options ...RequestOptionFunc) (*Response, error) {
+ project, err := parseID(pid)
+ if err != nil {
+ return nil, err
+ }
+ u := fmt.Sprintf("projects/%s/packages/%d", pathEscape(project), pkg)
+
+ req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
+ if err != nil {
+ return nil, err
+ }
+
+ return s.client.Do(req, nil)
+}