From 0fa153f4219bc6a447891f30f4dbc60bf180ee4c Mon Sep 17 00:00:00 2001 From: qwerty287 <80460567+qwerty287@users.noreply.github.com> Date: Wed, 22 Sep 2021 01:04:53 +0200 Subject: [PATCH] Merge endpoints for pull diff/patch (#17104) this merges the two API endpoints for the PR diff/patch in to one --- routers/api/v1/api.go | 3 +- routers/api/v1/repo/pull.go | 105 +++++++++++++-------------------- templates/swagger/v1_json.tmpl | 51 +++------------- 3 files changed, 50 insertions(+), 109 deletions(-) diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 90189701c0..082381d31c 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -897,8 +897,7 @@ func Routes(sessioner func(http.Handler) http.Handler) *web.Route { m.Group("/{index}", func() { m.Combo("").Get(repo.GetPullRequest). Patch(reqToken(), bind(api.EditPullRequestOption{}), repo.EditPullRequest) - m.Get(".diff", repo.DownloadPullDiff) - m.Get(".patch", repo.DownloadPullPatch) + m.Get(".{diffType:diff|patch}", repo.DownloadPullDiffOrPatch) m.Post("/update", reqToken(), repo.UpdatePullRequest) m.Get("/commits", repo.GetPullRequestCommits) m.Combo("/merge").Get(repo.IsPullRequestMerged). diff --git a/routers/api/v1/repo/pull.go b/routers/api/v1/repo/pull.go index dee9a94bca..b9767b413d 100644 --- a/routers/api/v1/repo/pull.go +++ b/routers/api/v1/repo/pull.go @@ -174,72 +174,41 @@ func GetPullRequest(ctx *context.APIContext) { ctx.JSON(http.StatusOK, convert.ToAPIPullRequest(pr)) } -// DownloadPullDiff render a pull's raw diff -func DownloadPullDiff(ctx *context.APIContext) { - // swagger:operation GET /repos/{owner}/{repo}/pulls/{index}.diff repository repoDownloadPullDiff - // --- - // summary: Get a pull request diff - // produces: - // - text/plain - // 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: index of the pull request to get - // type: integer - // format: int64 - // required: true - // responses: - // "200": - // "$ref": "#/responses/string" - // "404": - // "$ref": "#/responses/notFound" - DownloadPullDiffOrPatch(ctx, false) -} - -// DownloadPullPatch render a pull's raw patch -func DownloadPullPatch(ctx *context.APIContext) { - // swagger:operation GET /repos/{owner}/{repo}/pulls/{index}.patch repository repoDownloadPullPatch - // --- - // summary: Get a pull request patch file - // produces: - // - text/plain - // 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: index of the pull request to get - // type: integer - // format: int64 - // required: true - // responses: - // "200": - // "$ref": "#/responses/string" - // "404": - // "$ref": "#/responses/notFound" - DownloadPullDiffOrPatch(ctx, true) -} - // DownloadPullDiffOrPatch render a pull's raw diff or patch -func DownloadPullDiffOrPatch(ctx *context.APIContext, patch bool) { +func DownloadPullDiffOrPatch(ctx *context.APIContext) { + // swagger:operation GET /repos/{owner}/{repo}/pulls/{index}.{diffType} repository repoDownloadPullDiffOrPatch + // --- + // summary: Get a pull request diff or patch + // produces: + // - text/plain + // 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: index of the pull request to get + // type: integer + // format: int64 + // required: true + // - name: diffType + // in: path + // description: whether the output is diff or patch + // type: string + // enum: [diff, patch] + // required: true + // responses: + // "200": + // "$ref": "#/responses/string" + // "404": + // "$ref": "#/responses/notFound" pr, err := models.GetPullRequestByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index")) if err != nil { if models.IsErrPullRequestNotExist(err) { @@ -249,6 +218,12 @@ func DownloadPullDiffOrPatch(ctx *context.APIContext, patch bool) { } return } + var patch bool + if ctx.Params(":diffType") == "diff" { + patch = false + } else { + patch = true + } if err := pull_service.DownloadDiffOrPatch(pr, ctx, patch); err != nil { ctx.InternalServerError(err) diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index 77c89aea3a..63eba45832 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -7357,7 +7357,7 @@ } } }, - "/repos/{owner}/{repo}/pulls/{index}.diff": { + "/repos/{owner}/{repo}/pulls/{index}.{diffType}": { "get": { "produces": [ "text/plain" @@ -7365,8 +7365,8 @@ "tags": [ "repository" ], - "summary": "Get a pull request diff", - "operationId": "repoDownloadPullDiff", + "summary": "Get a pull request diff or patch", + "operationId": "repoDownloadPullDiffOrPatch", "parameters": [ { "type": "string", @@ -7389,48 +7389,15 @@ "name": "index", "in": "path", "required": true - } - ], - "responses": { - "200": { - "$ref": "#/responses/string" }, - "404": { - "$ref": "#/responses/notFound" - } - } - } - }, - "/repos/{owner}/{repo}/pulls/{index}.patch": { - "get": { - "produces": [ - "text/plain" - ], - "tags": [ - "repository" - ], - "summary": "Get a pull request patch file", - "operationId": "repoDownloadPullPatch", - "parameters": [ { + "enum": [ + "diff", + "patch" + ], "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", - "format": "int64", - "description": "index of the pull request to get", - "name": "index", + "description": "whether the output is diff or patch", + "name": "diffType", "in": "path", "required": true }