diff options
author | 无闻 <u@gogs.io> | 2015-10-08 20:01:56 -0400 |
---|---|---|
committer | 无闻 <u@gogs.io> | 2015-10-08 20:01:56 -0400 |
commit | b1941f1da18b8c6ca046771c21f21ba793765518 (patch) | |
tree | 77edc0b7a5223b5cd6a8c8d1cda35a7aca6f9c7b /routers | |
parent | 19c3745488413aa2dc26d54d6781212dc23985ab (diff) | |
parent | 6fe868a4d512adf3d4cf652a777c0c16521fbe5c (diff) | |
download | gitea-b1941f1da18b8c6ca046771c21f21ba793765518.tar.gz gitea-b1941f1da18b8c6ca046771c21f21ba793765518.zip |
Merge pull request #1736 from soudy/develop
Added repository remove option to API
Diffstat (limited to 'routers')
-rw-r--r-- | routers/api/v1/repo.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/routers/api/v1/repo.go b/routers/api/v1/repo.go index d38a0b0ff2..9fd2f92a1a 100644 --- a/routers/api/v1/repo.go +++ b/routers/api/v1/repo.go @@ -253,3 +253,39 @@ func MigrateRepo(ctx *middleware.Context, form auth.MigrateRepoForm) { log.Trace("Repository migrated: %s/%s", ctxUser.Name, form.RepoName) ctx.JSON(201, ToApiRepository(ctxUser, repo, api.Permission{true, true, true})) } + +func RemoveRepo(ctx *middleware.Context) { + user, err := models.GetUserByName(ctx.Params(":owner")) + if err != nil { + if models.IsErrUserNotExist(err) { + ctx.HandleAPI(404, err) + } else { + ctx.JSON(500, &base.ApiJsonErr{"GetUserByName: " + err.Error(), base.DOC_URL}) + } + return + } + + repo, err := models.GetRepositoryByName(user.Id, ctx.Params(":reponame")) + if err != nil { + if models.IsErrRepoNotExist(err) { + ctx.HandleAPI(404, err) + } else { + ctx.JSON(500, &base.ApiJsonErr{"GetRepositoryByName: " + err.Error(), base.DOC_URL}) + } + return + } + + if user.IsOrganization() && !user.IsOwnedBy(ctx.User.Id) { + ctx.HandleAPI(403, "Given user is not owner of organization.") + return + } + + if err := models.DeleteRepository(user.Id, repo.ID); err != nil { + log.Error(4, "DeleteRespository: %v:", err) + ctx.HandleAPI(500, err) + return + } + + log.Trace("Repository deleted: %s/%s", user.Name, repo.Name) + ctx.Status(204) +} |