github.com/google/go-github/v57@v57.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  )
    12  
    13  // ListPackages lists the packages for an organization.
    14  //
    15  // GitHub API docs: https://docs.github.com/rest/packages/packages#list-packages-for-an-organization
    16  //
    17  //meta:operation GET /orgs/{org}/packages
    18  func (s *OrganizationsService) ListPackages(ctx context.Context, org string, opts *PackageListOptions) ([]*Package, *Response, error) {
    19  	u := fmt.Sprintf("orgs/%v/packages", org)
    20  	u, err := addOptions(u, opts)
    21  	if err != nil {
    22  		return nil, nil, err
    23  	}
    24  
    25  	req, err := s.client.NewRequest("GET", u, nil)
    26  	if err != nil {
    27  		return nil, nil, err
    28  	}
    29  
    30  	var packages []*Package
    31  	resp, err := s.client.Do(ctx, req, &packages)
    32  	if err != nil {
    33  		return nil, resp, err
    34  	}
    35  
    36  	return packages, resp, nil
    37  }
    38  
    39  // GetPackage gets a package by name from an organization.
    40  //
    41  // GitHub API docs: https://docs.github.com/rest/packages/packages#get-a-package-for-an-organization
    42  //
    43  //meta:operation GET /orgs/{org}/packages/{package_type}/{package_name}
    44  func (s *OrganizationsService) GetPackage(ctx context.Context, org, packageType, packageName string) (*Package, *Response, error) {
    45  	u := fmt.Sprintf("orgs/%v/packages/%v/%v", org, packageType, packageName)
    46  	req, err := s.client.NewRequest("GET", u, nil)
    47  	if err != nil {
    48  		return nil, nil, err
    49  	}
    50  
    51  	var pack *Package
    52  	resp, err := s.client.Do(ctx, req, &pack)
    53  	if err != nil {
    54  		return nil, resp, err
    55  	}
    56  
    57  	return pack, resp, nil
    58  }
    59  
    60  // DeletePackage deletes a package from an organization.
    61  //
    62  // GitHub API docs: https://docs.github.com/rest/packages/packages#delete-a-package-for-an-organization
    63  //
    64  //meta:operation DELETE /orgs/{org}/packages/{package_type}/{package_name}
    65  func (s *OrganizationsService) DeletePackage(ctx context.Context, org, packageType, packageName string) (*Response, error) {
    66  	u := fmt.Sprintf("orgs/%v/packages/%v/%v", org, packageType, packageName)
    67  	req, err := s.client.NewRequest("DELETE", u, nil)
    68  	if err != nil {
    69  		return nil, err
    70  	}
    71  
    72  	return s.client.Do(ctx, req, nil)
    73  }
    74  
    75  // RestorePackage restores a package to an organization.
    76  //
    77  // GitHub API docs: https://docs.github.com/rest/packages/packages#restore-a-package-for-an-organization
    78  //
    79  //meta:operation POST /orgs/{org}/packages/{package_type}/{package_name}/restore
    80  func (s *OrganizationsService) RestorePackage(ctx context.Context, org, packageType, packageName string) (*Response, error) {
    81  	u := fmt.Sprintf("orgs/%v/packages/%v/%v/restore", org, packageType, packageName)
    82  	req, err := s.client.NewRequest("POST", u, nil)
    83  	if err != nil {
    84  		return nil, err
    85  	}
    86  
    87  	return s.client.Do(ctx, req, nil)
    88  }
    89  
    90  // PackageGetAllVersions gets all versions of a package in an organization.
    91  //
    92  // GitHub API docs: https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-an-organization
    93  //
    94  //meta:operation GET /orgs/{org}/packages/{package_type}/{package_name}/versions
    95  func (s *OrganizationsService) PackageGetAllVersions(ctx context.Context, org, packageType, packageName string, opts *PackageListOptions) ([]*PackageVersion, *Response, error) {
    96  	u := fmt.Sprintf("orgs/%v/packages/%v/%v/versions", org, packageType, packageName)
    97  	u, err := addOptions(u, opts)
    98  	if err != nil {
    99  		return nil, nil, err
   100  	}
   101  
   102  	req, err := s.client.NewRequest("GET", u, nil)
   103  	if err != nil {
   104  		return nil, nil, err
   105  	}
   106  
   107  	var versions []*PackageVersion
   108  	resp, err := s.client.Do(ctx, req, &versions)
   109  	if err != nil {
   110  		return nil, resp, err
   111  	}
   112  
   113  	return versions, resp, nil
   114  }
   115  
   116  // PackageGetVersion gets a specific version of a package in an organization.
   117  //
   118  // GitHub API docs: https://docs.github.com/rest/packages/packages#get-a-package-version-for-an-organization
   119  //
   120  //meta:operation GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}
   121  func (s *OrganizationsService) PackageGetVersion(ctx context.Context, org, packageType, packageName string, packageVersionID int64) (*PackageVersion, *Response, error) {
   122  	u := fmt.Sprintf("orgs/%v/packages/%v/%v/versions/%v", org, packageType, packageName, packageVersionID)
   123  	req, err := s.client.NewRequest("GET", u, nil)
   124  	if err != nil {
   125  		return nil, nil, err
   126  	}
   127  
   128  	var version *PackageVersion
   129  	resp, err := s.client.Do(ctx, req, &version)
   130  	if err != nil {
   131  		return nil, resp, err
   132  	}
   133  
   134  	return version, resp, nil
   135  }
   136  
   137  // PackageDeleteVersion deletes a package version from an organization.
   138  //
   139  // GitHub API docs: https://docs.github.com/rest/packages/packages#delete-package-version-for-an-organization
   140  //
   141  //meta:operation DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}
   142  func (s *OrganizationsService) PackageDeleteVersion(ctx context.Context, org, packageType, packageName string, packageVersionID int64) (*Response, error) {
   143  	u := fmt.Sprintf("orgs/%v/packages/%v/%v/versions/%v", org, packageType, packageName, packageVersionID)
   144  	req, err := s.client.NewRequest("DELETE", u, nil)
   145  	if err != nil {
   146  		return nil, err
   147  	}
   148  
   149  	return s.client.Do(ctx, req, nil)
   150  }
   151  
   152  // PackageRestoreVersion restores a package version to an organization.
   153  //
   154  // GitHub API docs: https://docs.github.com/rest/packages/packages#restore-package-version-for-an-organization
   155  //
   156  //meta:operation POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore
   157  func (s *OrganizationsService) PackageRestoreVersion(ctx context.Context, org, packageType, packageName string, packageVersionID int64) (*Response, error) {
   158  	u := fmt.Sprintf("orgs/%v/packages/%v/%v/versions/%v/restore", org, packageType, packageName, packageVersionID)
   159  	req, err := s.client.NewRequest("POST", u, nil)
   160  	if err != nil {
   161  		return nil, err
   162  	}
   163  
   164  	return s.client.Do(ctx, req, nil)
   165  }