@@ -93,8 +93,8 @@ func TestAPIEditComment(t *testing.T) { | |||
repoOwner := models.AssertExistsAndLoadBean(t, &models.User{ID: repo.OwnerID}).(*models.User) | |||
session := loginUser(t, repoOwner.Name) | |||
urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/issues/%d/comments/%d", | |||
repoOwner.Name, repo.Name, issue.Index, comment.ID) | |||
urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/issues/comments/%d", | |||
repoOwner.Name, repo.Name, comment.ID) | |||
req := NewRequestWithValues(t, "PATCH", urlStr, map[string]string{ | |||
"body": newCommentBody, | |||
}) | |||
@@ -117,8 +117,8 @@ func TestAPIDeleteComment(t *testing.T) { | |||
repoOwner := models.AssertExistsAndLoadBean(t, &models.User{ID: repo.OwnerID}).(*models.User) | |||
session := loginUser(t, repoOwner.Name) | |||
req := NewRequestf(t, "DELETE", "/api/v1/repos/%s/%s/issues/%d/comments/%d", | |||
repoOwner.Name, repo.Name, issue.Index, comment.ID) | |||
req := NewRequestf(t, "DELETE", "/api/v1/repos/%s/%s/issues/comments/%d", | |||
repoOwner.Name, repo.Name, comment.ID) | |||
session.MakeRequest(t, req, http.StatusNoContent) | |||
models.AssertNotExistsBean(t, &models.Comment{ID: comment.ID}) |
@@ -1225,91 +1225,6 @@ | |||
} | |||
} | |||
}, | |||
"/repos/{owner}/{repo}/comments/{id}": { | |||
"delete": { | |||
"tags": [ | |||
"issue" | |||
], | |||
"summary": "Delete a comment", | |||
"operationId": "issueDeleteComment", | |||
"parameters": [ | |||
{ | |||
"type": "string", | |||
"description": "owner of the repo", | |||
"name": "owner", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"type": "string", | |||
"description": "name of the repo", | |||
"name": "repo", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"type": "integer", | |||
"description": "id of comment to delete", | |||
"name": "id", | |||
"in": "path", | |||
"required": true | |||
} | |||
], | |||
"responses": { | |||
"204": { | |||
"$ref": "#/responses/empty" | |||
} | |||
} | |||
}, | |||
"patch": { | |||
"consumes": [ | |||
"application/json" | |||
], | |||
"produces": [ | |||
"application/json" | |||
], | |||
"tags": [ | |||
"issue" | |||
], | |||
"summary": "Edit a comment", | |||
"operationId": "issueEditComment", | |||
"parameters": [ | |||
{ | |||
"type": "string", | |||
"description": "owner of the repo", | |||
"name": "owner", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"type": "string", | |||
"description": "name of the repo", | |||
"name": "repo", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"type": "integer", | |||
"description": "id of the comment to edit", | |||
"name": "id", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"name": "body", | |||
"in": "body", | |||
"schema": { | |||
"$ref": "#/definitions/EditIssueCommentOption" | |||
} | |||
} | |||
], | |||
"responses": { | |||
"200": { | |||
"$ref": "#/responses/Comment" | |||
} | |||
} | |||
} | |||
}, | |||
"/repos/{owner}/{repo}/commits/{ref}/statuses": { | |||
"get": { | |||
"produces": [ | |||
@@ -1965,6 +1880,91 @@ | |||
} | |||
} | |||
}, | |||
"/repos/{owner}/{repo}/issues/comments/{id}": { | |||
"delete": { | |||
"tags": [ | |||
"issue" | |||
], | |||
"summary": "Delete a comment", | |||
"operationId": "issueDeleteComment", | |||
"parameters": [ | |||
{ | |||
"type": "string", | |||
"description": "owner of the repo", | |||
"name": "owner", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"type": "string", | |||
"description": "name of the repo", | |||
"name": "repo", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"type": "integer", | |||
"description": "id of comment to delete", | |||
"name": "id", | |||
"in": "path", | |||
"required": true | |||
} | |||
], | |||
"responses": { | |||
"204": { | |||
"$ref": "#/responses/empty" | |||
} | |||
} | |||
}, | |||
"patch": { | |||
"consumes": [ | |||
"application/json" | |||
], | |||
"produces": [ | |||
"application/json" | |||
], | |||
"tags": [ | |||
"issue" | |||
], | |||
"summary": "Edit a comment", | |||
"operationId": "issueEditComment", | |||
"parameters": [ | |||
{ | |||
"type": "string", | |||
"description": "owner of the repo", | |||
"name": "owner", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"type": "string", | |||
"description": "name of the repo", | |||
"name": "repo", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"type": "integer", | |||
"description": "id of the comment to edit", | |||
"name": "id", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"name": "body", | |||
"in": "body", | |||
"schema": { | |||
"$ref": "#/definitions/EditIssueCommentOption" | |||
} | |||
} | |||
], | |||
"responses": { | |||
"200": { | |||
"$ref": "#/responses/Comment" | |||
} | |||
} | |||
} | |||
}, | |||
"/repos/{owner}/{repo}/issues/{id}": { | |||
"get": { | |||
"produces": [ | |||
@@ -2103,6 +2103,107 @@ | |||
} | |||
} | |||
}, | |||
"/repos/{owner}/{repo}/issues/{index}/comments/{id}": { | |||
"delete": { | |||
"tags": [ | |||
"issue" | |||
], | |||
"summary": "Delete a comment", | |||
"operationId": "issueDeleteCommentDeprecated", | |||
"deprecated": true, | |||
"parameters": [ | |||
{ | |||
"type": "string", | |||
"description": "owner of the repo", | |||
"name": "owner", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"type": "string", | |||
"description": "name of the repo", | |||
"name": "repo", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"type": "integer", | |||
"description": "this parameter is ignored", | |||
"name": "index", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"type": "integer", | |||
"description": "id of comment to delete", | |||
"name": "id", | |||
"in": "path", | |||
"required": true | |||
} | |||
], | |||
"responses": { | |||
"204": { | |||
"$ref": "#/responses/empty" | |||
} | |||
} | |||
}, | |||
"patch": { | |||
"consumes": [ | |||
"application/json" | |||
], | |||
"produces": [ | |||
"application/json" | |||
], | |||
"tags": [ | |||
"issue" | |||
], | |||
"summary": "Edit a comment", | |||
"operationId": "issueEditCommentDeprecated", | |||
"deprecated": true, | |||
"parameters": [ | |||
{ | |||
"type": "string", | |||
"description": "owner of the repo", | |||
"name": "owner", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"type": "string", | |||
"description": "name of the repo", | |||
"name": "repo", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"type": "integer", | |||
"description": "this parameter is ignored", | |||
"name": "index", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"type": "integer", | |||
"description": "id of the comment to edit", | |||
"name": "id", | |||
"in": "path", | |||
"required": true | |||
}, | |||
{ | |||
"name": "body", | |||
"in": "body", | |||
"schema": { | |||
"$ref": "#/definitions/EditIssueCommentOption" | |||
} | |||
} | |||
], | |||
"responses": { | |||
"200": { | |||
"$ref": "#/responses/Comment" | |||
} | |||
} | |||
} | |||
}, | |||
"/repos/{owner}/{repo}/issues/{index}/labels": { | |||
"get": { | |||
"produces": [ |
@@ -406,7 +406,8 @@ func RegisterRoutes(m *macaron.Macaron) { | |||
m.Group("/comments", func() { | |||
m.Get("", repo.ListRepoIssueComments) | |||
m.Combo("/:id", reqToken()). | |||
Patch(bind(api.EditIssueCommentOption{}), repo.EditIssueComment) | |||
Patch(bind(api.EditIssueCommentOption{}), repo.EditIssueComment). | |||
Delete(repo.DeleteIssueComment) | |||
}) | |||
m.Group("/:index", func() { | |||
m.Combo("").Get(repo.GetIssue). | |||
@@ -415,8 +416,8 @@ func RegisterRoutes(m *macaron.Macaron) { | |||
m.Group("/comments", func() { | |||
m.Combo("").Get(repo.ListIssueComments). | |||
Post(reqToken(), bind(api.CreateIssueCommentOption{}), repo.CreateIssueComment) | |||
m.Combo("/:id", reqToken()).Patch(bind(api.EditIssueCommentOption{}), repo.EditIssueComment). | |||
Delete(repo.DeleteIssueComment) | |||
m.Combo("/:id", reqToken()).Patch(bind(api.EditIssueCommentOption{}), repo.EditIssueCommentDeprecated). | |||
Delete(repo.DeleteIssueCommentDeprecated) | |||
}) | |||
m.Group("/labels", func() { |
@@ -168,7 +168,7 @@ func CreateIssueComment(ctx *context.APIContext, form api.CreateIssueCommentOpti | |||
// EditIssueComment modify a comment of an issue | |||
func EditIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption) { | |||
// swagger:operation PATCH /repos/{owner}/{repo}/comments/{id} issue issueEditComment | |||
// swagger:operation PATCH /repos/{owner}/{repo}/issues/comments/{id} issue issueEditComment | |||
// --- | |||
// summary: Edit a comment | |||
// consumes: | |||
@@ -198,6 +198,51 @@ func EditIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption) | |||
// responses: | |||
// "200": | |||
// "$ref": "#/responses/Comment" | |||
editIssueComment(ctx, form) | |||
} | |||
// EditIssueCommentDeprecated modify a comment of an issue | |||
func EditIssueCommentDeprecated(ctx *context.APIContext, form api.EditIssueCommentOption) { | |||
// swagger:operation PATCH /repos/{owner}/{repo}/issues/{index}/comments/{id} issue issueEditCommentDeprecated | |||
// --- | |||
// summary: Edit a comment | |||
// deprecated: true | |||
// 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: index | |||
// in: path | |||
// description: this parameter is ignored | |||
// type: integer | |||
// required: true | |||
// - name: id | |||
// in: path | |||
// description: id of the comment to edit | |||
// type: integer | |||
// required: true | |||
// - name: body | |||
// in: body | |||
// schema: | |||
// "$ref": "#/definitions/EditIssueCommentOption" | |||
// responses: | |||
// "200": | |||
// "$ref": "#/responses/Comment" | |||
editIssueComment(ctx, form) | |||
} | |||
func editIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption) { | |||
comment, err := models.GetCommentByID(ctx.ParamsInt64(":id")) | |||
if err != nil { | |||
if models.IsErrCommentNotExist(err) { | |||
@@ -226,9 +271,37 @@ func EditIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption) | |||
// DeleteIssueComment delete a comment from an issue | |||
func DeleteIssueComment(ctx *context.APIContext) { | |||
// swagger:operation DELETE /repos/{owner}/{repo}/comments/{id} issue issueDeleteComment | |||
// swagger:operation DELETE /repos/{owner}/{repo}/issues/comments/{id} issue issueDeleteComment | |||
// --- | |||
// summary: Delete a comment | |||
// 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 comment to delete | |||
// type: integer | |||
// required: true | |||
// responses: | |||
// "204": | |||
// "$ref": "#/responses/empty" | |||
deleteIssueComment(ctx) | |||
} | |||
// DeleteIssueCommentDeprecated delete a comment from an issue | |||
func DeleteIssueCommentDeprecated(ctx *context.APIContext) { | |||
// swagger:operation DELETE /repos/{owner}/{repo}/issues/{index}/comments/{id} issue issueDeleteCommentDeprecated | |||
// --- | |||
// summary: Delete a comment | |||
// deprecated: true | |||
// parameters: | |||
// - name: owner | |||
// in: path | |||
@@ -240,6 +313,11 @@ func DeleteIssueComment(ctx *context.APIContext) { | |||
// description: name of the repo | |||
// type: string | |||
// required: true | |||
// - name: index | |||
// in: path | |||
// description: this parameter is ignored | |||
// type: integer | |||
// required: true | |||
// - name: id | |||
// in: path | |||
// description: id of comment to delete | |||
@@ -248,6 +326,10 @@ func DeleteIssueComment(ctx *context.APIContext) { | |||
// responses: | |||
// "204": | |||
// "$ref": "#/responses/empty" | |||
deleteIssueComment(ctx) | |||
} | |||
func deleteIssueComment(ctx *context.APIContext) { | |||
comment, err := models.GetCommentByID(ctx.ParamsInt64(":id")) | |||
if err != nil { | |||
if models.IsErrCommentNotExist(err) { |