Fix comment API paths (#2813)

This commit is contained in:
Ethan Koenig 2017-11-19 23:24:07 -08:00 committed by Lunny Xiao
parent 876bafb7ef
commit c3b6383b3a
4 changed files with 278 additions and 94 deletions

View file

@ -93,8 +93,8 @@ func TestAPIEditComment(t *testing.T) {
repoOwner := models.AssertExistsAndLoadBean(t, &models.User{ID: repo.OwnerID}).(*models.User) repoOwner := models.AssertExistsAndLoadBean(t, &models.User{ID: repo.OwnerID}).(*models.User)
session := loginUser(t, repoOwner.Name) session := loginUser(t, repoOwner.Name)
urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/issues/%d/comments/%d", urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/issues/comments/%d",
repoOwner.Name, repo.Name, issue.Index, comment.ID) repoOwner.Name, repo.Name, comment.ID)
req := NewRequestWithValues(t, "PATCH", urlStr, map[string]string{ req := NewRequestWithValues(t, "PATCH", urlStr, map[string]string{
"body": newCommentBody, "body": newCommentBody,
}) })
@ -117,8 +117,8 @@ func TestAPIDeleteComment(t *testing.T) {
repoOwner := models.AssertExistsAndLoadBean(t, &models.User{ID: repo.OwnerID}).(*models.User) repoOwner := models.AssertExistsAndLoadBean(t, &models.User{ID: repo.OwnerID}).(*models.User)
session := loginUser(t, repoOwner.Name) session := loginUser(t, repoOwner.Name)
req := NewRequestf(t, "DELETE", "/api/v1/repos/%s/%s/issues/%d/comments/%d", req := NewRequestf(t, "DELETE", "/api/v1/repos/%s/%s/issues/comments/%d",
repoOwner.Name, repo.Name, issue.Index, comment.ID) repoOwner.Name, repo.Name, comment.ID)
session.MakeRequest(t, req, http.StatusNoContent) session.MakeRequest(t, req, http.StatusNoContent)
models.AssertNotExistsBean(t, &models.Comment{ID: comment.ID}) models.AssertNotExistsBean(t, &models.Comment{ID: comment.ID})

271
public/swagger.v1.json vendored
View file

@ -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": { "/repos/{owner}/{repo}/commits/{ref}/statuses": {
"get": { "get": {
"produces": [ "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}": { "/repos/{owner}/{repo}/issues/{id}": {
"get": { "get": {
"produces": [ "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": { "/repos/{owner}/{repo}/issues/{index}/labels": {
"get": { "get": {
"produces": [ "produces": [

View file

@ -406,7 +406,8 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Group("/comments", func() { m.Group("/comments", func() {
m.Get("", repo.ListRepoIssueComments) m.Get("", repo.ListRepoIssueComments)
m.Combo("/:id", reqToken()). m.Combo("/:id", reqToken()).
Patch(bind(api.EditIssueCommentOption{}), repo.EditIssueComment) Patch(bind(api.EditIssueCommentOption{}), repo.EditIssueComment).
Delete(repo.DeleteIssueComment)
}) })
m.Group("/:index", func() { m.Group("/:index", func() {
m.Combo("").Get(repo.GetIssue). m.Combo("").Get(repo.GetIssue).
@ -415,8 +416,8 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Group("/comments", func() { m.Group("/comments", func() {
m.Combo("").Get(repo.ListIssueComments). m.Combo("").Get(repo.ListIssueComments).
Post(reqToken(), bind(api.CreateIssueCommentOption{}), repo.CreateIssueComment) Post(reqToken(), bind(api.CreateIssueCommentOption{}), repo.CreateIssueComment)
m.Combo("/:id", reqToken()).Patch(bind(api.EditIssueCommentOption{}), repo.EditIssueComment). m.Combo("/:id", reqToken()).Patch(bind(api.EditIssueCommentOption{}), repo.EditIssueCommentDeprecated).
Delete(repo.DeleteIssueComment) Delete(repo.DeleteIssueCommentDeprecated)
}) })
m.Group("/labels", func() { m.Group("/labels", func() {

View file

@ -168,7 +168,7 @@ func CreateIssueComment(ctx *context.APIContext, form api.CreateIssueCommentOpti
// EditIssueComment modify a comment of an issue // EditIssueComment modify a comment of an issue
func EditIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption) { 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 // summary: Edit a comment
// consumes: // consumes:
@ -198,6 +198,51 @@ func EditIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption)
// responses: // responses:
// "200": // "200":
// "$ref": "#/responses/Comment" // "$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")) comment, err := models.GetCommentByID(ctx.ParamsInt64(":id"))
if err != nil { if err != nil {
if models.IsErrCommentNotExist(err) { if models.IsErrCommentNotExist(err) {
@ -226,7 +271,7 @@ func EditIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption)
// DeleteIssueComment delete a comment from an issue // DeleteIssueComment delete a comment from an issue
func DeleteIssueComment(ctx *context.APIContext) { 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 // summary: Delete a comment
// parameters: // parameters:
@ -248,6 +293,43 @@ func DeleteIssueComment(ctx *context.APIContext) {
// responses: // responses:
// "204": // "204":
// "$ref": "#/responses/empty" // "$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
// 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 comment to delete
// type: integer
// required: true
// responses:
// "204":
// "$ref": "#/responses/empty"
deleteIssueComment(ctx)
}
func deleteIssueComment(ctx *context.APIContext) {
comment, err := models.GetCommentByID(ctx.ParamsInt64(":id")) comment, err := models.GetCommentByID(ctx.ParamsInt64(":id"))
if err != nil { if err != nil {
if models.IsErrCommentNotExist(err) { if models.IsErrCommentNotExist(err) {