diff options
author | 6543 <6543@obermui.de> | 2020-01-08 08:00:59 +0100 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2020-01-08 15:00:59 +0800 |
commit | e88d67b774ae615208b25133c299f2d50b3a018b (patch) | |
tree | 4471be8b873a81f2ce7a7c951e9fcf5ab4518a2b /routers | |
parent | c884735740ddbf6c950b44964b7ef7c77c4a0325 (diff) | |
download | gitea-e88d67b774ae615208b25133c299f2d50b3a018b.tar.gz gitea-e88d67b774ae615208b25133c299f2d50b3a018b.zip |
[API] add comments endpoint for single comment (#9494)
* add GET /repos/{owner}/{repo}/issues/comments/{id}
and complete error list for swagger in other func
* add repo check
Diffstat (limited to 'routers')
-rw-r--r-- | routers/api/v1/api.go | 7 | ||||
-rw-r--r-- | routers/api/v1/repo/issue_comment.go | 81 |
2 files changed, 85 insertions, 3 deletions
diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index e4288f40f6..3f766c7a74 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -661,9 +661,10 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("/comments", func() { m.Get("", repo.ListRepoIssueComments) m.Group("/:id", func() { - m.Combo("", reqToken()). - Patch(mustNotBeArchived, bind(api.EditIssueCommentOption{}), repo.EditIssueComment). - Delete(repo.DeleteIssueComment) + m.Combo(""). + Get(repo.GetIssueComment). + Patch(mustNotBeArchived, reqToken(), bind(api.EditIssueCommentOption{}), repo.EditIssueComment). + Delete(reqToken(), repo.DeleteIssueComment) m.Combo("/reactions"). Get(repo.GetIssueCommentReactions). Post(bind(api.EditReactionOption{}), reqToken(), repo.PostIssueCommentReaction). diff --git a/routers/api/v1/repo/issue_comment.go b/routers/api/v1/repo/issue_comment.go index c13fc93cdf..3085c2e51f 100644 --- a/routers/api/v1/repo/issue_comment.go +++ b/routers/api/v1/repo/issue_comment.go @@ -204,6 +204,74 @@ func CreateIssueComment(ctx *context.APIContext, form api.CreateIssueCommentOpti ctx.JSON(http.StatusCreated, comment.APIFormat()) } +// GetIssueComment Get a comment by ID +func GetIssueComment(ctx *context.APIContext) { + // swagger:operation GET /repos/{owner}/{repo}/issues/comments/{id} issue issueGetComment + // --- + // summary: Get a comment + // consumes: + // - application/json + // produces: + // - application/json + // parameters: + // - name: owner + // in: path + // description: owner of the repo + // type: string + // required: true + // - name: repo + // in: path + // description: name of the repo + // type: string + // required: true + // - name: id + // in: path + // description: id of the comment + // type: integer + // format: int64 + // required: true + // responses: + // "200": + // "$ref": "#/responses/Comment" + // "204": + // "$ref": "#/responses/empty" + // "403": + // "$ref": "#/responses/forbidden" + // "404": + // "$ref": "#/responses/notFound" + + comment, err := models.GetCommentByID(ctx.ParamsInt64(":id")) + if err != nil { + if models.IsErrCommentNotExist(err) { + ctx.NotFound(err) + } else { + ctx.Error(http.StatusInternalServerError, "GetCommentByID", err) + } + return + } + + if err = comment.LoadIssue(); err != nil { + ctx.InternalServerError(err) + return + } + if comment.Issue.RepoID != ctx.Repo.Repository.ID { + ctx.Status(http.StatusNotFound) + return + } + + if comment.Type != models.CommentTypeComment { + ctx.Status(http.StatusNoContent) + return + } + + if err := comment.LoadPoster(); err != nil { + ctx.Error(http.StatusInternalServerError, "comment.LoadPoster", err) + return + } + + ctx.JSON(http.StatusOK, comment.APIFormat()) +} + // EditIssueComment modify a comment of an issue func EditIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption) { // swagger:operation PATCH /repos/{owner}/{repo}/issues/comments/{id} issue issueEditComment @@ -237,6 +305,13 @@ func EditIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption) // responses: // "200": // "$ref": "#/responses/Comment" + // "204": + // "$ref": "#/responses/empty" + // "403": + // "$ref": "#/responses/forbidden" + // "404": + // "$ref": "#/responses/notFound" + editIssueComment(ctx, form) } @@ -283,6 +358,8 @@ func EditIssueCommentDeprecated(ctx *context.APIContext, form api.EditIssueComme // "$ref": "#/responses/empty" // "403": // "$ref": "#/responses/forbidden" + // "404": + // "$ref": "#/responses/notFound" editIssueComment(ctx, form) } @@ -343,6 +420,8 @@ func DeleteIssueComment(ctx *context.APIContext) { // "$ref": "#/responses/empty" // "403": // "$ref": "#/responses/forbidden" + // "404": + // "$ref": "#/responses/notFound" deleteIssueComment(ctx) } @@ -380,6 +459,8 @@ func DeleteIssueCommentDeprecated(ctx *context.APIContext) { // "$ref": "#/responses/empty" // "403": // "$ref": "#/responses/forbidden" + // "404": + // "$ref": "#/responses/notFound" deleteIssueComment(ctx) } |