github.com/google/go-github/v71@v71.0.0/github/users_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 a user. Passing the empty string for "user" will 15 // list packages for the authenticated user. 16 // 17 // GitHub API docs: https://docs.github.com/rest/packages/packages#list-packages-for-a-user 18 // GitHub API docs: https://docs.github.com/rest/packages/packages#list-packages-for-the-authenticated-users-namespace 19 // 20 //meta:operation GET /user/packages 21 //meta:operation GET /users/{username}/packages 22 func (s *UsersService) ListPackages(ctx context.Context, user string, opts *PackageListOptions) ([]*Package, *Response, error) { 23 var u string 24 if user != "" { 25 u = fmt.Sprintf("users/%v/packages", user) 26 } else { 27 u = "user/packages" 28 } 29 u, err := addOptions(u, opts) 30 if err != nil { 31 return nil, nil, err 32 } 33 34 req, err := s.client.NewRequest("GET", u, nil) 35 if err != nil { 36 return nil, nil, err 37 } 38 39 var packages []*Package 40 resp, err := s.client.Do(ctx, req, &packages) 41 if err != nil { 42 return nil, resp, err 43 } 44 45 return packages, resp, nil 46 } 47 48 // GetPackage gets a package by name for a user. Passing the empty string for "user" will 49 // get the package for the authenticated user. 50 // 51 // GitHub API docs: https://docs.github.com/rest/packages/packages#get-a-package-for-a-user 52 // GitHub API docs: https://docs.github.com/rest/packages/packages#get-a-package-for-the-authenticated-user 53 // 54 //meta:operation GET /user/packages/{package_type}/{package_name} 55 //meta:operation GET /users/{username}/packages/{package_type}/{package_name} 56 func (s *UsersService) GetPackage(ctx context.Context, user, packageType, packageName string) (*Package, *Response, error) { 57 var u string 58 if user != "" { 59 u = fmt.Sprintf("users/%v/packages/%v/%v", user, packageType, url.PathEscape(packageName)) 60 } else { 61 u = fmt.Sprintf("user/packages/%v/%v", packageType, url.PathEscape(packageName)) 62 } 63 64 req, err := s.client.NewRequest("GET", u, nil) 65 if err != nil { 66 return nil, nil, err 67 } 68 69 var pack *Package 70 resp, err := s.client.Do(ctx, req, &pack) 71 if err != nil { 72 return nil, resp, err 73 } 74 75 return pack, resp, nil 76 } 77 78 // DeletePackage deletes a package from a user. Passing the empty string for "user" will 79 // delete the package for the authenticated user. 80 // 81 // GitHub API docs: https://docs.github.com/rest/packages/packages#delete-a-package-for-a-user 82 // GitHub API docs: https://docs.github.com/rest/packages/packages#delete-a-package-for-the-authenticated-user 83 // 84 //meta:operation DELETE /user/packages/{package_type}/{package_name} 85 //meta:operation DELETE /users/{username}/packages/{package_type}/{package_name} 86 func (s *UsersService) DeletePackage(ctx context.Context, user, packageType, packageName string) (*Response, error) { 87 var u string 88 if user != "" { 89 u = fmt.Sprintf("users/%v/packages/%v/%v", user, packageType, packageName) 90 } else { 91 u = fmt.Sprintf("user/packages/%v/%v", packageType, packageName) 92 } 93 94 req, err := s.client.NewRequest("DELETE", u, nil) 95 if err != nil { 96 return nil, err 97 } 98 99 return s.client.Do(ctx, req, nil) 100 } 101 102 // RestorePackage restores a package to a user. Passing the empty string for "user" will 103 // restore the package for the authenticated user. 104 // 105 // GitHub API docs: https://docs.github.com/rest/packages/packages#restore-a-package-for-a-user 106 // GitHub API docs: https://docs.github.com/rest/packages/packages#restore-a-package-for-the-authenticated-user 107 // 108 //meta:operation POST /user/packages/{package_type}/{package_name}/restore 109 //meta:operation POST /users/{username}/packages/{package_type}/{package_name}/restore 110 func (s *UsersService) RestorePackage(ctx context.Context, user, packageType, packageName string) (*Response, error) { 111 var u string 112 if user != "" { 113 u = fmt.Sprintf("users/%v/packages/%v/%v/restore", user, packageType, packageName) 114 } else { 115 u = fmt.Sprintf("user/packages/%v/%v/restore", packageType, packageName) 116 } 117 118 req, err := s.client.NewRequest("POST", u, nil) 119 if err != nil { 120 return nil, err 121 } 122 123 return s.client.Do(ctx, req, nil) 124 } 125 126 // PackageGetAllVersions gets all versions of a package for a user. Passing the empty string for "user" will 127 // get versions for the authenticated user. 128 // 129 // GitHub API docs: https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-a-user 130 // GitHub API docs: https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-the-authenticated-user 131 // 132 //meta:operation GET /user/packages/{package_type}/{package_name}/versions 133 //meta:operation GET /users/{username}/packages/{package_type}/{package_name}/versions 134 func (s *UsersService) PackageGetAllVersions(ctx context.Context, user, packageType, packageName string, opts *PackageListOptions) ([]*PackageVersion, *Response, error) { 135 var u string 136 if user != "" { 137 u = fmt.Sprintf("users/%v/packages/%v/%v/versions", user, packageType, packageName) 138 } else { 139 u = fmt.Sprintf("user/packages/%v/%v/versions", packageType, packageName) 140 } 141 u, err := addOptions(u, opts) 142 if err != nil { 143 return nil, nil, err 144 } 145 146 req, err := s.client.NewRequest("GET", u, nil) 147 if err != nil { 148 return nil, nil, err 149 } 150 151 var versions []*PackageVersion 152 resp, err := s.client.Do(ctx, req, &versions) 153 if err != nil { 154 return nil, resp, err 155 } 156 157 return versions, resp, nil 158 } 159 160 // PackageGetVersion gets a specific version of a package for a user. Passing the empty string for "user" will 161 // get the version for the authenticated user. 162 // 163 // GitHub API docs: https://docs.github.com/rest/packages/packages#get-a-package-version-for-a-user 164 // GitHub API docs: https://docs.github.com/rest/packages/packages#get-a-package-version-for-the-authenticated-user 165 // 166 //meta:operation GET /user/packages/{package_type}/{package_name}/versions/{package_version_id} 167 //meta:operation GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id} 168 func (s *UsersService) PackageGetVersion(ctx context.Context, user, packageType, packageName string, packageVersionID int64) (*PackageVersion, *Response, error) { 169 var u string 170 if user != "" { 171 u = fmt.Sprintf("users/%v/packages/%v/%v/versions/%v", user, packageType, packageName, packageVersionID) 172 } else { 173 u = fmt.Sprintf("user/packages/%v/%v/versions/%v", packageType, packageName, packageVersionID) 174 } 175 176 req, err := s.client.NewRequest("GET", u, nil) 177 if err != nil { 178 return nil, nil, err 179 } 180 181 var version *PackageVersion 182 resp, err := s.client.Do(ctx, req, &version) 183 if err != nil { 184 return nil, resp, err 185 } 186 187 return version, resp, nil 188 } 189 190 // PackageDeleteVersion deletes a package version for a user. Passing the empty string for "user" will 191 // delete the version for the authenticated user. 192 // 193 // GitHub API docs: https://docs.github.com/rest/packages/packages#delete-a-package-version-for-the-authenticated-user 194 // GitHub API docs: https://docs.github.com/rest/packages/packages#delete-package-version-for-a-user 195 // 196 //meta:operation DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id} 197 //meta:operation DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id} 198 func (s *UsersService) PackageDeleteVersion(ctx context.Context, user, packageType, packageName string, packageVersionID int64) (*Response, error) { 199 var u string 200 if user != "" { 201 u = fmt.Sprintf("users/%v/packages/%v/%v/versions/%v", user, packageType, packageName, packageVersionID) 202 } else { 203 u = fmt.Sprintf("user/packages/%v/%v/versions/%v", packageType, packageName, packageVersionID) 204 } 205 206 req, err := s.client.NewRequest("DELETE", u, nil) 207 if err != nil { 208 return nil, err 209 } 210 211 return s.client.Do(ctx, req, nil) 212 } 213 214 // PackageRestoreVersion restores a package version to a user. Passing the empty string for "user" will 215 // restore the version for the authenticated user. 216 // 217 // GitHub API docs: https://docs.github.com/rest/packages/packages#restore-a-package-version-for-the-authenticated-user 218 // GitHub API docs: https://docs.github.com/rest/packages/packages#restore-package-version-for-a-user 219 // 220 //meta:operation POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore 221 //meta:operation POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore 222 func (s *UsersService) PackageRestoreVersion(ctx context.Context, user, packageType, packageName string, packageVersionID int64) (*Response, error) { 223 var u string 224 if user != "" { 225 u = fmt.Sprintf("users/%v/packages/%v/%v/versions/%v/restore", user, packageType, packageName, packageVersionID) 226 } else { 227 u = fmt.Sprintf("user/packages/%v/%v/versions/%v/restore", packageType, packageName, packageVersionID) 228 } 229 230 req, err := s.client.NewRequest("POST", u, nil) 231 if err != nil { 232 return nil, err 233 } 234 235 return s.client.Do(ctx, req, nil) 236 }