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