// Repos returns a list of all repositories for GitHub account, including // organization repositories. func (c *client) Repos(u *model.User) ([]*model.RepoLite, error) { client := c.newClientToken(u.Token) opts := new(github.RepositoryListOptions) opts.PerPage = 100 opts.Page = 1 var repos []*model.RepoLite for opts.Page > 0 { list, resp, err := client.Repositories.List("", opts) if err != nil { return nil, err } repos = append(repos, convertRepoList(list)...) opts.Page = resp.NextPage } return repos, nil }
// GetUserRepos is a helper function that returns a list of // all user repositories. Paginated results are aggregated into // a single list. func GetUserRepos(client *github.Client) ([]github.Repository, error) { var repos []github.Repository var opts = github.RepositoryListOptions{} opts.PerPage = 100 opts.Page = 1 // loop through user repository list for opts.Page > 0 { list, resp, err := client.Repositories.List("", &opts) if err != nil { return nil, err } repos = append(repos, list...) // increment the next page to retrieve opts.Page = resp.NextPage } return repos, nil }