func listUserFollowing(ctx *context.APIContext, u *models.User) { users, err := u.GetFollowing(ctx.QueryInt("page")) if err != nil { ctx.Error(500, "GetFollowing", err) return } responseApiUsers(ctx, users) }
// https://github.com/gogits/go-gogs-client/wiki/Repositories#search-repositories func Search(ctx *context.APIContext) { opts := &models.SearchRepoOptions{ Keyword: path.Base(ctx.Query("q")), OwnerID: ctx.QueryInt64("uid"), PageSize: convert.ToCorrectPageSize(ctx.QueryInt("limit")), } // Check visibility. if ctx.IsSigned && opts.OwnerID > 0 { if ctx.User.ID == opts.OwnerID { opts.Private = true } else { u, err := models.GetUserByID(opts.OwnerID) if err != nil { ctx.JSON(500, map[string]interface{}{ "ok": false, "error": err.Error(), }) return } if u.IsOrganization() && u.IsOwnedBy(ctx.User.ID) { opts.Private = true } // FIXME: how about collaborators? } } repos, count, err := models.SearchRepositoryByName(opts) if err != nil { ctx.JSON(500, map[string]interface{}{ "ok": false, "error": err.Error(), }) return } results := make([]*api.Repository, len(repos)) for i := range repos { if err = repos[i].GetOwner(); err != nil { ctx.JSON(500, map[string]interface{}{ "ok": false, "error": err.Error(), }) return } results[i] = &api.Repository{ ID: repos[i].ID, FullName: path.Join(repos[i].Owner.Name, repos[i].Name), } } ctx.SetLinkHeader(int(count), setting.API.MaxResponseItems) ctx.JSON(200, map[string]interface{}{ "ok": true, "data": results, }) }
func ListIssues(ctx *context.APIContext) { issues, err := models.Issues(&models.IssuesOptions{ RepoID: ctx.Repo.Repository.ID, Page: ctx.QueryInt("page"), }) if err != nil { ctx.Error(500, "Issues", err) return } // FIXME: use IssueList to improve performance. apiIssues := make([]*api.Issue, len(issues)) for i := range issues { if err = issues[i].LoadAttributes(); err != nil { ctx.Error(500, "LoadAttributes", err) return } apiIssues[i] = issues[i].APIFormat() } ctx.SetLinkHeader(ctx.Repo.Repository.NumIssues, setting.UI.IssuePagingNum) ctx.JSON(200, &apiIssues) }