// GetRepos fetches all repositories that the specified // user has access to in the remote system. func (r *GitHub) GetRepos(user *model.User) ([]*model.Repo, error) { var repos []*model.Repo var client = NewClient(r.API, user.Access, r.SkipVerify) var list, err = GetAllRepos(client) if err != nil { return nil, err } var remote = r.GetKind() var hostname = r.GetHost() for _, item := range list { var repo = model.Repo{ UserID: user.ID, Remote: remote, Host: hostname, Owner: *item.Owner.Login, Name: *item.Name, Private: *item.Private, URL: *item.HTMLURL, CloneURL: *item.GitURL, GitURL: *item.GitURL, SSHURL: *item.SSHURL, Role: &model.Perm{}, } if r.Private || repo.Private { repo.CloneURL = *item.SSHURL repo.Private = true } // if no permissions we should skip the repository // entirely, since this should never happen if item.Permissions == nil { continue } repo.Role.Admin = (*item.Permissions)["admin"] repo.Role.Write = (*item.Permissions)["push"] repo.Role.Read = (*item.Permissions)["pull"] repos = append(repos, &repo) } return repos, err }