summaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
authorZettat123 <zettat123@gmail.com>2023-03-17 09:04:52 +0800
committerGitHub <noreply@github.com>2023-03-16 21:04:52 -0400
commit301de3ab6b505bccdc3ee94c216e4d44bf508ff2 (patch)
tree3a644f37d86622788643a97028ea8599d6521953 /routers
parent8f8bd3c0cb19d30a4872000d1f8ab554a408f1e7 (diff)
downloadgitea-301de3ab6b505bccdc3ee94c216e4d44bf508ff2.tar.gz
gitea-301de3ab6b505bccdc3ee94c216e4d44bf508ff2.zip
Handle missing `README` in create repos API (#23387) (#23510)
Backport #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`. Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Diffstat (limited to 'routers')
-rw-r--r--routers/api/v1/admin/repo.go2
-rw-r--r--routers/api/v1/repo/repo.go11
2 files changed, 13 insertions, 0 deletions
diff --git a/routers/api/v1/admin/repo.go b/routers/api/v1/admin/repo.go
index 83ed06e49b..a4895f260b 100644
--- a/routers/api/v1/admin/repo.go
+++ b/routers/api/v1/admin/repo.go
@@ -32,6 +32,8 @@ func CreateRepo(ctx *context.APIContext) {
// responses:
// "201":
// "$ref": "#/responses/Repository"
+ // "400":
+ // "$ref": "#/responses/error"
// "403":
// "$ref": "#/responses/forbidden"
// "404":
diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go
index 8490eb99f9..11d5f00777 100644
--- a/routers/api/v1/repo/repo.go
+++ b/routers/api/v1/repo/repo.go
@@ -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.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":