github.com/google/go-github/v70@v70.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 }