|
|
|
@ -252,37 +252,55 @@ func MigrateRepo(ctx *middleware.Context, form auth.MigrateRepoForm) { |
|
|
|
|
ctx.JSON(201, ToApiRepository(ctxUser, repo, api.Permission{true, true, true})) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func DeleteRepo(ctx *middleware.Context) { |
|
|
|
|
user, err := models.GetUserByName(ctx.Params(":username")) |
|
|
|
|
func parseOwnerAndRepo(ctx *middleware.Context) (*models.User, *models.Repository) { |
|
|
|
|
owner, err := models.GetUserByName(ctx.Params(":username")) |
|
|
|
|
if err != nil { |
|
|
|
|
if models.IsErrUserNotExist(err) { |
|
|
|
|
ctx.APIError(422, "", err) |
|
|
|
|
} else { |
|
|
|
|
ctx.APIError(500, "GetUserByName", err) |
|
|
|
|
} |
|
|
|
|
return |
|
|
|
|
return nil, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
repo, err := models.GetRepositoryByName(user.Id, ctx.Params(":reponame")) |
|
|
|
|
repo, err := models.GetRepositoryByName(owner.Id, ctx.Params(":reponame")) |
|
|
|
|
if err != nil { |
|
|
|
|
if models.IsErrRepoNotExist(err) { |
|
|
|
|
ctx.Error(404) |
|
|
|
|
} else { |
|
|
|
|
ctx.APIError(500, "GetRepositoryByName", err) |
|
|
|
|
} |
|
|
|
|
return nil, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return owner, repo |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func GetRepo(ctx *middleware.Context) { |
|
|
|
|
owner, repo := parseOwnerAndRepo(ctx) |
|
|
|
|
if ctx.Written() { |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ctx.JSON(200, ToApiRepository(owner, repo, api.Permission{true, true, true})) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func DeleteRepo(ctx *middleware.Context) { |
|
|
|
|
owner, repo := parseOwnerAndRepo(ctx) |
|
|
|
|
if ctx.Written() { |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if user.IsOrganization() && !user.IsOwnedBy(ctx.User.Id) { |
|
|
|
|
if owner.IsOrganization() && !owner.IsOwnedBy(ctx.User.Id) { |
|
|
|
|
ctx.APIError(403, "", "Given user is not owner of organization.") |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if err := models.DeleteRepository(user.Id, repo.ID); err != nil { |
|
|
|
|
if err := models.DeleteRepository(owner.Id, repo.ID); err != nil { |
|
|
|
|
ctx.APIError(500, "DeleteRepository", err) |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
log.Trace("Repository deleted: %s/%s", user.Name, repo.Name) |
|
|
|
|
log.Trace("Repository deleted: %s/%s", owner.Name, repo.Name) |
|
|
|
|
ctx.Status(204) |
|
|
|
|
} |
|
|
|
|