aboutsummaryrefslogtreecommitdiffstats
path: root/routers/api
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2019-05-15 16:24:39 +0100
committertechknowlogick <techknowlogick@gitea.io>2019-05-15 11:24:39 -0400
commit56ae539bed7d822980ebaae8db316a0177fc028c (patch)
treeee63a75ba156002cb6c40975c1c35b032954f913 /routers/api
parent5fb1ad70113d3272232c266b4ff58e9f7f646594 (diff)
downloadgitea-56ae539bed7d822980ebaae8db316a0177fc028c.tar.gz
gitea-56ae539bed7d822980ebaae8db316a0177fc028c.zip
SearchRepositoryByName improvements and unification (#6897)
Diffstat (limited to 'routers/api')
-rw-r--r--routers/api/v1/repo/repo.go49
1 files changed, 13 insertions, 36 deletions
diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go
index 56aac8014c..62153893a6 100644
--- a/routers/api/v1/repo/repo.go
+++ b/routers/api/v1/repo/repo.go
@@ -56,6 +56,15 @@ func Search(ctx *context.APIContext) {
// description: search only for repos that the user with the given id owns or contributes to
// type: integer
// format: int64
+ // - name: starredBy
+ // in: query
+ // description: search only for repos that the user with the given id has starred
+ // type: integer
+ // format: int64
+ // - name: private
+ // in: query
+ // description: include private repositories this user has access to (defaults to true)
+ // type: boolean
// - name: page
// in: query
// description: page number of results to return (1-based)
@@ -96,6 +105,10 @@ func Search(ctx *context.APIContext) {
PageSize: convert.ToCorrectPageSize(ctx.QueryInt("limit")),
TopicOnly: ctx.QueryBool("topic"),
Collaborate: util.OptionalBoolNone,
+ Private: ctx.IsSigned && (ctx.Query("private") == "" || ctx.QueryBool("private")),
+ UserIsAdmin: ctx.IsUserSiteAdmin(),
+ UserID: ctx.Data["SignedUserID"].(int64),
+ StarredByID: ctx.QueryInt64("starredBy"),
}
if ctx.QueryBool("exclusive") {
@@ -140,42 +153,6 @@ func Search(ctx *context.APIContext) {
}
var err error
- if opts.OwnerID > 0 {
- var repoOwner *models.User
- if ctx.User != nil && ctx.User.ID == opts.OwnerID {
- repoOwner = ctx.User
- } else {
- repoOwner, err = models.GetUserByID(opts.OwnerID)
- if err != nil {
- ctx.JSON(500, api.SearchError{
- OK: false,
- Error: err.Error(),
- })
- return
- }
- }
-
- if repoOwner.IsOrganization() {
- opts.Collaborate = util.OptionalBoolFalse
- }
-
- // Check visibility.
- if ctx.IsSigned {
- if ctx.User.ID == repoOwner.ID {
- opts.Private = true
- } else if repoOwner.IsOrganization() {
- opts.Private, err = repoOwner.IsOwnedBy(ctx.User.ID)
- if err != nil {
- ctx.JSON(500, api.SearchError{
- OK: false,
- Error: err.Error(),
- })
- return
- }
- }
- }
- }
-
repos, count, err := models.SearchRepositoryByName(opts)
if err != nil {
ctx.JSON(500, api.SearchError{