github.com/google/go-github/v64@v64.0.0/github/orgs_packages.go (about)

     1  // Copyright 2021 The go-github AUTHORS. All rights reserved.
     2  //
     3  // Use of this source code is governed by a BSD-style
     4  // license that can be found in the LICENSE file.
     5  
     6  package github
     7  
     8  import (
     9  	"context"
    10  	"fmt"
    11  	"net/url"
    12  )
    13  
    14  // ListPackages lists the packages for an organization.
    15  //
    16  // GitHub API docs: https://docs.github.com/rest/packages/packages#list-packages-for-an-organization
    17  //
    18  //meta:operation GET /orgs/{org}/packages
    19  func (s *OrganizationsService) ListPackages(ctx context.Context, org string, opts *PackageListOptions) ([]*Package, *Response, error) {
    20  	u := fmt.Sprintf("orgs/%v/packages", org)
    21  	u, err := addOptions(u, opts)
    22  	if err != nil {
    23  		return nil, nil, err
    24  	}
    25  
    26  	req, err := s.client.NewRequest("GET", u, nil)
    27  	if err != nil {
    28  		return nil, nil, err
    29  	}
    30  
    31  	var packages []*Package
    32  	resp, err := s.client.Do(ctx, req, &packages)
    33  	if err != nil {
    34  		return nil, resp, err
    35  	}
    36  
    37  	return packages, resp, nil
    38  }
    39  
    40  // GetPackage gets a package by name from an organization.
    41  //
    42  // Note that packageName is escaped for the URL path so that you don't need to.
    43  //
    44  // GitHub API docs: https://docs.github.com/rest/packages/packages#get-a-package-for-an-organization
    45  //
    46  //meta:operation GET /orgs/{org}/packages/{package_type}/{package_name}
    47  func (s *OrganizationsService) GetPackage(ctx context.Context, org, packageType, packageName string) (*Package, *Response, error) {
    48  	u := fmt.Sprintf("orgs/%v/packages/%v/%v", org, packageType, url.PathEscape(packageName))
    49  	req, err := s.client.NewRequest("GET", u, nil)
    50  	if err != nil {
    51  		return nil, nil, err
    52  	}
    53  
    54  	var pack *Package
    55  	resp, err := s.client.Do(ctx, req, &pack)
    56  	if err != nil {
    57  		return nil, resp, err
    58  	}
    59  
    60  	return pack, resp, nil
    61  }
    62  
    63  // DeletePackage deletes a package from an organization.
    64  //
    65  // Note that packageName is escaped for the URL path so that you don't need to.
    66  //
    67  // GitHub API docs: https://docs.github.com/rest/packages/packages#delete-a-package-for-an-organization
    68  //
    69  //meta:operation DELETE /orgs/{org}/packages/{package_type}/{package_name}
    70  func (s *OrganizationsService) DeletePackage(ctx context.Context, org, packageType, packageName string) (*Response, error) {
    71  	u := fmt.Sprintf("orgs/%v/packages/%v/%v", org, packageType, url.PathEscape(packageName))
    72  	req, err := s.client.NewRequest("DELETE", u, nil)
    73  	if err != nil {
    74  		return nil, err
    75  	}
    76  
    77  	return s.client.Do(ctx, req, nil)
    78  }
    79  
    80  // RestorePackage restores a package to an organization.
    81  //
    82  // Note that packageName is escaped for the URL path so that you don't need to.
    83  //
    84  // GitHub API docs: https://docs.github.com/rest/packages/packages#restore-a-package-for-an-organization
    85  //
    86  //meta:operation POST /orgs/{org}/packages/{package_type}/{package_name}/restore
    87  func (s *OrganizationsService) RestorePackage(ctx context.Context, org, packageType, packageName string) (*Response, error) {
    88  	u := fmt.Sprintf("orgs/%v/packages/%v/%v/restore", org, packageType, url.PathEscape(packageName))
    89  	req, err := s.client.NewRequest("POST", u, nil)
    90  	if err != nil {
    91  		return nil, err
    92  	}
    93  
    94  	return s.client.Do(ctx, req, nil)
    95  }
    96  
    97  // PackageGetAllVersions gets all versions of a package in an organization.
    98  //
    99  // Note that packageName is escaped for the URL path so that you don't need to.
   100  //
   101  // GitHub API docs: https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-an-organization
   102  //
   103  //meta:operation GET /orgs/{org}/packages/{package_type}/{package_name}/versions
   104  func (s *OrganizationsService) PackageGetAllVersions(ctx context.Context, org, packageType, packageName string, opts *PackageListOptions) ([]*PackageVersion, *Response, error) {
   105  	u := fmt.Sprintf("orgs/%v/packages/%v/%v/versions", org, packageType, url.PathEscape(packageName))
   106  	u, err := addOptions(u, opts)
   107  	if err != nil {
   108  		return nil, nil, err
   109  	}
   110  
   111  	req, err := s.client.NewRequest("GET", u, nil)
   112  	if err != nil {
   113  		return nil, nil, err
   114  	}
   115  
   116  	var versions []*PackageVersion
   117  	resp, err := s.client.Do(ctx, req, &versions)
   118  	if err != nil {
   119  		return nil, resp, err
   120  	}
   121  
   122  	return versions, resp, nil
   123  }
   124  
   125  // PackageGetVersion gets a specific version of a package in an organization.
   126  //
   127  // Note that packageName is escaped for the URL path so that you don't need to.
   128  //
   129  // GitHub API docs: https://docs.github.com/rest/packages/packages#get-a-package-version-for-an-organization
   130  //
   131  //meta:operation GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}
   132  func (s *OrganizationsService) PackageGetVersion(ctx context.Context, org, packageType, packageName string, packageVersionID int64) (*PackageVersion, *Response, error) {
   133  	u := fmt.Sprintf("orgs/%v/packages/%v/%v/versions/%v", org, packageType, url.PathEscape(packageName), packageVersionID)
   134  	req, err := s.client.NewRequest("GET", u, nil)
   135  	if err != nil {
   136  		return nil, nil, err
   137  	}
   138  
   139  	var version *PackageVersion
   140  	resp, err := s.client.Do(ctx, req, &version)
   141  	if err != nil {
   142  		return nil, resp, err
   143  	}
   144  
   145  	return version, resp, nil
   146  }
   147  
   148  // PackageDeleteVersion deletes a package version from an organization.
   149  //
   150  // Note that packageName is escaped for the URL path so that you don't need to.
   151  //
   152  // GitHub API docs: https://docs.github.com/rest/packages/packages#delete-package-version-for-an-organization
   153  //
   154  //meta:operation DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}
   155  func (s *OrganizationsService) PackageDeleteVersion(ctx context.Context, org, packageType, packageName string, packageVersionID int64) (*Response, error) {
   156  	u := fmt.Sprintf("orgs/%v/packages/%v/%v/versions/%v", org, packageType, url.PathEscape(packageName), packageVersionID)
   157  	req, err := s.client.NewRequest("DELETE", u, nil)
   158  	if err != nil {
   159  		return nil, err
   160  	}
   161  
   162  	return s.client.Do(ctx, req, nil)
   163  }
   164  
   165  // PackageRestoreVersion restores a package version to an organization.
   166  //
   167  // Note that packageName is escaped for the URL path so that you don't need to.
   168  //
   169  // GitHub API docs: https://docs.github.com/rest/packages/packages#restore-package-version-for-an-organization
   170  //
   171  //meta:operation POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore
   172  func (s *OrganizationsService) PackageRestoreVersion(ctx context.Context, org, packageType, packageName string, packageVersionID int64) (*Response, error) {
   173  	u := fmt.Sprintf("orgs/%v/packages/%v/%v/versions/%v/restore", org, packageType, url.PathEscape(packageName), packageVersionID)
   174  	req, err := s.client.NewRequest("POST", u, nil)
   175  	if err != nil {
   176  		return nil, err
   177  	}
   178  
   179  	return s.client.Do(ctx, req, nil)
   180  }