Handle missing `README` in create repos API (#23387)
Close #22934 In `/user/repos` API (and other APIs related to creating repos), user can specify a readme template for auto init. At present, if the specified template does not exist, a `500` will be returned . This PR improved the logic and will return a `400` instead of `500`.
This commit is contained in:
		
							parent
							
								
									5eea61dbc8
								
							
						
					
					
						commit
						8421b8264f
					
				|  | @ -32,6 +32,8 @@ func CreateRepo(ctx *context.APIContext) { | |||
| 	// responses:
 | ||||
| 	//   "201":
 | ||||
| 	//     "$ref": "#/responses/Repository"
 | ||||
| 	//   "400":
 | ||||
| 	//     "$ref": "#/responses/error"
 | ||||
| 	//   "403":
 | ||||
| 	//     "$ref": "#/responses/forbidden"
 | ||||
| 	//   "404":
 | ||||
|  |  | |||
|  | @ -231,6 +231,13 @@ func CreateUserRepo(ctx *context.APIContext, owner *user_model.User, opt api.Cre | |||
| 	if opt.AutoInit && opt.Readme == "" { | ||||
| 		opt.Readme = "Default" | ||||
| 	} | ||||
| 
 | ||||
| 	// If the readme template does not exist, a 400 will be returned.
 | ||||
| 	if opt.AutoInit && len(opt.Readme) > 0 && !util.SliceContains(repo_module.Readmes, opt.Readme) { | ||||
| 		ctx.Error(http.StatusBadRequest, "", fmt.Errorf("readme template does not exist, available templates: %v", repo_module.Readmes)) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	repo, err := repo_service.CreateRepository(ctx, ctx.Doer, owner, repo_module.CreateRepoOptions{ | ||||
| 		Name:          opt.Name, | ||||
| 		Description:   opt.Description, | ||||
|  | @ -283,6 +290,8 @@ func Create(ctx *context.APIContext) { | |||
| 	// responses:
 | ||||
| 	//   "201":
 | ||||
| 	//     "$ref": "#/responses/Repository"
 | ||||
| 	//   "400":
 | ||||
| 	//     "$ref": "#/responses/error"
 | ||||
| 	//   "409":
 | ||||
| 	//     description: The repository with the same name already exists.
 | ||||
| 	//   "422":
 | ||||
|  | @ -464,6 +473,8 @@ func CreateOrgRepo(ctx *context.APIContext) { | |||
| 	// responses:
 | ||||
| 	//   "201":
 | ||||
| 	//     "$ref": "#/responses/Repository"
 | ||||
| 	//   "400":
 | ||||
| 	//     "$ref": "#/responses/error"
 | ||||
| 	//   "404":
 | ||||
| 	//     "$ref": "#/responses/notFound"
 | ||||
| 	//   "403":
 | ||||
|  |  | |||
|  | @ -713,6 +713,9 @@ | |||
|           "201": { | ||||
|             "$ref": "#/responses/Repository" | ||||
|           }, | ||||
|           "400": { | ||||
|             "$ref": "#/responses/error" | ||||
|           }, | ||||
|           "403": { | ||||
|             "$ref": "#/responses/forbidden" | ||||
|           }, | ||||
|  | @ -1926,6 +1929,9 @@ | |||
|           "201": { | ||||
|             "$ref": "#/responses/Repository" | ||||
|           }, | ||||
|           "400": { | ||||
|             "$ref": "#/responses/error" | ||||
|           }, | ||||
|           "403": { | ||||
|             "$ref": "#/responses/forbidden" | ||||
|           }, | ||||
|  | @ -13382,6 +13388,9 @@ | |||
|           "201": { | ||||
|             "$ref": "#/responses/Repository" | ||||
|           }, | ||||
|           "400": { | ||||
|             "$ref": "#/responses/error" | ||||
|           }, | ||||
|           "409": { | ||||
|             "description": "The repository with the same name already exists." | ||||
|           }, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue