mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 03:18:24 +00:00 
			
		
		
		
	Merge endpoints for pull diff/patch (#17104)
this merges the two API endpoints for the PR diff/patch in to one
This commit is contained in:
		| @@ -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). | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
| @@ -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 | ||||
|           } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user