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