github.com/verrazzano/verrazzano@v1.7.1/tools/vz/pkg/github/github.com.go (about) 1 // Copyright (c) 2022, Oracle and/or its affiliates. 2 // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. 3 4 package github 5 6 import ( 7 "encoding/json" 8 "io" 9 "net/http" 10 11 "github.com/verrazzano/verrazzano/tools/vz/pkg/constants" 12 ) 13 14 // ReleaseAsset - subset of a GitHub release asset 15 type ReleaseAsset struct { 16 TagName string `json:"tag_name"` 17 } 18 19 // ListReleases - return the list of Verrazzano releases 20 func ListReleases(client *http.Client) ([]string, error) { 21 var releaseTags []string 22 23 // Create the list request 24 var buf io.ReadWriter 25 request, err := http.NewRequest(http.MethodGet, constants.VerrazzanoReleaseList, buf) 26 if err != nil { 27 return releaseTags, err 28 } 29 request.Header.Set("Accept", "application/json") 30 31 // Get the list of releases 32 resp, err := client.Do(request) 33 if err != nil { 34 return releaseTags, err 35 } 36 37 // Decode the body to the list of releases 38 defer resp.Body.Close() 39 var releases []ReleaseAsset 40 err = json.NewDecoder(resp.Body).Decode(&releases) 41 if err != nil { 42 return releaseTags, err 43 } 44 45 // Populate the return list 46 for _, release := range releases { 47 releaseTags = append(releaseTags, release.TagName) 48 } 49 50 return releaseTags, nil 51 }