package list import ( "encoding/json" "fmt" "io" "net/http" "time" "github.com/cli/cli/v2/api" "github.com/cli/cli/v2/internal/ghinstance" "github.com/cli/cli/v2/internal/ghrepo" ) type deployKey struct { ID int `json:"id"` Key string `json:"key"` Title string `json:"title"` CreatedAt time.Time `json:"created_at"` ReadOnly bool `json:"read_only"` } func repoKeys(httpClient *http.Client, repo ghrepo.Interface) ([]deployKey, error) { path := fmt.Sprintf("repos/%s/%s/keys?per_page=100", repo.RepoOwner(), repo.RepoName()) url := ghinstance.RESTPrefix(repo.RepoHost()) + path req, err := http.NewRequest("GET", url, nil) if err != nil { return nil, err } resp, err := httpClient.Do(req) if err != nil { return nil, err } defer resp.Body.Close() if resp.StatusCode > 299 { return nil, api.HandleHTTPError(resp) } b, err := io.ReadAll(resp.Body) if err != nil { return nil, err } var keys []deployKey err = json.Unmarshal(b, &keys) if err != nil { return nil, err } return keys, nil }