summaryrefslogtreecommitdiffstats
path: root/routers/api
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2018-04-11 10:51:44 +0800
committerGitHub <noreply@github.com>2018-04-11 10:51:44 +0800
commitbec69f702ba8ecdc9a77db34ff94b7e55879be59 (patch)
treef6791e83ddbab715dc2fc9c8e3d004faddc92f6d /routers/api
parent1946ce2954d49474b750938a1a6bb541f081485f (diff)
downloadgitea-bec69f702ba8ecdc9a77db34ff94b7e55879be59.tar.gz
gitea-bec69f702ba8ecdc9a77db34ff94b7e55879be59.zip
Add topic support (#3711)
* add topic models and unit tests * fix comments * fix comment * add the UI to show or add topics for a repo * show topics on repositories list * fix test * don't show manage topics link when no permission * use green basic as topic label * fix topic label color * remove trace content * remove debug function
Diffstat (limited to 'routers/api')
-rw-r--r--routers/api/v1/api.go4
-rw-r--r--routers/api/v1/repo/repo.go42
2 files changed, 46 insertions, 0 deletions
diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go
index 4c454cb6a0..02606bdfd0 100644
--- a/routers/api/v1/api.go
+++ b/routers/api/v1/api.go
@@ -571,5 +571,9 @@ func RegisterRoutes(m *macaron.Macaron) {
})
})
}, reqAdmin())
+
+ m.Group("/topics", func() {
+ m.Get("/search", repo.TopicSearch)
+ })
}, context.APIContexter())
}
diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go
index 25ed62fa49..9f64dda61d 100644
--- a/routers/api/v1/repo/repo.go
+++ b/routers/api/v1/repo/repo.go
@@ -501,3 +501,45 @@ func MirrorSync(ctx *context.APIContext) {
go models.MirrorQueue.Add(repo.ID)
ctx.Status(200)
}
+
+// TopicSearch search for creating topic
+func TopicSearch(ctx *context.Context) {
+ // swagger:operation GET /topics/search repository topicSearch
+ // ---
+ // summary: search topics via keyword
+ // produces:
+ // - application/json
+ // parameters:
+ // - name: keyword
+ // in: path
+ // description: id of the repo to get
+ // type: integer
+ // required: true
+ // responses:
+ // "200":
+ // "$ref": "#/responses/Repository"
+ if ctx.User == nil {
+ ctx.JSON(403, map[string]interface{}{
+ "message": "Only owners could change the topics.",
+ })
+ return
+ }
+
+ kw := ctx.Query("q")
+
+ topics, err := models.FindTopics(&models.FindTopicOptions{
+ Keyword: kw,
+ Limit: 10,
+ })
+ if err != nil {
+ log.Error(2, "SearchTopics failed: %v", err)
+ ctx.JSON(500, map[string]interface{}{
+ "message": "Search topics failed.",
+ })
+ return
+ }
+
+ ctx.JSON(200, map[string]interface{}{
+ "topics": topics,
+ })
+}