github.com/ungtb10d/cli/v2@v2.0.0-20221110210412-98537dd9d6a1/pkg/cmd/repo/deploy-key/list/http.go (about) 1 package list 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "io" 7 "net/http" 8 "time" 9 10 "github.com/ungtb10d/cli/v2/api" 11 "github.com/ungtb10d/cli/v2/internal/ghinstance" 12 "github.com/ungtb10d/cli/v2/internal/ghrepo" 13 ) 14 15 type deployKey struct { 16 ID int 17 Key string 18 Title string 19 CreatedAt time.Time `json:"created_at"` 20 ReadOnly bool `json:"read_only"` 21 } 22 23 func repoKeys(httpClient *http.Client, repo ghrepo.Interface) ([]deployKey, error) { 24 path := fmt.Sprintf("repos/%s/%s/keys?per_page=100", repo.RepoOwner(), repo.RepoName()) 25 url := ghinstance.RESTPrefix(repo.RepoHost()) + path 26 req, err := http.NewRequest("GET", url, nil) 27 if err != nil { 28 return nil, err 29 } 30 31 resp, err := httpClient.Do(req) 32 if err != nil { 33 return nil, err 34 } 35 defer resp.Body.Close() 36 37 if resp.StatusCode > 299 { 38 return nil, api.HandleHTTPError(resp) 39 } 40 41 b, err := io.ReadAll(resp.Body) 42 if err != nil { 43 return nil, err 44 } 45 46 var keys []deployKey 47 err = json.Unmarshal(b, &keys) 48 if err != nil { 49 return nil, err 50 } 51 52 return keys, nil 53 }