diff options
Diffstat (limited to 'internal/route')
56 files changed, 847 insertions, 909 deletions
diff --git a/internal/route/admin/admin.go b/internal/route/admin/admin.go index 25da7333..0adfac80 100644 --- a/internal/route/admin/admin.go +++ b/internal/route/admin/admin.go @@ -163,7 +163,7 @@ func Dashboard(c *context.Context) { } else { c.Flash.Success(success) } - c.SubURLRedirect("/admin") + c.RedirectSubpath("/admin") return } @@ -239,5 +239,5 @@ func Monitor(c *context.Context) { c.Data["PageIsAdminMonitor"] = true c.Data["Processes"] = process.Processes c.Data["Entries"] = cron.ListTasks() - c.HTML(200, MONITOR) + c.Success( MONITOR) } diff --git a/internal/route/admin/auths.go b/internal/route/admin/auths.go index 9896b5b9..bcf52e5e 100644 --- a/internal/route/admin/auths.go +++ b/internal/route/admin/auths.go @@ -34,7 +34,7 @@ func Authentications(c *context.Context) { var err error c.Data["Sources"], err = db.LoginSources() if err != nil { - c.ServerError("LoginSources", err) + c.Error(err, "list login sources") return } @@ -146,7 +146,7 @@ func NewAuthSourcePost(c *context.Context, f form.Authentication) { APIEndpoint: strings.TrimSuffix(f.GitHubAPIEndpoint, "/") + "/", } default: - c.Error(http.StatusBadRequest) + c.Status(http.StatusBadRequest) return } c.Data["HasTLS"] = hasTLS @@ -167,7 +167,7 @@ func NewAuthSourcePost(c *context.Context, f form.Authentication) { c.FormErr("Name") c.RenderWithErr(c.Tr("admin.auths.login_source_exist", err.(db.ErrLoginSourceAlreadyExist).Name), AUTH_NEW, f) } else { - c.ServerError("CreateSource", err) + c.Error(err, "create login source") } return } @@ -188,7 +188,7 @@ func EditAuthSource(c *context.Context) { source, err := db.GetLoginSourceByID(c.ParamsInt64(":authid")) if err != nil { - c.ServerError("GetLoginSourceByID", err) + c.Error(err, "get login source by ID") return } c.Data["Source"] = source @@ -206,7 +206,7 @@ func EditAuthSourcePost(c *context.Context, f form.Authentication) { source, err := db.GetLoginSourceByID(c.ParamsInt64(":authid")) if err != nil { - c.ServerError("GetLoginSourceByID", err) + c.Error(err, "get login source by ID") return } c.Data["Source"] = source @@ -232,7 +232,7 @@ func EditAuthSourcePost(c *context.Context, f form.Authentication) { APIEndpoint: strings.TrimSuffix(f.GitHubAPIEndpoint, "/") + "/", } default: - c.Error(http.StatusBadRequest) + c.Status(http.StatusBadRequest) return } @@ -241,7 +241,7 @@ func EditAuthSourcePost(c *context.Context, f form.Authentication) { source.IsDefault = f.IsDefault source.Cfg = config if err := db.UpdateLoginSource(source); err != nil { - c.ServerError("UpdateLoginSource", err) + c.Error(err, "update login source") return } @@ -254,7 +254,7 @@ func EditAuthSourcePost(c *context.Context, f form.Authentication) { func DeleteAuthSource(c *context.Context) { source, err := db.GetLoginSourceByID(c.ParamsInt64(":authid")) if err != nil { - c.ServerError("GetLoginSourceByID", err) + c.Error(err, "get login source by ID") return } diff --git a/internal/route/admin/notice.go b/internal/route/admin/notice.go index 20ce1356..94fc22cd 100644 --- a/internal/route/admin/notice.go +++ b/internal/route/admin/notice.go @@ -5,6 +5,8 @@ package admin import ( + "net/http" + "github.com/unknwon/com" "github.com/unknwon/paginater" log "unknwon.dev/clog/v2" @@ -19,7 +21,7 @@ const ( ) func Notices(c *context.Context) { - c.Data["Title"] = c.Tr("admin.notices") + c.Title("admin.notices") c.Data["PageIsAdmin"] = true c.Data["PageIsAdminNotices"] = true @@ -32,13 +34,13 @@ func Notices(c *context.Context) { notices, err := db.Notices(page, conf.UI.Admin.NoticePagingNum) if err != nil { - c.Handle(500, "Notices", err) + c.Error(err, "list notices") return } c.Data["Notices"] = notices c.Data["Total"] = total - c.HTML(200, NOTICES) + c.Success(NOTICES) } func DeleteNotices(c *context.Context) { @@ -53,16 +55,16 @@ func DeleteNotices(c *context.Context) { if err := db.DeleteNoticesByIDs(ids); err != nil { c.Flash.Error("DeleteNoticesByIDs: " + err.Error()) - c.Status(500) + c.Status(http.StatusInternalServerError) } else { c.Flash.Success(c.Tr("admin.notices.delete_success")) - c.Status(200) + c.Status(http.StatusOK) } } func EmptyNotices(c *context.Context) { if err := db.DeleteNotices(0, 0); err != nil { - c.Handle(500, "DeleteNotices", err) + c.Error(err,"delete notices") return } diff --git a/internal/route/admin/repos.go b/internal/route/admin/repos.go index f8f48541..12560b02 100644 --- a/internal/route/admin/repos.go +++ b/internal/route/admin/repos.go @@ -37,7 +37,7 @@ func Repos(c *context.Context) { if len(keyword) == 0 { repos, err = db.Repositories(page, conf.UI.Admin.RepoPagingNum) if err != nil { - c.Handle(500, "Repositories", err) + c.Error(err, "list repositories") return } count = db.CountRepositories(true) @@ -50,7 +50,7 @@ func Repos(c *context.Context) { PageSize: conf.UI.Admin.RepoPagingNum, }) if err != nil { - c.Handle(500, "SearchRepositoryByName", err) + c.Error(err, "search repository by name") return } } @@ -59,29 +59,29 @@ func Repos(c *context.Context) { c.Data["Page"] = paginater.New(int(count), conf.UI.Admin.RepoPagingNum, page, 5) if err = db.RepositoryList(repos).LoadAttributes(); err != nil { - c.Handle(500, "LoadAttributes", err) + c.Error(err, "load attributes") return } c.Data["Repos"] = repos - c.HTML(200, REPOS) + c.Success(REPOS) } func DeleteRepo(c *context.Context) { repo, err := db.GetRepositoryByID(c.QueryInt64("id")) if err != nil { - c.Handle(500, "GetRepositoryByID", err) + c.Error(err, "get repository by ID") return } if err := db.DeleteRepository(repo.MustOwner().ID, repo.ID); err != nil { - c.Handle(500, "DeleteRepository", err) + c.Error(err, "delete repository") return } log.Trace("Repository deleted: %s/%s", repo.MustOwner().Name, repo.Name) c.Flash.Success(c.Tr("repo.settings.deletion_success")) - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "redirect": conf.Server.Subpath + "/admin/repos?page=" + c.Query("page"), }) } diff --git a/internal/route/admin/users.go b/internal/route/admin/users.go index 8d503573..630fa4ca 100644 --- a/internal/route/admin/users.go +++ b/internal/route/admin/users.go @@ -48,13 +48,13 @@ func NewUser(c *context.Context) { sources, err := db.LoginSources() if err != nil { - c.Handle(500, "LoginSources", err) + c.Error(err, "list login sources") return } c.Data["Sources"] = sources c.Data["CanSendEmail"] = conf.Email.Enabled - c.HTML(200, USER_NEW) + c.Success(USER_NEW) } func NewUserPost(c *context.Context, f form.AdminCrateUser) { @@ -64,7 +64,7 @@ func NewUserPost(c *context.Context, f form.AdminCrateUser) { sources, err := db.LoginSources() if err != nil { - c.Handle(500, "LoginSources", err) + c.Error(err, "list login sources") return } c.Data["Sources"] = sources @@ -72,7 +72,7 @@ func NewUserPost(c *context.Context, f form.AdminCrateUser) { c.Data["CanSendEmail"] = conf.Email.Enabled if c.HasError() { - c.HTML(200, USER_NEW) + c.Success(USER_NEW) return } @@ -108,7 +108,7 @@ func NewUserPost(c *context.Context, f form.AdminCrateUser) { c.Data["Err_UserName"] = true c.RenderWithErr(c.Tr("user.form.name_pattern_not_allowed", err.(db.ErrNamePatternNotAllowed).Pattern), USER_NEW, &f) default: - c.Handle(500, "CreateUser", err) + c.Error(err, "create user") } return } @@ -126,7 +126,7 @@ func NewUserPost(c *context.Context, f form.AdminCrateUser) { func prepareUserInfo(c *context.Context) *db.User { u, err := db.GetUserByID(c.ParamsInt64(":userid")) if err != nil { - c.Handle(500, "GetUserByID", err) + c.Error(err, "get user by ID") return nil } c.Data["User"] = u @@ -134,7 +134,7 @@ func prepareUserInfo(c *context.Context) *db.User { if u.LoginSource > 0 { c.Data["LoginSource"], err = db.GetLoginSourceByID(u.LoginSource) if err != nil { - c.Handle(500, "GetLoginSourceByID", err) + c.Error(err, "get login source by ID") return nil } } else { @@ -143,7 +143,7 @@ func prepareUserInfo(c *context.Context) *db.User { sources, err := db.LoginSources() if err != nil { - c.Handle(500, "LoginSources", err) + c.Error(err, "list login sources") return nil } c.Data["Sources"] = sources @@ -162,7 +162,7 @@ func EditUser(c *context.Context) { return } - c.HTML(200, USER_EDIT) + c.Success(USER_EDIT) } func EditUserPost(c *context.Context, f form.AdminEditUser) { @@ -177,7 +177,7 @@ func EditUserPost(c *context.Context, f form.AdminEditUser) { } if c.HasError() { - c.HTML(200, USER_EDIT) + c.Success(USER_EDIT) return } @@ -196,7 +196,7 @@ func EditUserPost(c *context.Context, f form.AdminEditUser) { u.Passwd = f.Password var err error if u.Salt, err = db.GetUserSalt(); err != nil { - c.Handle(500, "UpdateUser", err) + c.Error(err, "get user salt") return } u.EncodePasswd() @@ -219,7 +219,7 @@ func EditUserPost(c *context.Context, f form.AdminEditUser) { c.Data["Err_Email"] = true c.RenderWithErr(c.Tr("form.email_been_used"), USER_EDIT, &f) } else { - c.Handle(500, "UpdateUser", err) + c.Error(err, "update user") } return } @@ -232,7 +232,7 @@ func EditUserPost(c *context.Context, f form.AdminEditUser) { func DeleteUser(c *context.Context) { u, err := db.GetUserByID(c.ParamsInt64(":userid")) if err != nil { - c.Handle(500, "GetUserByID", err) + c.Error(err, "get user by ID") return } @@ -240,23 +240,23 @@ func DeleteUser(c *context.Context) { switch { case db.IsErrUserOwnRepos(err): c.Flash.Error(c.Tr("admin.users.still_own_repo")) - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "redirect": conf.Server.Subpath + "/admin/users/" + c.Params(":userid"), }) case db.IsErrUserHasOrgs(err): c.Flash.Error(c.Tr("admin.users.still_has_org")) - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "redirect": conf.Server.Subpath + "/admin/users/" + c.Params(":userid"), }) default: - c.Handle(500, "DeleteUser", err) + c.Error(err, "delete user") } return } log.Trace("Account deleted by admin (%s): %s", c.User.Name, u.Name) c.Flash.Success(c.Tr("admin.users.deletion_success")) - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "redirect": conf.Server.Subpath + "/admin/users", }) } diff --git a/internal/route/api/v1/admin/org.go b/internal/route/api/v1/admin/org.go index 758f41e6..14350b1c 100644 --- a/internal/route/api/v1/admin/org.go +++ b/internal/route/api/v1/admin/org.go @@ -6,12 +6,12 @@ package admin import ( api "github.com/gogs/go-gogs-client" - org2 "gogs.io/gogs/internal/route/api/v1/org" - user2 "gogs.io/gogs/internal/route/api/v1/user" "gogs.io/gogs/internal/context" + "gogs.io/gogs/internal/route/api/v1/org" + "gogs.io/gogs/internal/route/api/v1/user" ) func CreateOrg(c *context.APIContext, form api.CreateOrgOption) { - org2.CreateOrgForUser(c, form, user2.GetUserByParams(c)) + org.CreateOrgForUser(c, form, user.GetUserByParams(c)) } diff --git a/internal/route/api/v1/admin/org_repo.go b/internal/route/api/v1/admin/org_repo.go index b17b1462..63a638fa 100644 --- a/internal/route/api/v1/admin/org_repo.go +++ b/internal/route/api/v1/admin/org_repo.go @@ -7,13 +7,12 @@ package admin import ( "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" ) func GetRepositoryByParams(c *context.APIContext) *db.Repository { repo, err := db.GetRepositoryByName(c.Org.Team.OrgID, c.Params(":reponame")) if err != nil { - c.NotFoundOrServerError("GetRepositoryByName", errors.IsRepoNotExist, err) + c.NotFoundOrError(err, "get repository by name") return nil } return repo @@ -25,7 +24,7 @@ func AddTeamRepository(c *context.APIContext) { return } if err := c.Org.Team.AddRepository(repo); err != nil { - c.ServerError("AddRepository", err) + c.Error(err, "add repository") return } @@ -38,7 +37,7 @@ func RemoveTeamRepository(c *context.APIContext) { return } if err := c.Org.Team.RemoveRepository(repo.ID); err != nil { - c.ServerError("RemoveRepository", err) + c.Error(err, "remove repository") return } diff --git a/internal/route/api/v1/admin/org_team.go b/internal/route/api/v1/admin/org_team.go index e81b6b1b..953f0936 100644 --- a/internal/route/api/v1/admin/org_team.go +++ b/internal/route/api/v1/admin/org_team.go @@ -5,14 +5,14 @@ package admin import ( - convert2 "gogs.io/gogs/internal/route/api/v1/convert" - user2 "gogs.io/gogs/internal/route/api/v1/user" "net/http" api "github.com/gogs/go-gogs-client" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" + "gogs.io/gogs/internal/route/api/v1/convert" + "gogs.io/gogs/internal/route/api/v1/user" ) func CreateTeam(c *context.APIContext, form api.CreateTeamOption) { @@ -24,23 +24,23 @@ func CreateTeam(c *context.APIContext, form api.CreateTeamOption) { } if err := db.NewTeam(team); err != nil { if db.IsErrTeamAlreadyExist(err) { - c.Error(http.StatusUnprocessableEntity, "", err) + c.ErrorStatus(http.StatusUnprocessableEntity, err) } else { - c.ServerError("NewTeam", err) + c.Error(err, "new team") } return } - c.JSON(http.StatusCreated, convert2.ToTeam(team)) + c.JSON(http.StatusCreated, convert.ToTeam(team)) } func AddTeamMember(c *context.APIContext) { - u := user2.GetUserByParams(c) + u := user.GetUserByParams(c) if c.Written() { return } if err := c.Org.Team.AddMember(u.ID); err != nil { - c.ServerError("AddMember", err) + c.Error(err, "add member") return } @@ -48,13 +48,13 @@ func AddTeamMember(c *context.APIContext) { } func RemoveTeamMember(c *context.APIContext) { - u := user2.GetUserByParams(c) + u := user.GetUserByParams(c) if c.Written() { return } if err := c.Org.Team.RemoveMember(u.ID); err != nil { - c.ServerError("RemoveMember", err) + c.Error(err, "remove member") return } diff --git a/internal/route/api/v1/admin/repo.go b/internal/route/api/v1/admin/repo.go index 68a26297..22931036 100644 --- a/internal/route/api/v1/admin/repo.go +++ b/internal/route/api/v1/admin/repo.go @@ -6,17 +6,17 @@ package admin import ( api "github.com/gogs/go-gogs-client" - repo2 "gogs.io/gogs/internal/route/api/v1/repo" - user2 "gogs.io/gogs/internal/route/api/v1/user" "gogs.io/gogs/internal/context" + "gogs.io/gogs/internal/route/api/v1/repo" + "gogs.io/gogs/internal/route/api/v1/user" ) func CreateRepo(c *context.APIContext, form api.CreateRepoOption) { - owner := user2.GetUserByParams(c) + owner := user.GetUserByParams(c) if c.Written() { return } - repo2.CreateUserRepo(c, owner, form) + repo.CreateUserRepo(c, owner, form) } diff --git a/internal/route/api/v1/admin/user.go b/internal/route/api/v1/admin/user.go index 00b13bfd..c339edd2 100644 --- a/internal/route/api/v1/admin/user.go +++ b/internal/route/api/v1/admin/user.go @@ -7,9 +7,8 @@ package admin import ( "net/http" - log "unknwon.dev/clog/v2" - api "github.com/gogs/go-gogs-client" + log "unknwon.dev/clog/v2" "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" @@ -27,9 +26,9 @@ func parseLoginSource(c *context.APIContext, u *db.User, sourceID int64, loginNa source, err := db.GetLoginSourceByID(sourceID) if err != nil { if errors.IsLoginSourceNotExist(err) { - c.Error(http.StatusUnprocessableEntity, "", err) + c.ErrorStatus(http.StatusUnprocessableEntity, err) } else { - c.ServerError("GetLoginSourceByID", err) + c.Error(err, "get login source by ID") } return } @@ -59,9 +58,9 @@ func CreateUser(c *context.APIContext, form api.CreateUserOption) { db.IsErrEmailAlreadyUsed(err) || db.IsErrNameReserved(err) || db.IsErrNamePatternNotAllowed(err) { - c.Error(http.StatusUnprocessableEntity, "", err) + c.ErrorStatus(http.StatusUnprocessableEntity, err) } else { - c.ServerError("CreateUser", err) + c.Error(err, "create user") } return } @@ -90,7 +89,7 @@ func EditUser(c *context.APIContext, form api.EditUserOption) { u.Passwd = form.Password var err error if u.Salt, err = db.GetUserSalt(); err != nil { - c.ServerError("GetUserSalt", err) + c.Error(err, "get user salt") return } u.EncodePasswd() @@ -119,9 +118,9 @@ func EditUser(c *context.APIContext, form api.EditUserOption) { if err := db.UpdateUser(u); err != nil { if db.IsErrEmailAlreadyUsed(err) { - c.Error(http.StatusUnprocessableEntity, "", err) + c.ErrorStatus(http.StatusUnprocessableEntity, err) } else { - c.ServerError("UpdateUser", err) + c.Error(err, "update user") } return } @@ -139,9 +138,9 @@ func DeleteUser(c *context.APIContext) { if err := db.DeleteUser(u); err != nil { if db.IsErrUserOwnRepos(err) || db.IsErrUserHasOrgs(err) { - c.Error(http.StatusUnprocessableEntity, "", err) + c.ErrorStatus(http.StatusUnprocessableEntity, err) } else { - c.ServerError("DeleteUser", err) + c.Error(err, "delete user") } return } diff --git a/internal/route/api/v1/api.go b/internal/route/api/v1/api.go index 98394049..b56d640b 100644 --- a/internal/route/api/v1/api.go +++ b/internal/route/api/v1/api.go @@ -15,7 +15,6 @@ import ( "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" "gogs.io/gogs/internal/form" "gogs.io/gogs/internal/route/api/v1/admin" "gogs.io/gogs/internal/route/api/v1/misc" @@ -40,7 +39,7 @@ func repoAssignment() macaron.Handler { } else { owner, err = db.GetUserByName(username) if err != nil { - c.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err) + c.NotFoundOrError(err, "get user by name") return } } @@ -48,10 +47,10 @@ func repoAssignment() macaron.Handler { r, err := db.GetRepositoryByName(owner.ID, reponame) if err != nil { - c.NotFoundOrServerError("GetRepositoryByName", errors.IsRepoNotExist, err) + c.NotFoundOrError(err, "get repository by name") return } else if err = r.GetOwner(); err != nil { - c.ServerError("GetOwner", err) + c.Error(err, "get owner") return } @@ -60,7 +59,7 @@ func repoAssignment() macaron.Handler { } else { mode, err := db.UserAccessMode(c.UserID(), r) if err != nil { - c.ServerError("UserAccessMode", err) + c.Error(err, "get user access mode") return } c.Repo.AccessMode = mode @@ -94,7 +93,7 @@ func orgAssignment(args ...bool) macaron.Handler { if assignOrg { c.Org.Organization, err = db.GetUserByName(c.Params(":orgname")) if err != nil { - c.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err) + c.NotFoundOrError(err, "get organization by name") return } } @@ -102,7 +101,7 @@ func orgAssignment(args ...bool) macaron.Handler { if assignTeam { c.Org.Team, err = db.GetTeamByID(c.ParamsInt64(":teamid")) if err != nil { - c.NotFoundOrServerError("GetTeamByID", errors.IsTeamNotExist, err) + c.NotFoundOrError(err, "get team by ID") return } } @@ -113,7 +112,7 @@ func orgAssignment(args ...bool) macaron.Handler { func reqToken() macaron.Handler { return func(c *context.Context) { if !c.IsTokenAuth { - c.Error(http.StatusUnauthorized) + c.Status(http.StatusUnauthorized) return } } @@ -123,7 +122,7 @@ func reqToken() macaron.Handler { func reqBasicAuth() macaron.Handler { return func(c *context.Context) { if !c.IsBasicAuth { - c.Error(http.StatusUnauthorized) + c.Status(http.StatusUnauthorized) return } } @@ -133,7 +132,7 @@ func reqBasicAuth() macaron.Handler { func reqAdmin() macaron.Handler { return func(c *context.Context) { if !c.IsLogged || !c.User.IsAdmin { - c.Error(http.StatusForbidden) + c.Status(http.StatusForbidden) return } } @@ -143,7 +142,7 @@ func reqAdmin() macaron.Handler { func reqRepoWriter() macaron.Handler { return func(c *context.Context) { if !c.Repo.IsWriter() { - c.Error(http.StatusForbidden) + c.Status(http.StatusForbidden) return } } @@ -153,7 +152,7 @@ func reqRepoWriter() macaron.Handler { func reqRepoAdmin() macaron.Handler { return func(c *context.Context) { if !c.Repo.IsAdmin() { - c.Error(http.StatusForbidden) + c.Status(http.StatusForbidden) return } } diff --git a/internal/route/api/v1/misc/markdown.go b/internal/route/api/v1/misc/markdown.go index 10889d3b..be92a164 100644 --- a/internal/route/api/v1/misc/markdown.go +++ b/internal/route/api/v1/misc/markdown.go @@ -5,8 +5,6 @@ package misc import ( - "net/http" - api "github.com/gogs/go-gogs-client" "gogs.io/gogs/internal/context" @@ -14,11 +12,6 @@ import ( ) func Markdown(c *context.APIContext, form api.MarkdownOption) { - if c.HasApiError() { - c.Error(http.StatusUnprocessableEntity, "", c.GetErrMsg()) - return - } - if len(form.Text) == 0 { _, _ = c.Write([]byte("")) return @@ -30,7 +23,7 @@ func Markdown(c *context.APIContext, form api.MarkdownOption) { func MarkdownRaw(c *context.APIContext) { body, err := c.Req.Body().Bytes() if err != nil { - c.Error(http.StatusUnprocessableEntity, "", err) + c.Error(err, "read body") return } _, _ = c.Write(markup.SanitizeBytes(markup.RawMarkdown(body, ""))) diff --git a/internal/route/api/v1/org/org.go b/internal/route/api/v1/org/org.go index dbb3e4dd..0bcefbe4 100644 --- a/internal/route/api/v1/org/org.go +++ b/internal/route/api/v1/org/org.go @@ -5,14 +5,14 @@ package org import ( - convert2 "gogs.io/gogs/internal/route/api/v1/convert" - user2 "gogs.io/gogs/internal/route/api/v1/user" "net/http" api "github.com/gogs/go-gogs-client" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" + "gogs.io/gogs/internal/route/api/v1/convert" + "gogs.io/gogs/internal/route/api/v1/user" ) func CreateOrgForUser(c *context.APIContext, apiForm api.CreateOrgOption, user *db.User) { @@ -33,25 +33,25 @@ func CreateOrgForUser(c *context.APIContext, apiForm api.CreateOrgOption, user * if db.IsErrUserAlreadyExist(err) || db.IsErrNameReserved(err) || db.IsErrNamePatternNotAllowed(err) { - c.Error(http.StatusUnprocessableEntity, "", err) + c.ErrorStatus(http.StatusUnprocessableEntity, err) } else { - c.ServerError("CreateOrganization", err) + c.Error(err, "create organization") } return } - c.JSON(201, convert2.ToOrganization(org)) + c.JSON(201, convert.ToOrganization(org)) } func listUserOrgs(c *context.APIContext, u *db.User, all bool) { if err := u.GetOrganizations(all); err != nil { - c.ServerError("GetOrganizations", err) + c.Error(err, "get organization") return } apiOrgs := make([]*api.Organization, len(u.Orgs)) for i := range u.Orgs { - apiOrgs[i] = convert2.ToOrganization(u.Orgs[i]) + apiOrgs[i] = convert.ToOrganization(u.Orgs[i]) } c.JSONSuccess(&apiOrgs) } @@ -65,7 +65,7 @@ func CreateMyOrg(c *context.APIContext, apiForm api.CreateOrgOption) { } func ListUserOrgs(c *context.APIContext) { - u := user2.GetUserByParams(c) + u := user.GetUserByParams(c) if c.Written() { return } @@ -73,7 +73,7 @@ func ListUserOrgs(c *context.APIContext) { } func Get(c *context.APIContext) { - c.JSONSuccess(convert2.ToOrganization(c.Org.Organization)) + c.JSONSuccess(convert.ToOrganization(c.Org.Organization)) } func Edit(c *context.APIContext, form api.EditOrgOption) { @@ -88,9 +88,9 @@ func Edit(c *context.APIContext, form api.EditOrgOption) { org.Website = form.Website org.Location = form.Location if err := db.UpdateUser(org); err != nil { - c.ServerError("UpdateUser", err) + c.Error(err, "update user") return } - c.JSONSuccess(convert2.ToOrganization(org)) + c.JSONSuccess(convert.ToOrganization(org)) } diff --git a/internal/route/api/v1/org/team.go b/internal/route/api/v1/org/team.go index 528e6183..75a6ae11 100644 --- a/internal/route/api/v1/org/team.go +++ b/internal/route/api/v1/org/team.go @@ -6,21 +6,21 @@ package org import ( api "github.com/gogs/go-gogs-client" - convert2 "gogs.io/gogs/internal/route/api/v1/convert" "gogs.io/gogs/internal/context" + "gogs.io/gogs/internal/route/api/v1/convert" ) func ListTeams(c *context.APIContext) { org := c.Org.Organization if err := org.GetTeams(); err != nil { - c.Error(500, "GetTeams", err) + c.Error(err, "get teams") return } apiTeams := make([]*api.Team, len(org.Teams)) for i := range org.Teams { - apiTeams[i] = convert2.ToTeam(org.Teams[i]) + apiTeams[i] = convert.ToTeam(org.Teams[i]) } - c.JSON(200, apiTeams) + c.JSONSuccess(apiTeams) } diff --git a/internal/route/api/v1/repo/branch.go b/internal/route/api/v1/repo/branch.go index b90d1e24..3ddf62cc 100644 --- a/internal/route/api/v1/repo/branch.go +++ b/internal/route/api/v1/repo/branch.go @@ -6,38 +6,33 @@ package repo import ( api "github.com/gogs/go-gogs-client" - convert2 "gogs.io/gogs/internal/route/api/v1/convert" "gogs.io/gogs/internal/context" - "gogs.io/gogs/internal/db/errors" + "gogs.io/gogs/internal/route/api/v1/convert" ) // https://github.com/gogs/go-gogs-client/wiki/Repositories#get-branch func GetBranch(c *context.APIContext) { branch, err := c.Repo.Repository.GetBranch(c.Params("*")) if err != nil { - if errors.IsErrBranchNotExist(err) { - c.Error(404, "GetBranch", err) - } else { - c.Error(500, "GetBranch", err) - } + c.NotFoundOrError(err, "get branch") return } commit, err := branch.GetCommit() if err != nil { - c.Error(500, "GetCommit", err) + c.Error(err, "get commit") return } - c.JSON(200, convert2.ToBranch(branch, commit)) + c.JSONSuccess( convert.ToBranch(branch, commit)) } // https://github.com/gogs/go-gogs-client/wiki/Repositories#list-branches func ListBranches(c *context.APIContext) { branches, err := c.Repo.Repository.GetBranches() if err != nil { - c.Error(500, "GetBranches", err) + c.Error(err, "get branches") return } @@ -45,11 +40,11 @@ func ListBranches(c *context.APIContext) { for i := range branches { commit, err := branches[i].GetCommit() if err != nil { - c.Error(500, "GetCommit", err) + c.Error(err, "get commit") return } - apiBranches[i] = convert2.ToBranch(branches[i], commit) + apiBranches[i] = convert.ToBranch(branches[i], commit) } - c.JSON(200, &apiBranches) + c.JSONSuccess( &apiBranches) } diff --git a/internal/route/api/v1/repo/collaborators.go b/internal/route/api/v1/repo/collaborators.go index e8f74848..c9d2ff30 100644 --- a/internal/route/api/v1/repo/collaborators.go +++ b/internal/route/api/v1/repo/collaborators.go @@ -5,17 +5,18 @@ package repo import ( + "net/http" + api "github.com/gogs/go-gogs-client" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" ) func ListCollaborators(c *context.APIContext) { collaborators, err := c.Repo.Repository.GetCollaborators() if err != nil { - c.ServerError("GetCollaborators", err) + c.Error(err, "get collaborators") return } @@ -29,62 +30,62 @@ func ListCollaborators(c *context.APIContext) { func AddCollaborator(c *context.APIContext, form api.AddCollaboratorOption) { collaborator, err := db.GetUserByName(c.Params(":collaborator")) if err != nil { - if errors.IsUserNotExist(err) { - c.Error(422, "", err) + if db.IsErrUserNotExist(err) { + c.Status(http.StatusUnprocessableEntity) } else { - c.Error(500, "GetUserByName", err) + c.Error(err, "get user by name") } return } if err := c.Repo.Repository.AddCollaborator(collaborator); err != nil { - c.Error(500, "AddCollaborator", err) + c.Error(err, "add collaborator") return } if form.Permission != nil { if err := c.Repo.Repository.ChangeCollaborationAccessMode(collaborator.ID, db.ParseAccessMode(*form.Permission)); err != nil { - c.Error(500, "ChangeCollaborationAccessMode", err) + c.Error(err, "change collaboration access mode") return } } - c.Status(204) + c.NoContent() } func IsCollaborator(c *context.APIContext) { collaborator, err := db.GetUserByName(c.Params(":collaborator")) if err != nil { - if errors.IsUserNotExist(err) { - c.Error(422, "", err) + if db.IsErrUserNotExist(err) { + c.Status(http.StatusUnprocessableEntity) } else { - c.Error(500, "GetUserByName", err) + c.Error(err, "get user by name") } return } if !c.Repo.Repository.IsCollaborator(collaborator.ID) { - c.Status(404) + c.NotFound() } else { - c.Status(204) + c.NoContent() } } func DeleteCollaborator(c *context.APIContext) { collaborator, err := db.GetUserByName(c.Params(":collaborator")) if err != nil { - if errors.IsUserNotExist(err) { - c.Error(422, "", err) + if db.IsErrUserNotExist(err) { + c.Status(http.StatusUnprocessableEntity) } else { - c.Error(500, "GetUserByName", err) + c.Error(err, "get user by name") } return } if err := c.Repo.Repository.DeleteCollaboration(collaborator.ID); err != nil { - c.Error(500, "DeleteCollaboration", err) + c.Error(err, "delete collaboration") return } - c.Status(204) + c.NoContent() } diff --git a/internal/route/api/v1/repo/commits.go b/internal/route/api/v1/repo/commits.go index b3903053..ea6590d7 100644 --- a/internal/route/api/v1/repo/commits.go +++ b/internal/route/api/v1/repo/commits.go @@ -15,7 +15,6 @@ import ( "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" "gogs.io/gogs/internal/gitutil" ) @@ -28,20 +27,20 @@ func GetSingleCommit(c *context.APIContext) { gitRepo, err := git.Open(c.Repo.Repository.RepoPath()) if err != nil { - c.ServerError("open repository", err) + c.Error(err, "open repository") return } commit, err := gitRepo.CatFileCommit(c.Params(":sha")) if err != nil { - c.NotFoundOrServerError("get commit", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "get commit") return } // Retrieve author and committer information var apiAuthor, apiCommitter *api.User author, err := db.GetUserByEmail(commit.Author.Email) - if err != nil && !errors.IsUserNotExist(err) { - c.ServerError("Get user by author email", err) + if err != nil && !db.IsErrUserNotExist(err) { + c.Error(err, "get user by author email") return } else if err == nil { apiAuthor = author.APIFormat() @@ -51,8 +50,8 @@ func GetSingleCommit(c *context.APIContext) { apiCommitter = apiAuthor } else { committer, err := db.GetUserByEmail(commit.Committer.Email) - if err != nil && !errors.IsUserNotExist(err) { - c.ServerError("Get user by committer email", err) + if err != nil && !db.IsErrUserNotExist(err) { + c.Error(err, "get user by committer email") return } else if err == nil { apiCommitter = committer.APIFormat() @@ -102,7 +101,7 @@ func GetSingleCommit(c *context.APIContext) { func GetReferenceSHA(c *context.APIContext) { gitRepo, err := git.Open(c.Repo.Repository.RepoPath()) if err != nil { - c.ServerError("open repository", err) + c.Error(err, "open repository") return } @@ -132,8 +131,8 @@ func GetReferenceSHA(c *context.APIContext) { sha, err = gitRepo.TagCommitID(ref) } if err != nil { - c.NotFoundOrServerError("get reference commit ID", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "get reference commit ID") return } - c.PlainText(http.StatusOK, []byte(sha)) + c.PlainText(http.StatusOK, sha) } diff --git a/internal/route/api/v1/repo/contents.go b/internal/route/api/v1/repo/contents.go index e5a9277d..463bbb22 100644 --- a/internal/route/api/v1/repo/contents.go +++ b/internal/route/api/v1/repo/contents.go @@ -19,7 +19,7 @@ import ( func GetContents(c *context.APIContext) { gitRepo, err := git.Open(c.Repo.Repository.RepoPath()) if err != nil { - c.ServerError("open repository", err) + c.Error(err, "open repository") return } @@ -30,14 +30,14 @@ func GetContents(c *context.APIContext) { commit, err := gitRepo.CatFileCommit(ref) if err != nil { - c.NotFoundOrServerError("get commit", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "get commit") return } treePath := c.Params("*") entry, err := commit.TreeEntry(treePath) if err != nil { - c.NotFoundOrServerError("get tree entry", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "get tree entry") return } @@ -137,13 +137,13 @@ func GetContents(c *context.APIContext) { // The entry is a directory dir, err := gitRepo.LsTree(entry.ID().String()) if err != nil { - c.NotFoundOrServerError("get tree", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "get tree") return } entries, err := dir.Entries() if err != nil { - c.NotFoundOrServerError("list entries", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "list entries") return } diff --git a/internal/route/api/v1/repo/file.go b/internal/route/api/v1/repo/file.go index 414d0285..999a2a47 100644 --- a/internal/route/api/v1/repo/file.go +++ b/internal/route/api/v1/repo/file.go @@ -26,11 +26,11 @@ func GetRawFile(c *context.APIContext) { blob, err := c.Repo.Commit.Blob(c.Repo.TreePath) if err != nil { - c.NotFoundOrServerError("get blob", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "get blob") return } if err = repo.ServeBlob(c.Context, blob); err != nil { - c.ServerError("ServeBlob", err) + c.Error(err, "serve blob") } } @@ -38,7 +38,7 @@ func GetArchive(c *context.APIContext) { repoPath := db.RepoPath(c.Params(":username"), c.Params(":reponame")) gitRepo, err := git.Open(repoPath) if err != nil { - c.ServerError("open repository", err) + c.Error(err, "open repository") return } c.Repo.GitRepo = gitRepo @@ -49,14 +49,14 @@ func GetArchive(c *context.APIContext) { func GetEditorconfig(c *context.APIContext) { ec, err := c.Repo.Editorconfig() if err != nil { - c.NotFoundOrServerError("get .editorconfig", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "get .editorconfig") return } fileName := c.Params("filename") def, err := ec.GetDefinitionForFilename(fileName) if err != nil { - c.ServerError("get definition for filename", err) + c.Error(err, "get definition for filename") return } if def == nil { diff --git a/internal/route/api/v1/repo/hook.go b/internal/route/api/v1/repo/hook.go index 060d2049..d5730165 100644 --- a/internal/route/api/v1/repo/hook.go +++ b/internal/route/api/v1/repo/hook.go @@ -5,46 +5,47 @@ package repo import ( - "github.com/json-iterator/go" - "github.com/unknwon/com" - convert2 "gogs.io/gogs/internal/route/api/v1/convert" + "net/http" api "github.com/gogs/go-gogs-client" + "github.com/json-iterator/go" + "github.com/pkg/errors" + "github.com/unknwon/com" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" + "gogs.io/gogs/internal/route/api/v1/convert" ) // https://github.com/gogs/go-gogs-client/wiki/Repositories#list-hooks func ListHooks(c *context.APIContext) { hooks, err := db.GetWebhooksByRepoID(c.Repo.Repository.ID) if err != nil { - c.Error(500, "GetWebhooksByRepoID", err) + c.Errorf(err, "get webhooks by repository ID") return } apiHooks := make([]*api.Hook, len(hooks)) for i := range hooks { - apiHooks[i] = convert2.ToHook(c.Repo.RepoLink, hooks[i]) + apiHooks[i] = convert.ToHook(c.Repo.RepoLink, hooks[i]) } - c.JSON(200, &apiHooks) + c.JSONSuccess(&apiHooks) } // https://github.com/gogs/go-gogs-client/wiki/Repositories#create-a-hook func CreateHook(c *context.APIContext, form api.CreateHookOption) { if !db.IsValidHookTaskType(form.Type) { - c.Error(422, "", "Invalid hook type") + c.ErrorStatus(http.StatusUnprocessableEntity, errors.New("Invalid hook type.")) return } for _, name := range []string{"url", "content_type"} { if _, ok := form.Config[name]; !ok { - c.Error(422, "", "Missing config option: "+name) + c.ErrorStatus(http.StatusUnprocessableEntity, errors.New("Missing config option: "+name)) return } } if !db.IsValidHookContentType(form.Config["content_type"]) { - c.Error(422, "", "Invalid content type") + c.ErrorStatus(http.StatusUnprocessableEntity, errors.New("Invalid content type.")) return } @@ -75,7 +76,7 @@ func CreateHook(c *context.APIContext, form api.CreateHookOption) { if w.HookTaskType == db.SLACK { channel, ok := form.Config["channel"] if !ok { - c.Error(422, "", "Missing config option: channel") + c.ErrorStatus(http.StatusUnprocessableEntity, errors.New("Missing config option: channel")) return } meta, err := jsoniter.Marshal(&db.SlackMeta{ @@ -85,32 +86,28 @@ func CreateHook(c *context.APIContext, form api.CreateHookOption) { Color: form.Config["color"], }) if err != nil { - c.Error(500, "slack: JSON marshal failed", err) + c.Errorf(err, "marshal JSON") return } w.Meta = string(meta) } if err := w.UpdateEvent(); err != nil { - c.Error(500, "UpdateEvent", err) + c.Errorf(err, "update event") return } else if err := db.CreateWebhook(w); err != nil { - c.Error(500, "CreateWebhook", err) + c.Errorf(err, "create webhook") return } - c.JSON(201, convert2.ToHook(c.Repo.RepoLink, w)) + c.JSON(http.StatusCreated, convert.ToHook(c.Repo.RepoLink, w)) } // https://github.com/gogs/go-gogs-client/wiki/Repositories#edit-a-hook func EditHook(c *context.APIContext, form api.EditHookOption) { w, err := db.GetWebhookOfRepoByID(c.Repo.Repository.ID, c.ParamsInt64(":id")) if err != nil { - if errors.IsWebhookNotExist(err) { - c.Status(404) - } else { - c.Error(500, "GetWebhookOfRepoByID", err) - } + c.NotFoundOrError(err, "get webhook of repository by ID") return } @@ -120,7 +117,7 @@ func EditHook(c *context.APIContext, form api.EditHookOption) { } if ct, ok := form.Config["content_type"]; ok { if !db.IsValidHookContentType(ct) { - c.Error(422, "", "Invalid content type") + c.ErrorStatus(http.StatusUnprocessableEntity, errors.New("Invalid content type.")) return } w.ContentType = db.ToHookContentType(ct) @@ -135,7 +132,7 @@ func EditHook(c *context.APIContext, form api.EditHookOption) { Color: form.Config["color"], }) if err != nil { - c.Error(500, "slack: JSON marshal failed", err) + c.Errorf(err, "marshal JSON") return } w.Meta = string(meta) @@ -159,7 +156,7 @@ func EditHook(c *context.APIContext, form api.EditHookOption) { w.PullRequest = com.IsSliceContainsStr(form.Events, string(db.HOOK_EVENT_PULL_REQUEST)) w.Release = com.IsSliceContainsStr(form.Events, string(db.HOOK_EVENT_RELEASE)) if err = w.UpdateEvent(); err != nil { - c.Error(500, "UpdateEvent", err) + c.Errorf(err, "update event") return } @@ -168,18 +165,18 @@ func EditHook(c *context.APIContext, form api.EditHookOption) { } if err := db.UpdateWebhook(w); err != nil { - c.Error(500, "UpdateWebhook", err) + c.Errorf(err, "update webhook") return } - c.JSON(200, convert2.ToHook(c.Repo.RepoLink, w)) + c.JSONSuccess(convert.ToHook(c.Repo.RepoLink, w)) } func DeleteHook(c *context.APIContext) { if err := db.DeleteWebhookOfRepoByID(c.Repo.Repository.ID, c.ParamsInt64(":id")); err != nil { - c.Error(500, "DeleteWebhookByRepoID", err) + c.Errorf(err, "delete webhook of repository by ID") return } - c.Status(204) + c.NoContent() } diff --git a/internal/route/api/v1/repo/issue.go b/internal/route/api/v1/repo/issue.go index 39977f91..8a9f4b77 100644 --- a/internal/route/api/v1/repo/issue.go +++ b/internal/route/api/v1/repo/issue.go @@ -11,22 +11,21 @@ import ( api "github.com/gogs/go-gogs-client" + "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" - "gogs.io/gogs/internal/conf" ) func listIssues(c *context.APIContext, opts *db.IssuesOptions) { issues, err := db.Issues(opts) if err != nil { - c.ServerError("Issues", err) + c.Error(err, "list issues") return } count, err := db.IssuesCount(opts) if err != nil { - c.ServerError("IssuesCount", err) + c.Error(err, "count issues") return } @@ -34,7 +33,7 @@ func listIssues(c *context.APIContext, opts *db.IssuesOptions) { apiIssues := make([]*api.Issue, len(issues)) for i := range issues { if err = issues[i].LoadAttributes(); err != nil { - c.ServerError("LoadAttributes", err) + c.Error(err, "load attributes") return } apiIssues[i] = issues[i].APIFormat() @@ -67,7 +66,7 @@ func ListIssues(c *context.APIContext) { func GetIssue(c *context.APIContext) { issue, err := db.GetIssueByIndex(c.Repo.Repository.ID, c.ParamsInt64(":index")) if err != nil { - c.NotFoundOrServerError("GetIssueByIndex", errors.IsIssueNotExist, err) + c.NotFoundOrError(err, "get issue by index") return } c.JSONSuccess(issue.APIFormat()) @@ -86,10 +85,10 @@ func CreateIssue(c *context.APIContext, form api.CreateIssueOption) { if len(form.Assignee) > 0 { assignee, err := db.GetUserByName(form.Assignee) if err != nil { - if errors.IsUserNotExist(err) { - c.Error(http.StatusUnprocessableEntity, "", fmt.Sprintf("assignee does not exist: [name: %s]", form.Assignee)) + if db.IsErrUserNotExist(err) { + c.ErrorStatus(http.StatusUnprocessableEntity, fmt.Errorf("assignee does not exist: [name: %s]", form.Assignee)) } else { - c.ServerError("GetUserByName", err) + c.Error(err, "get user by name") } return } @@ -101,13 +100,13 @@ func CreateIssue(c *context.APIContext, form api.CreateIssueOption) { } if err := db.NewIssue(c.Repo.Repository, issue, form.Labels, nil); err != nil { - c.ServerError("NewIssue", err) + c.Error(err, "new issue") return } if form.Closed { if err := issue.ChangeStatus(c.User, c.Repo.Repository, true); err != nil { - c.ServerError("ChangeStatus", err) + c.Error(err, "change status to closed") return } } @@ -116,7 +115,7 @@ func CreateIssue(c *context.APIContext, form api.CreateIssueOption) { var err error issue, err = db.GetIssueByID(issue.ID) if err != nil { - c.ServerError("GetIssueByID", err) + c.Error(err, "get issue by ID") return } c.JSON(http.StatusCreated, issue.APIFormat()) @@ -125,7 +124,7 @@ func CreateIssue(c *context.APIContext, form api.CreateIssueOption) { func EditIssue(c *context.APIContext, form api.EditIssueOption) { issue, err := db.GetIssueByIndex(c.Repo.Repository.ID, c.ParamsInt64(":index")) if err != nil { - c.NotFoundOrServerError("GetIssueByIndex", errors.IsIssueNotExist, err) + c.NotFoundOrError(err, "get issue by index") return } @@ -148,10 +147,10 @@ func EditIssue(c *context.APIContext, form api.EditIssueOption) { } else { assignee, err := db.GetUserByName(*form.Assignee) if err != nil { - if errors.IsUserNotExist(err) { - c.Error(http.StatusUnprocessableEntity, "", fmt.Sprintf("assignee does not exist: [name: %s]", *form.Assignee)) + if db.IsErrUserNotExist(err) { + c.ErrorStatus(http.StatusUnprocessableEntity, fmt.Errorf("assignee does not exist: [name: %s]", *form.Assignee)) } else { - c.ServerError("GetUserByName", err) + c.Error(err, "get user by name") } return } @@ -159,7 +158,7 @@ func EditIssue(c *context.APIContext, form api.EditIssueOption) { } if err = db.UpdateIssueUserByAssignee(issue); err != nil { - c.ServerError("UpdateIssueUserByAssignee", err) + c.Error(err, "update issue user by assignee") return } } @@ -168,18 +167,18 @@ func EditIssue(c *context.APIContext, form api.EditIssueOption) { oldMilestoneID := issue.MilestoneID issue.MilestoneID = *form.Milestone if err = db.ChangeMilestoneAssign(c.User, issue, oldMilestoneID); err != nil { - c.ServerError("ChangeMilestoneAssign", err) + c.Error(err, "change milestone assign") return } } if err = db.UpdateIssue(issue); err != nil { - c.ServerError("UpdateIssue", err) + c.Error(err, "update issue") return } if form.State != nil { if err = issue.ChangeStatus(c.User, c.Repo.Repository, api.STATE_CLOSED == api.StateType(*form.State)); err != nil { - c.ServerError("ChangeStatus", err) + c.Error(err, "change status") return } } @@ -187,7 +186,7 @@ func EditIssue(c *context.APIContext, form api.EditIssueOption) { // Refetch from database to assign some automatic values issue, err = db.GetIssueByID(issue.ID) if err != nil { - c.ServerError("GetIssueByID", err) + c.Error(err, "get issue by ID") return } c.JSON(http.StatusCreated, issue.APIFormat()) diff --git a/internal/route/api/v1/repo/issue_comment.go b/internal/route/api/v1/repo/issue_comment.go index 4f86e13b..a309cc80 100644 --- a/internal/route/api/v1/repo/issue_comment.go +++ b/internal/route/api/v1/repo/issue_comment.go @@ -19,7 +19,7 @@ func ListIssueComments(c *context.APIContext) { var err error since, err = time.Parse(time.RFC3339, c.Query("since")) if err != nil { - c.Error(http.StatusUnprocessableEntity, "", err) + c.ErrorStatus(http.StatusUnprocessableEntity, err) return } } @@ -27,13 +27,13 @@ func ListIssueComments(c *context.APIContext) { // comments,err:=db.GetCommentsByIssueIDSince(, since) issue, err := db.GetRawIssueByIndex(c.Repo.Repository.ID, c.ParamsInt64(":index")) if err != nil { - c.ServerError("GetRawIssueByIndex", err) + c.Error(err, "get raw issue by index") return } comments, err := db.GetCommentsByIssueIDSince(issue.ID, since.Unix()) if err != nil { - c.ServerError("GetCommentsByIssueIDSince", err) + c.Error(err, "get comments by issue ID") return } @@ -50,14 +50,14 @@ func ListRepoIssueComments(c *context.APIContext) { var err error since, err = time.Parse(time.RFC3339, c.Query("since")) if err != nil { - c.Error(http.StatusUnprocessableEntity, "", err) + c.ErrorStatus(http.StatusUnprocessableEntity, err) return } } comments, err := db.GetCommentsByRepoIDSince(c.Repo.Repository.ID, since.Unix()) if err != nil { - c.ServerError("GetCommentsByRepoIDSince", err) + c.Error(err, "get comments by repository ID") return } @@ -71,13 +71,13 @@ func ListRepoIssueComments(c *context.APIContext) { func CreateIssueComment(c *context.APIContext, form api.CreateIssueCommentOption) { issue, err := db.GetIssueByIndex(c.Repo.Repository.ID, c.ParamsInt64(":index")) if err != nil { - c.ServerError("GetIssueByIndex", err) + c.Error(err, "get issue by index") return } comment, err := db.CreateIssueComment(c.User, c.Repo.Repository, issue, form.Body, nil) if err != nil { - c.ServerError("CreateIssueComment", err) + c.Error(err, "create issue comment") return } @@ -87,7 +87,7 @@ func CreateIssueComment(c *context.APIContext, form api.CreateIssueCommentOption func EditIssueComment(c *context.APIContext, form api.EditIssueCommentOption) { comment, err := db.GetCommentByID(c.ParamsInt64(":id")) if err != nil { - c.NotFoundOrServerError("GetCommentByID", db.IsErrCommentNotExist, err) + c.NotFoundOrError(err, "get comment by ID") return } @@ -102,7 +102,7 @@ func EditIssueComment(c *context.APIContext, form api.EditIssueCommentOption) { oldContent := comment.Content comment.Content = form.Body if err := db.UpdateComment(c.User, comment, oldContent); err != nil { - c.ServerError("UpdateComment", err) + c.Error(err, "update comment") return } c.JSONSuccess(comment.APIFormat()) @@ -111,7 +111,7 @@ func EditIssueComment(c *context.APIContext, form api.EditIssueCommentOption) { func DeleteIssueComment(c *context.APIContext) { comment, err := db.GetCommentByID(c.ParamsInt64(":id")) if err != nil { - c.NotFoundOrServerError("GetCommentByID", db.IsErrCommentNotExist, err) + c.NotFoundOrError(err, "get comment by ID") return } @@ -124,7 +124,7 @@ func DeleteIssueComment(c *context.APIContext) { } if err = db.DeleteCommentByID(c.User, comment.ID); err != nil { - c.ServerError("DeleteCommentByID", err) + c.Error(err, "delete comment by ID") return } c.NoContent() diff --git a/internal/route/api/v1/repo/issue_label.go b/internal/route/api/v1/repo/issue_label.go index 7c8b7982..92fff47d 100644 --- a/internal/route/api/v1/repo/issue_label.go +++ b/internal/route/api/v1/repo/issue_label.go @@ -11,13 +11,12 @@ import ( "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" ) func ListIssueLabels(c *context.APIContext) { issue, err := db.GetIssueByIndex(c.Repo.Repository.ID, c.ParamsInt64(":index")) if err != nil { - c.NotFoundOrServerError("GetIssueByIndex", errors.IsIssueNotExist, err) + c.NotFoundOrError(err, "get issue by index") return } @@ -31,24 +30,24 @@ func ListIssueLabels(c *context.APIContext) { func AddIssueLabels(c *context.APIContext, form api.IssueLabelsOption) { issue, err := db.GetIssueByIndex(c.Repo.Repository.ID, c.ParamsInt64(":index")) if err != nil { - c.NotFoundOrServerError("GetIssueByIndex", errors.IsIssueNotExist, err) + c.NotFoundOrError(err, "get issue by index") return } labels, err := db.GetLabelsInRepoByIDs(c.Repo.Repository.ID, form.Labels) if err != nil { - c.ServerError("GetLabelsInRepoByIDs", err) + c.Error(err, "get labels in repository by IDs") return } if err = issue.AddLabels(c.User, labels); err != nil { - c.ServerError("AddLabels", err) + c.Error(err, "add labels") return } labels, err = db.GetLabelsByIssueID(issue.ID) if err != nil { - c.ServerError("GetLabelsByIssueID", err) + c.Error(err, "get labels by issue ID") return } @@ -62,22 +61,22 @@ func AddIssueLabels(c *context.APIContext, form api.IssueLabelsOption) { func DeleteIssueLabel(c *context.APIContext) { issue, err := db.GetIssueByIndex(c.Repo.Repository.ID, c.ParamsInt64(":index")) if err != nil { - c.NotFoundOrServerError("GetIssueByIndex", errors.IsIssueNotExist, err) + c.NotFoundOrError(err, "get issue by index") return } label, err := db.GetLabelOfRepoByID(c.Repo.Repository.ID, c.ParamsInt64(":id")) if err != nil { if db.IsErrLabelNotExist(err) { - c.Error(http.StatusUnprocessableEntity, "", err) + c.ErrorStatus(http.StatusUnprocessableEntity, err) } else { - c.ServerError("GetLabelInRepoByID", err) + c.Error(err, "get label of repository by ID") } return } if err := db.DeleteIssueLabel(issue, label); err != nil { - c.ServerError("DeleteIssueLabel", err) + c.Error(err, "delete issue label") return } @@ -87,24 +86,24 @@ func DeleteIssueLabel(c *context.APIContext) { func ReplaceIssueLabels(c *context.APIContext, form api.IssueLabelsOption) { issue, err := db.GetIssueByIndex(c.Repo.Repository.ID, c.ParamsInt64(":index")) if err != nil { - c.NotFoundOrServerError("GetIssueByIndex", errors.IsIssueNotExist, err) + c.NotFoundOrError(err, "get issue by index") return } labels, err := db.GetLabelsInRepoByIDs(c.Repo.Repository.ID, form.Labels) if err != nil { - c.ServerError("GetLabelsInRepoByIDs", err) + c.Error(err, "get labels in repository by IDs") return } if err := issue.ReplaceLabels(labels); err != nil { - c.ServerError("ReplaceLabels", err) + c.Error(err, "replace labels") return } labels, err = db.GetLabelsByIssueID(issue.ID) if err != nil { - c.ServerError("GetLabelsByIssueID", err) + c.Error(err, "get labels by issue ID") return } @@ -118,12 +117,12 @@ func ReplaceIssueLabels(c *context.APIContext, form api.IssueLabelsOption) { func ClearIssueLabels(c *context.APIContext) { issue, err := db.GetIssueByIndex(c.Repo.Repository.ID, c.ParamsInt64(":index")) if err != nil { - c.NotFoundOrServerError("GetIssueByIndex", errors.IsIssueNotExist, err) + c.NotFoundOrError(err, "get issue by index") return } if err := issue.ClearLabels(c.User); err != nil { - c.ServerError("ClearLabels", err) + c.Error(err, "clear labels") return } diff --git a/internal/route/api/v1/repo/key.go b/internal/route/api/v1/repo/key.go index d8012933..38c037b6 100644 --- a/internal/route/api/v1/repo/key.go +++ b/internal/route/api/v1/repo/key.go @@ -5,14 +5,15 @@ package repo import ( - "fmt" - convert2 "gogs.io/gogs/internal/route/api/v1/convert" + "net/http" api "github.com/gogs/go-gogs-client" + "github.com/pkg/errors" "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" + "gogs.io/gogs/internal/route/api/v1/convert" ) func composeDeployKeysAPILink(repoPath string) string { @@ -23,7 +24,7 @@ func composeDeployKeysAPILink(repoPath string) string { func ListDeployKeys(c *context.APIContext) { keys, err := db.ListDeployKeys(c.Repo.Repository.ID) if err != nil { - c.Error(500, "ListDeployKeys", err) + c.Error(err, "list deploy keys") return } @@ -31,52 +32,48 @@ func ListDeployKeys(c *context.APIContext) { apiKeys := make([]*api.DeployKey, len(keys)) for i := range keys { if err = keys[i].GetContent(); err != nil { - c.Error(500, "GetContent", err) + c.Error(err, "get content") return } - apiKeys[i] = convert2.ToDeployKey(apiLink, keys[i]) + apiKeys[i] = convert.ToDeployKey(apiLink, keys[i]) } - c.JSON(200, &apiKeys) + c.JSONSuccess(&apiKeys) } // https://github.com/gogs/go-gogs-client/wiki/Repositories-Deploy-Keys#get-a-deploy-key func GetDeployKey(c *context.APIContext) { key, err := db.GetDeployKeyByID(c.ParamsInt64(":id")) if err != nil { - if db.IsErrDeployKeyNotExist(err) { - c.Status(404) - } else { - c.Error(500, "GetDeployKeyByID", err) - } + c.NotFoundOrError(err, "get deploy key by ID") return } if err = key.GetContent(); err != nil { - c.Error(500, "GetContent", err) + c.Error(err, "get content") return } apiLink := composeDeployKeysAPILink(c.Repo.Owner.Name + "/" + c.Repo.Repository.Name) - c.JSON(200, convert2.ToDeployKey(apiLink, key)) + c.JSONSuccess(convert.ToDeployKey(apiLink, key)) } func HandleCheckKeyStringError(c *context.APIContext, err error) { if db.IsErrKeyUnableVerify(err) { - c.Error(422, "", "Unable to verify key content") + c.ErrorStatus(http.StatusUnprocessableEntity, errors.New("Unable to verify key content")) } else { - c.Error(422, "", fmt.Errorf("Invalid key content: %v", err)) + c.ErrorStatus(http.StatusUnprocessableEntity, errors.Wrap(err, "Invalid key content: %v")) } } func HandleAddKeyError(c *context.APIContext, err error) { switch { case db.IsErrKeyAlreadyExist(err): - c.Error(422, "", "Key content has been used as non-deploy key") + c.ErrorStatus(http.StatusUnprocessableEntity, errors.New("Key content has been used as non-deploy key")) case db.IsErrKeyNameAlreadyUsed(err): - c.Error(422, "", "Key title has been used") + c.ErrorStatus(http.StatusUnprocessableEntity, errors.New("Key title has been used")) default: - c.Error(500, "AddKey", err) + c.Error(err, "add key") } } @@ -96,19 +93,19 @@ func CreateDeployKey(c *context.APIContext, form api.CreateKeyOption) { key.Content = content apiLink := composeDeployKeysAPILink(c.Repo.Owner.Name + "/" + c.Repo.Repository.Name) - c.JSON(201, convert2.ToDeployKey(apiLink, key)) + c.JSON(http.StatusCreated, convert.ToDeployKey(apiLink, key)) } // https://github.com/gogs/go-gogs-client/wiki/Repositories-Deploy-Keys#remove-a-deploy-key func DeleteDeploykey(c *context.APIContext) { if err := db.DeleteDeployKey(c.User, c.ParamsInt64(":id")); err != nil { if db.IsErrKeyAccessDenied(err) { - c.Error(403, "", "You do not have access to this key") + c.ErrorStatus(http.StatusForbidden, errors.New("You do not have access to this key")) } else { - c.Error(500, "DeleteDeployKey", err) + c.Error(err, "delete deploy key") } return } - c.Status(204) + c.NoContent() } diff --git a/internal/route/api/v1/repo/label.go b/internal/route/api/v1/repo/label.go index 9dd2d7d0..69fe5399 100644 --- a/internal/route/api/v1/repo/label.go +++ b/internal/route/api/v1/repo/label.go @@ -7,9 +7,8 @@ package repo import ( "net/http" - "github.com/unknwon/com" - api "github.com/gogs/go-gogs-client" + "github.com/unknwon/com" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" @@ -18,7 +17,7 @@ import ( func ListLabels(c *context.APIContext) { labels, err := db.GetLabelsByRepoID(c.Repo.Repository.ID) if err != nil { - c.ServerError("GetLabelsByRepoID", err) + c.Error(err, "get labels by repository ID") return } @@ -39,7 +38,7 @@ func GetLabel(c *context.APIContext) { label, err = db.GetLabelOfRepoByName(c.Repo.Repository.ID, idStr) } if err != nil { - c.NotFoundOrServerError("GetLabel", db.IsErrLabelNotExist, err) + c.NotFoundOrError(err, "get label") return } @@ -53,7 +52,7 @@ func CreateLabel(c *context.APIContext, form api.CreateLabelOption) { RepoID: c.Repo.Repository.ID, } if err := db.NewLabels(label); err != nil { - c.ServerError("NewLabel", err) + c.Error(err, "new labels") return } c.JSON(http.StatusCreated, label.APIFormat()) @@ -62,7 +61,7 @@ func CreateLabel(c *context.APIContext, form api.CreateLabelOption) { func EditLabel(c *context.APIContext, form api.EditLabelOption) { label, err := db.GetLabelOfRepoByID(c.Repo.Repository.ID, c.ParamsInt64(":id")) if err != nil { - c.NotFoundOrServerError("GetLabelOfRepoByID", db.IsErrLabelNotExist, err) + c.NotFoundOrError(err, "get label of repository by ID") return } @@ -73,7 +72,7 @@ func EditLabel(c *context.APIContext, form api.EditLabelOption) { label.Color = *form.Color } if err := db.UpdateLabel(label); err != nil { - c.ServerError("UpdateLabel", err) + c.Error(err, "update label") return } c.JSONSuccess(label.APIFormat()) @@ -81,7 +80,7 @@ func EditLabel(c *context.APIContext, form api.EditLabelOption) { func DeleteLabel(c *context.APIContext) { if err := db.DeleteLabel(c.Repo.Repository.ID, c.ParamsInt64(":id")); err != nil { - c.ServerError("DeleteLabel", err) + c.Error(err, "delete label") return } diff --git a/internal/route/api/v1/repo/milestone.go b/internal/route/api/v1/repo/milestone.go index 6f5fea17..a36a71d8 100644 --- a/internal/route/api/v1/repo/milestone.go +++ b/internal/route/api/v1/repo/milestone.go @@ -17,7 +17,7 @@ import ( func ListMilestones(c *context.APIContext) { milestones, err := db.GetMilestonesByRepoID(c.Repo.Repository.ID) if err != nil { - c.ServerError("GetMilestonesByRepoID", err) + c.Error(err, "get milestones by repository ID") return } @@ -31,7 +31,7 @@ func ListMilestones(c *context.APIContext) { func GetMilestone(c *context.APIContext) { milestone, err := db.GetMilestoneByRepoID(c.Repo.Repository.ID, c.ParamsInt64(":id")) if err != nil { - c.NotFoundOrServerError("GetMilestoneByRepoID", db.IsErrMilestoneNotExist, err) + c.NotFoundOrError(err, "get milestone by repository ID") return } c.JSONSuccess(milestone.APIFormat()) @@ -51,7 +51,7 @@ func CreateMilestone(c *context.APIContext, form api.CreateMilestoneOption) { } if err := db.NewMilestone(milestone); err != nil { - c.ServerError("NewMilestone", err) + c.Error(err, "new milestone") return } c.JSON(http.StatusCreated, milestone.APIFormat()) @@ -60,7 +60,7 @@ func CreateMilestone(c *context.APIContext, form api.CreateMilestoneOption) { func EditMilestone(c *context.APIContext, form api.EditMilestoneOption) { milestone, err := db.GetMilestoneByRepoID(c.Repo.Repository.ID, c.ParamsInt64(":id")) if err != nil { - c.NotFoundOrServerError("GetMilestoneByRepoID", db.IsErrMilestoneNotExist, err) + c.NotFoundOrError(err, "get milestone by repository ID") return } @@ -76,11 +76,11 @@ func EditMilestone(c *context.APIContext, form api.EditMilestoneOption) { if form.State != nil { if err = milestone.ChangeStatus(api.STATE_CLOSED == api.StateType(*form.State)); err != nil { - c.ServerError("ChangeStatus", err) + c.Error(err, "change status") return } } else if err = db.UpdateMilestone(milestone); err != nil { - c.ServerError("UpdateMilestone", err) + c.Error(err, "update milestone") return } @@ -89,7 +89,7 @@ func EditMilestone(c *context.APIContext, form api.EditMilestoneOption) { func DeleteMilestone(c *context.APIContext) { if err := db.DeleteMilestoneOfRepoByID(c.Repo.Repository.ID, c.ParamsInt64(":id")); err != nil { - c.ServerError("DeleteMilestoneByRepoID", err) + c.Error(err, "delete milestone of repository by ID") return } c.NoContent() diff --git a/internal/route/api/v1/repo/repo.go b/internal/route/api/v1/repo/repo.go index 7ea9a870..e198dffc 100644 --- a/internal/route/api/v1/repo/repo.go +++ b/internal/route/api/v1/repo/repo.go @@ -5,18 +5,16 @@ package repo import ( - "fmt" "net/http" "path" - log "unknwon.dev/clog/v2" - api "github.com/gogs/go-gogs-client" + "github.com/pkg/errors" + log "unknwon.dev/clog/v2" "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" "gogs.io/gogs/internal/form" "gogs.io/gogs/internal/route/api/v1/convert" ) @@ -81,7 +79,7 @@ func Search(c *context.APIContext) { func listUserRepositories(c *context.APIContext, username string) { user, err := db.GetUserByName(username) if err != nil { - c.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err) + c.NotFoundOrError(err, "get user by name") return } @@ -99,12 +97,12 @@ func listUserRepositories(c *context.APIContext, username string) { }) } if err != nil { - c.ServerError("GetUserRepositories", err) + c.Error(err, "get user repositories") return } if err = db.RepositoryList(ownRepos).LoadAttributes(); err != nil { - c.ServerError("LoadAttributes(ownRepos)", err) + c.Error(err, "load attributes") return } @@ -120,7 +118,7 @@ func listUserRepositories(c *context.APIContext, username string) { accessibleRepos, err := user.GetRepositoryAccesses() if err != nil { - c.ServerError("GetRepositoryAccesses", err) + c.Error(err, "get repositories accesses") return } @@ -169,14 +167,14 @@ func CreateUserRepo(c *context.APIContext, owner *db.User, opt api.CreateRepoOpt if db.IsErrRepoAlreadyExist(err) || db.IsErrNameReserved(err) || db.IsErrNamePatternNotAllowed(err) { - c.Error(http.StatusUnprocessableEntity, "", err) + c.ErrorStatus(http.StatusUnprocessableEntity, err) } else { if repo != nil { if err = db.DeleteRepository(c.User.ID, repo.ID); err != nil { - log.Error("DeleteRepository: %v", err) + log.Error("Failed to delete repository: %v", err) } } - c.ServerError("CreateRepository", err) + c.Error(err, "create repository") } return } @@ -187,7 +185,7 @@ func CreateUserRepo(c *context.APIContext, owner *db.User, opt api.CreateRepoOpt func Create(c *context.APIContext, opt api.CreateRepoOption) { // Shouldn't reach this condition, but just in case. if c.User.IsOrganization() { - c.Error(http.StatusUnprocessableEntity, "", "not allowed creating repository for organization") + c.ErrorStatus(http.StatusUnprocessableEntity, errors.New("Not allowed to create repository for organization.")) return } CreateUserRepo(c, c.User, opt) @@ -196,12 +194,12 @@ func Create(c *context.APIContext, opt api.CreateRepoOption) { func CreateOrgRepo(c *context.APIContext, opt api.CreateRepoOption) { org, err := db.GetOrgByName(c.Params(":org")) if err != nil { - c.NotFoundOrServerError("GetOrgByName", errors.IsUserNotExist, err) + c.NotFoundOrError(err, "get organization by name") return } if !org.IsOwnedBy(c.User.ID) { - c.Error(http.StatusForbidden, "", "given user is not owner of organization") + c.ErrorStatus(http.StatusForbidden, errors.New("Given user is not owner of organization.")) return } CreateUserRepo(c, org, opt) @@ -214,28 +212,28 @@ func Migrate(c *context.APIContext, f form.MigrateRepo) { if f.Uid != ctxUser.ID { org, err := db.GetUserByID(f.Uid) if err != nil { - if errors.IsUserNotExist(err) { - c.Error(http.StatusUnprocessableEntity, "", err) + if db.IsErrUserNotExist(err) { + c.ErrorStatus(http.StatusUnprocessableEntity, err) } else { - c.Error(http.StatusInternalServerError, "GetUserByID", err) + c.Error(err, "get user by ID") } return } else if !org.IsOrganization() && !c.User.IsAdmin { - c.Error(http.StatusForbidden, "", "given user is not an organization") + c.ErrorStatus(http.StatusForbidden, errors.New("Given user is not an organization.")) return } ctxUser = org } if c.HasError() { - c.Error(http.StatusUnprocessableEntity, "", c.GetErrMsg()) + c.ErrorStatus(http.StatusUnprocessableEntity, errors.New(c.GetErrMsg())) return } if ctxUser.IsOrganization() && !c.User.IsAdmin { // Check ownership of organization. if !ctxUser.IsOwnedBy(c.User.ID) { - c.Error(http.StatusForbidden, "", "Given user is not owner of organization") + c.ErrorStatus(http.StatusForbidden, errors.New("Given user is not owner of organization.")) return } } @@ -246,16 +244,16 @@ func Migrate(c *context.APIContext, f form.MigrateRepo) { addrErr := err.(db.ErrInvalidCloneAddr) switch { case addrErr.IsURLError: - c.Error(http.StatusUnprocessableEntity, "", err) + c.ErrorStatus(http.StatusUnprocessableEntity, err) case addrErr.IsPermissionDenied: - c.Error(http.StatusUnprocessableEntity, "", "you are not allowed to import local repositories") + c.ErrorStatus(http.StatusUnprocessableEntity, errors.New("You are not allowed to import local repositories.")) case addrErr.IsInvalidPath: - c.Error(http.StatusUnprocessableEntity, "", "invalid local path, it does not exist or not a directory") + c.ErrorStatus(http.StatusUnprocessableEntity, errors.New("Invalid local path, it does not exist or not a directory.")) default: - c.ServerError("ParseRemoteAddr", fmt.Errorf("unknown error type (ErrInvalidCloneAddr): %v", err)) + c.Error(err, "unexpected error") } } else { - c.ServerError("ParseRemoteAddr", err) + c.Error(err, "parse remote address") } return } @@ -274,10 +272,10 @@ func Migrate(c *context.APIContext, f form.MigrateRepo) { } } - if errors.IsReachLimitOfRepo(err) { - c.Error(http.StatusUnprocessableEntity, "", err) + if db.IsErrReachLimitOfRepo(err) { + c.ErrorStatus(http.StatusUnprocessableEntity, err) } else { - c.ServerError("MigrateRepository", errors.New(db.HandleMirrorCredentials(err.Error(), true))) + c.Error(errors.New(db.HandleMirrorCredentials(err.Error(), true)), "migrate repository") } return } @@ -290,17 +288,17 @@ func Migrate(c *context.APIContext, f form.MigrateRepo) { func parseOwnerAndRepo(c *context.APIContext) (*db.User, *db.Repository) { owner, err := db.GetUserByName(c.Params(":username")) if err != nil { - if errors.IsUserNotExist(err) { - c.Error(http.StatusUnprocessableEntity, "", err) + if db.IsErrUserNotExist(err) { + c.ErrorStatus(http.StatusUnprocessableEntity, err) } else { - c.ServerError("GetUserByName", err) + c.Error(err, "get user by name") } return nil, nil } repo, err := db.GetRepositoryByName(owner.ID, c.Params(":reponame")) if err != nil { - c.NotFoundOrServerError("GetRepositoryByName", errors.IsRepoNotExist, err) + c.NotFoundOrError(err, "get repository by name") return nil, nil } @@ -327,12 +325,12 @@ func Delete(c *context.APIContext) { } if owner.IsOrganization() && !owner.IsOwnedBy(c.User.ID) { - c.Error(http.StatusForbidden, "", "given user is not owner of organization") + c.ErrorStatus(http.StatusForbidden, errors.New("Given user is not owner of organization.")) return } if err := db.DeleteRepository(owner.ID, repo.ID); err != nil { - c.ServerError("DeleteRepository", err) + c.Error(err, "delete repository") return } @@ -343,14 +341,14 @@ func Delete(c *context.APIContext) { func ListForks(c *context.APIContext) { forks, err := c.Repo.Repository.GetForks() if err != nil { - c.ServerError("GetForks", err) + c.Error(err, "get forks") return } apiForks := make([]*api.Repository, len(forks)) for i := range forks { if err := forks[i].GetOwner(); err != nil { - c.ServerError("GetOwner", err) + c.Error(err, "get owner") return } apiForks[i] = forks[i].APIFormat(&api.Permission{ @@ -386,7 +384,7 @@ func IssueTracker(c *context.APIContext, form api.EditIssueTrackerOption) { } if err := db.UpdateRepository(repo, false); err != nil { - c.ServerError("UpdateRepository", err) + c.Error(err, "update repository") return } diff --git a/internal/route/api/v1/repo/tree.go b/internal/route/api/v1/repo/tree.go index da976113..cd51282b 100644 --- a/internal/route/api/v1/repo/tree.go +++ b/internal/route/api/v1/repo/tree.go @@ -16,20 +16,20 @@ import ( func GetRepoGitTree(c *context.APIContext) { gitRepo, err := git.Open(c.Repo.Repository.RepoPath()) if err != nil { - c.ServerError("open repository", err) + c.Error(err, "open repository") return } sha := c.Params(":sha") tree, err := gitRepo.LsTree(sha) if err != nil { - c.NotFoundOrServerError("get tree", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "get tree") return } entries, err := tree.Entries() if err != nil { - c.ServerError("list entries", err) + c.Error(err, "list entries") return } diff --git a/internal/route/api/v1/user/app.go b/internal/route/api/v1/user/app.go index fdf11c09..99a422cc 100644 --- a/internal/route/api/v1/user/app.go +++ b/internal/route/api/v1/user/app.go @@ -17,7 +17,7 @@ import ( func ListAccessTokens(c *context.APIContext) { tokens, err := db.ListAccessTokens(c.User.ID) if err != nil { - c.ServerError("ListAccessTokens", err) + c.Error(err, "list access tokens") return } @@ -35,9 +35,9 @@ func CreateAccessToken(c *context.APIContext, form api.CreateAccessTokenOption) } if err := db.NewAccessToken(t); err != nil { if errors.IsAccessTokenNameAlreadyExist(err) { - c.Error(http.StatusUnprocessableEntity, "", err) + c.ErrorStatus(http.StatusUnprocessableEntity, err) } else { - c.ServerError("NewAccessToken", err) + c.Error(err, "new access token") } return } diff --git a/internal/route/api/v1/user/email.go b/internal/route/api/v1/user/email.go index e211221c..07fd4f8a 100644 --- a/internal/route/api/v1/user/email.go +++ b/internal/route/api/v1/user/email.go @@ -5,25 +5,26 @@ package user import ( - convert2 "gogs.io/gogs/internal/route/api/v1/convert" "net/http" api "github.com/gogs/go-gogs-client" + "github.com/pkg/errors" "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" + "gogs.io/gogs/internal/route/api/v1/convert" ) func ListEmails(c *context.APIContext) { emails, err := db.GetEmailAddresses(c.User.ID) if err != nil { - c.ServerError("GetEmailAddresses", err) + c.Error(err, "get email addresses") return } apiEmails := make([]*api.Email, len(emails)) for i := range emails { - apiEmails[i] = convert2.ToEmail(emails[i]) + apiEmails[i] = convert.ToEmail(emails[i]) } c.JSONSuccess(&apiEmails) } @@ -45,16 +46,16 @@ func AddEmail(c *context.APIContext, form api.CreateEmailOption) { if err := db.AddEmailAddresses(emails); err != nil { if db.IsErrEmailAlreadyUsed(err) { - c.Error(http.StatusUnprocessableEntity, "", "email address has been used: "+err.(db.ErrEmailAlreadyUsed).Email) + c.ErrorStatus(http.StatusUnprocessableEntity, errors.New("email address has been used: "+err.(db.ErrEmailAlreadyUsed).Email)) } else { - c.Error(http.StatusInternalServerError, "AddEmailAddresses", err) + c.Error(err, "add email addresses") } return } apiEmails := make([]*api.Email, len(emails)) for i := range emails { - apiEmails[i] = convert2.ToEmail(emails[i]) + apiEmails[i] = convert.ToEmail(emails[i]) } c.JSON(http.StatusCreated, &apiEmails) } @@ -74,7 +75,7 @@ func DeleteEmail(c *context.APIContext, form api.CreateEmailOption) { } if err := db.DeleteEmailAddresses(emails); err != nil { - c.Error(http.StatusInternalServerError, "DeleteEmailAddresses", err) + c.Error(err, "delete email addresses") return } c.NoContent() diff --git a/internal/route/api/v1/user/follower.go b/internal/route/api/v1/user/follower.go index 3a3d0298..c587547b 100644 --- a/internal/route/api/v1/user/follower.go +++ b/internal/route/api/v1/user/follower.go @@ -22,7 +22,7 @@ func responseApiUsers(c *context.APIContext, users []*db.User) { func listUserFollowers(c *context.APIContext, u *db.User) { users, err := u.GetFollowers(c.QueryInt("page")) if err != nil { - c.ServerError("GetUserFollowers", err) + c.Error(err, "get followers") return } responseApiUsers(c, users) @@ -43,7 +43,7 @@ func ListFollowers(c *context.APIContext) { func listUserFollowing(c *context.APIContext, u *db.User) { users, err := u.GetFollowing(c.QueryInt("page")) if err != nil { - c.ServerError("GetFollowing", err) + c.Error(err, "get following") return } responseApiUsers(c, users) @@ -95,7 +95,7 @@ func Follow(c *context.APIContext) { return } if err := db.FollowUser(c.User.ID, target.ID); err != nil { - c.ServerError("FollowUser", err) + c.Error(err, "follow user") return } c.NoContent() @@ -107,7 +107,7 @@ func Unfollow(c *context.APIContext) { return } if err := db.UnfollowUser(c.User.ID, target.ID); err != nil { - c.ServerError("UnfollowUser", err) + c.Error(err, "unfollow user") return } c.NoContent() diff --git a/internal/route/api/v1/user/key.go b/internal/route/api/v1/user/key.go index 759f9008..0d8c4f16 100644 --- a/internal/route/api/v1/user/key.go +++ b/internal/route/api/v1/user/key.go @@ -5,21 +5,22 @@ package user import ( - api "github.com/gogs/go-gogs-client" - convert2 "gogs.io/gogs/internal/route/api/v1/convert" - repo2 "gogs.io/gogs/internal/route/api/v1/repo" "net/http" + api "github.com/gogs/go-gogs-client" + "github.com/pkg/errors" + "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" + "gogs.io/gogs/internal/route/api/v1/convert" + "gogs.io/gogs/internal/route/api/v1/repo" ) func GetUserByParamsName(c *context.APIContext, name string) *db.User { user, err := db.GetUserByName(c.Params(name)) if err != nil { - c.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err) + c.NotFoundOrError(err, "get user by name") return nil } return user @@ -37,14 +38,14 @@ func composePublicKeysAPILink() string { func listPublicKeys(c *context.APIContext, uid int64) { keys, err := db.ListPublicKeys(uid) if err != nil { - c.ServerError("ListPublicKeys", err) + c.Error(err, "list public keys") return } apiLink := composePublicKeysAPILink() apiKeys := make([]*api.PublicKey, len(keys)) for i := range keys { - apiKeys[i] = convert2.ToPublicKey(apiLink, keys[i]) + apiKeys[i] = convert.ToPublicKey(apiLink, keys[i]) } c.JSONSuccess(&apiKeys) @@ -65,29 +66,29 @@ func ListPublicKeys(c *context.APIContext) { func GetPublicKey(c *context.APIContext) { key, err := db.GetPublicKeyByID(c.ParamsInt64(":id")) if err != nil { - c.NotFoundOrServerError("GetPublicKeyByID", db.IsErrKeyNotExist, err) + c.NotFoundOrError(err, "get public key by ID") return } apiLink := composePublicKeysAPILink() - c.JSONSuccess(convert2.ToPublicKey(apiLink, key)) + c.JSONSuccess(convert.ToPublicKey(apiLink, key)) } // CreateUserPublicKey creates new public key to given user by ID. func CreateUserPublicKey(c *context.APIContext, form api.CreateKeyOption, uid int64) { content, err := db.CheckPublicKeyString(form.Key) if err != nil { - repo2.HandleCheckKeyStringError(c, err) + repo.HandleCheckKeyStringError(c, err) return } key, err := db.AddPublicKey(uid, form.Title, content) if err != nil { - repo2.HandleAddKeyError(c, err) + repo.HandleAddKeyError(c, err) return } apiLink := composePublicKeysAPILink() - c.JSON(http.StatusCreated, convert2.ToPublicKey(apiLink, key)) + c.JSON(http.StatusCreated, convert.ToPublicKey(apiLink, key)) } func CreatePublicKey(c *context.APIContext, form api.CreateKeyOption) { @@ -97,9 +98,9 @@ func CreatePublicKey(c *context.APIContext, form api.CreateKeyOption) { func DeletePublicKey(c *context.APIContext) { if err := db.DeletePublicKey(c.User, c.ParamsInt64(":id")); err != nil { if db.IsErrKeyAccessDenied(err) { - c.Error(http.StatusForbidden, "", "you do not have access to this key") + c.ErrorStatus(http.StatusForbidden, errors.New("You do not have access to this key.")) } else { - c.Error(http.StatusInternalServerError, "DeletePublicKey", err) + c.Error(err, "delete public key") } return } diff --git a/internal/route/api/v1/user/user.go b/internal/route/api/v1/user/user.go index 8da3b734..695d5311 100644 --- a/internal/route/api/v1/user/user.go +++ b/internal/route/api/v1/user/user.go @@ -13,7 +13,6 @@ import ( "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" "gogs.io/gogs/internal/markup" ) @@ -58,7 +57,7 @@ func Search(c *context.APIContext) { func GetInfo(c *context.APIContext) { u, err := db.GetUserByName(c.Params(":username")) if err != nil { - c.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err) + c.NotFoundOrError(err, "get user by name") return } diff --git a/internal/route/dev/template.go b/internal/route/dev/template.go index b7392580..42b0ccc2 100644 --- a/internal/route/dev/template.go +++ b/internal/route/dev/template.go @@ -20,5 +20,5 @@ func TemplatePreview(c *context.Context) { c.Data["ResetPwdCodeLives"] = conf.Auth.ResetPasswordCodeLives / 60 c.Data["CurDbValue"] = "" - c.HTML(200, (c.Params("*"))) + c.Success( (c.Params("*"))) } diff --git a/internal/route/home.go b/internal/route/home.go index 5906f8bb..3da7f0cf 100644 --- a/internal/route/home.go +++ b/internal/route/home.go @@ -6,11 +6,11 @@ package route import ( "github.com/unknwon/paginater" - user2 "gogs.io/gogs/internal/route/user" "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" + "gogs.io/gogs/internal/route/user" ) const ( @@ -24,9 +24,9 @@ func Home(c *context.Context) { if c.IsLogged { if !c.User.IsActive && conf.Auth.RequireEmailConfirmation { c.Data["Title"] = c.Tr("auth.active_your_account") - c.Success(user2.ACTIVATE) + c.Success(user.ACTIVATE) } else { - user2.Dashboard(c) + user.Dashboard(c) } return } @@ -61,7 +61,7 @@ func ExploreRepos(c *context.Context) { PageSize: conf.UI.ExplorePagingNum, }) if err != nil { - c.ServerError("SearchRepositoryByName", err) + c.Error(err, "search repository by name") return } c.Data["Keyword"] = keyword @@ -69,7 +69,7 @@ func ExploreRepos(c *context.Context) { c.Data["Page"] = paginater.New(int(count), conf.UI.ExplorePagingNum, page, 5) if err = db.RepositoryList(repos).LoadAttributes(); err != nil { - c.ServerError("RepositoryList.LoadAttributes", err) + c.Error(err, "load attributes") return } c.Data["Repos"] = repos @@ -102,7 +102,7 @@ func RenderUserSearch(c *context.Context, opts *UserSearchOptions) { if len(keyword) == 0 { users, err = opts.Ranger(page, opts.PageSize) if err != nil { - c.ServerError("Ranger", err) + c.Error(err, "ranger") return } count = opts.Counter() @@ -115,7 +115,7 @@ func RenderUserSearch(c *context.Context, opts *UserSearchOptions) { PageSize: opts.PageSize, }) if err != nil { - c.ServerError("SearchUserByName", err) + c.Error(err, "search user by name") return } } diff --git a/internal/route/org/members.go b/internal/route/org/members.go index fc22ad59..d29d1896 100644 --- a/internal/route/org/members.go +++ b/internal/route/org/members.go @@ -11,7 +11,6 @@ import ( "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" ) const ( @@ -25,12 +24,12 @@ func Members(c *context.Context) { c.Data["PageIsOrgMembers"] = true if err := org.GetMembers(); err != nil { - c.Handle(500, "GetMembers", err) + c.Error(err, "get members") return } c.Data["Members"] = org.Members - c.HTML(200, MEMBERS) + c.Success(MEMBERS) } func MembersAction(c *context.Context) { @@ -45,19 +44,19 @@ func MembersAction(c *context.Context) { switch c.Params(":action") { case "private": if c.User.ID != uid && !c.Org.IsOwner { - c.Error(404) + c.NotFound() return } err = db.ChangeOrgUserStatus(org.ID, uid, false) case "public": if c.User.ID != uid && !c.Org.IsOwner { - c.Error(404) + c.NotFound() return } err = db.ChangeOrgUserStatus(org.ID, uid, true) case "remove": if !c.Org.IsOwner { - c.Error(404) + c.NotFound() return } err = org.RemoveMember(uid) @@ -77,7 +76,7 @@ func MembersAction(c *context.Context) { if err != nil { log.Error("Action(%s): %v", c.Params(":action"), err) - c.JSON(200, map[string]interface{}{ + c.JSONSuccess( map[string]interface{}{ "ok": false, "err": err.Error(), }) @@ -100,17 +99,17 @@ func Invitation(c *context.Context) { uname := c.Query("uname") u, err := db.GetUserByName(uname) if err != nil { - if errors.IsUserNotExist(err) { + if db.IsErrUserNotExist(err) { c.Flash.Error(c.Tr("form.user_not_exist")) c.Redirect(c.Org.OrgLink + "/invitations/new") } else { - c.Handle(500, " GetUserByName", err) + c.Error(err, "get user by name") } return } if err = org.AddMember(u.ID); err != nil { - c.Handle(500, " AddMember", err) + c.Error(err, "add member") return } @@ -119,5 +118,5 @@ func Invitation(c *context.Context) { return } - c.HTML(200, MEMBER_INVITE) + c.Success(MEMBER_INVITE) } diff --git a/internal/route/org/org.go b/internal/route/org/org.go index 551dd3e8..e0c358ac 100644 --- a/internal/route/org/org.go +++ b/internal/route/org/org.go @@ -7,7 +7,6 @@ package org import ( log "unknwon.dev/clog/v2" - "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" "gogs.io/gogs/internal/form" @@ -18,15 +17,15 @@ const ( ) func Create(c *context.Context) { - c.Data["Title"] = c.Tr("new_org") - c.HTML(200, CREATE) + c.Title("new_org") + c.Success(CREATE) } func CreatePost(c *context.Context, f form.CreateOrg) { - c.Data["Title"] = c.Tr("new_org") + c.Title("new_org") if c.HasError() { - c.HTML(200, CREATE) + c.Success(CREATE) return } @@ -46,11 +45,11 @@ func CreatePost(c *context.Context, f form.CreateOrg) { case db.IsErrNamePatternNotAllowed(err): c.RenderWithErr(c.Tr("org.form.name_pattern_not_allowed", err.(db.ErrNamePatternNotAllowed).Pattern), CREATE, &f) default: - c.Handle(500, "CreateOrganization", err) + c.Error(err, "create organization") } return } log.Trace("Organization created: %s", org.Name) - c.Redirect(conf.Server.Subpath + "/org/" + f.OrgName + "/dashboard") + c.RedirectSubpath("/org/" + f.OrgName + "/dashboard") } diff --git a/internal/route/org/setting.go b/internal/route/org/setting.go index aecd8643..61503383 100644 --- a/internal/route/org/setting.go +++ b/internal/route/org/setting.go @@ -12,7 +12,6 @@ import ( "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" "gogs.io/gogs/internal/form" "gogs.io/gogs/internal/route/user" ) @@ -24,17 +23,17 @@ const ( ) func Settings(c *context.Context) { - c.Data["Title"] = c.Tr("org.settings") + c.Title("org.settings") c.Data["PageIsSettingsOptions"] = true - c.HTML(200, SETTINGS_OPTIONS) + c.Success(SETTINGS_OPTIONS) } func SettingsPost(c *context.Context, f form.UpdateOrgSetting) { - c.Data["Title"] = c.Tr("org.settings") + c.Title("org.settings") c.Data["PageIsSettingsOptions"] = true if c.HasError() { - c.HTML(200, SETTINGS_OPTIONS) + c.Success(SETTINGS_OPTIONS) return } @@ -44,7 +43,7 @@ func SettingsPost(c *context.Context, f form.UpdateOrgSetting) { if org.LowerName != strings.ToLower(f.Name) { isExist, err := db.IsUserExist(org.ID, f.Name) if err != nil { - c.Handle(500, "IsUserExist", err) + c.Error(err, "check if user exists") return } else if isExist { c.Data["OrgName"] = true @@ -58,7 +57,7 @@ func SettingsPost(c *context.Context, f form.UpdateOrgSetting) { case db.IsErrNamePatternNotAllowed(err): c.RenderWithErr(c.Tr("user.form.name_pattern_not_allowed"), SETTINGS_OPTIONS, &f) default: - c.Handle(500, "ChangeUserName", err) + c.Error(err, "change user name") } return } @@ -79,7 +78,7 @@ func SettingsPost(c *context.Context, f form.UpdateOrgSetting) { org.Website = f.Website org.Location = f.Location if err := db.UpdateUser(org); err != nil { - c.Handle(500, "UpdateUser", err) + c.Error(err, "update user") return } log.Trace("Organization setting updated: %s", org.Name) @@ -113,10 +112,10 @@ func SettingsDelete(c *context.Context) { org := c.Org.Organization if c.Req.Method == "POST" { if _, err := db.UserLogin(c.User.Name, c.Query("password"), c.User.LoginSource); err != nil { - if errors.IsUserNotExist(err) { + if db.IsErrUserNotExist(err) { c.RenderWithErr(c.Tr("form.enterred_invalid_password"), SETTINGS_DELETE, nil) } else { - c.ServerError("UserLogin", err) + c.Error(err, "authenticate user") } return } @@ -126,7 +125,7 @@ func SettingsDelete(c *context.Context) { c.Flash.Error(c.Tr("form.org_still_own_repo")) c.Redirect(c.Org.OrgLink + "/settings/delete") } else { - c.ServerError("DeleteOrganization", err) + c.Error(err, "delete organization") } } else { log.Trace("Organization deleted: %s", org.Name) @@ -139,7 +138,7 @@ func SettingsDelete(c *context.Context) { } func Webhooks(c *context.Context) { - c.Data["Title"] = c.Tr("org.settings") + c.Title("org.settings") c.Data["PageIsSettingsHooks"] = true c.Data["BaseLink"] = c.Org.OrgLink c.Data["Description"] = c.Tr("org.settings.hooks_desc") @@ -147,12 +146,12 @@ func Webhooks(c *context.Context) { ws, err := db.GetWebhooksByOrgID(c.Org.Organization.ID) if err != nil { - c.Handle(500, "GetWebhooksByOrgId", err) + c.Error(err, "get webhooks by organization ID") return } c.Data["Webhooks"] = ws - c.HTML(200, SETTINGS_WEBHOOKS) + c.Success(SETTINGS_WEBHOOKS) } func DeleteWebhook(c *context.Context) { @@ -162,7 +161,7 @@ func DeleteWebhook(c *context.Context) { c.Flash.Success(c.Tr("repo.settings.webhook_deletion_success")) } - c.JSON(200, map[string]interface{}{ + c.JSONSuccess( map[string]interface{}{ "redirect": c.Org.OrgLink + "/settings/hooks", }) } diff --git a/internal/route/org/teams.go b/internal/route/org/teams.go index a4072e97..a703a82d 100644 --- a/internal/route/org/teams.go +++ b/internal/route/org/teams.go @@ -5,6 +5,7 @@ package org import ( + "net/http" "path" "github.com/unknwon/com" @@ -12,7 +13,6 @@ import ( "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" "gogs.io/gogs/internal/form" ) @@ -30,13 +30,13 @@ func Teams(c *context.Context) { for _, t := range org.Teams { if err := t.GetMembers(); err != nil { - c.Handle(500, "GetMembers", err) + c.Error(err, "get members") return } } c.Data["Teams"] = org.Teams - c.HTML(200, TEAMS) + c.Success(TEAMS) } func TeamsAction(c *context.Context) { @@ -51,7 +51,7 @@ func TeamsAction(c *context.Context) { switch c.Params(":action") { case "join": if !c.Org.IsOwner { - c.Error(404) + c.NotFound() return } err = c.Org.Team.AddMember(c.User.ID) @@ -59,25 +59,25 @@ func TeamsAction(c *context.Context) { err = c.Org.Team.RemoveMember(c.User.ID) case "remove": if !c.Org.IsOwner { - c.Error(404) + c.NotFound() return } err = c.Org.Team.RemoveMember(uid) page = "team" case "add": if !c.Org.IsOwner { - c.Error(404) + c.NotFound() return } uname := c.Query("uname") var u *db.User u, err = db.GetUserByName(uname) if err != nil { - if errors.IsUserNotExist(err) { + if db.IsErrUserNotExist(err) { c.Flash.Error(c.Tr("form.user_not_exist")) c.Redirect(c.Org.OrgLink + "/teams/" + c.Org.Team.LowerName) } else { - c.Handle(500, " GetUserByName", err) + c.Error(err, "get user by name") } return } @@ -91,7 +91,7 @@ func TeamsAction(c *context.Context) { c.Flash.Error(c.Tr("form.last_org_owner")) } else { log.Error("Action(%s): %v", c.Params(":action"), err) - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "ok": false, "err": err.Error(), }) @@ -109,7 +109,7 @@ func TeamsAction(c *context.Context) { func TeamsRepoAction(c *context.Context) { if !c.Org.IsOwner { - c.Error(404) + c.NotFound() return } @@ -120,12 +120,13 @@ func TeamsRepoAction(c *context.Context) { var repo *db.Repository repo, err = db.GetRepositoryByName(c.Org.Organization.ID, repoName) if err != nil { - if errors.IsRepoNotExist(err) { + if db.IsErrRepoNotExist(err) { c.Flash.Error(c.Tr("org.teams.add_nonexistent_repo")) c.Redirect(c.Org.OrgLink + "/teams/" + c.Org.Team.LowerName + "/repositories") return } - c.Handle(500, "GetRepositoryByName", err) + + c.Error(err, "get repository by name") return } err = c.Org.Team.AddRepository(repo) @@ -134,8 +135,7 @@ func TeamsRepoAction(c *context.Context) { } if err != nil { - log.Error("Action(%s): '%s' %v", c.Params(":action"), c.Org.Team.Name, err) - c.Handle(500, "TeamsRepoAction", err) + c.Errorf(err, "action %q", c.Params(":action")) return } c.Redirect(c.Org.OrgLink + "/teams/" + c.Org.Team.LowerName + "/repositories") @@ -146,7 +146,7 @@ func NewTeam(c *context.Context) { c.Data["PageIsOrgTeams"] = true c.Data["PageIsOrgTeamsNew"] = true c.Data["Team"] = &db.Team{} - c.HTML(200, TEAM_NEW) + c.Success(TEAM_NEW) } func NewTeamPost(c *context.Context, f form.CreateTeam) { @@ -163,7 +163,7 @@ func NewTeamPost(c *context.Context, f form.CreateTeam) { c.Data["Team"] = t if c.HasError() { - c.HTML(200, TEAM_NEW) + c.Success(TEAM_NEW) return } @@ -175,7 +175,7 @@ func NewTeamPost(c *context.Context, f form.CreateTeam) { case db.IsErrNameReserved(err): c.RenderWithErr(c.Tr("org.form.team_name_reserved", err.(db.ErrNameReserved).Name), TEAM_NEW, &f) default: - c.Handle(500, "NewTeam", err) + c.Error(err, "new team") } return } @@ -187,20 +187,20 @@ func TeamMembers(c *context.Context) { c.Data["Title"] = c.Org.Team.Name c.Data["PageIsOrgTeams"] = true if err := c.Org.Team.GetMembers(); err != nil { - c.Handle(500, "GetMembers", err) + c.Error(err, "get members") return } - c.HTML(200, TEAM_MEMBERS) + c.Success(TEAM_MEMBERS) } func TeamRepositories(c *context.Context) { c.Data["Title"] = c.Org.Team.Name c.Data["PageIsOrgTeams"] = true if err := c.Org.Team.GetRepositories(); err != nil { - c.Handle(500, "GetRepositories", err) + c.Error(err, "get repositories") return } - c.HTML(200, TEAM_REPOSITORIES) + c.Success(TEAM_REPOSITORIES) } func EditTeam(c *context.Context) { @@ -208,7 +208,7 @@ func EditTeam(c *context.Context) { c.Data["PageIsOrgTeams"] = true c.Data["team_name"] = c.Org.Team.Name c.Data["desc"] = c.Org.Team.Description - c.HTML(200, TEAM_NEW) + c.Success(TEAM_NEW) } func EditTeamPost(c *context.Context, f form.CreateTeam) { @@ -218,7 +218,7 @@ func EditTeamPost(c *context.Context, f form.CreateTeam) { c.Data["Team"] = t if c.HasError() { - c.HTML(200, TEAM_NEW) + c.Success(TEAM_NEW) return } @@ -234,7 +234,7 @@ func EditTeamPost(c *context.Context, f form.CreateTeam) { case "admin": auth = db.ACCESS_MODE_ADMIN default: - c.Error(401) + c.Status(http.StatusUnauthorized) return } @@ -251,7 +251,7 @@ func EditTeamPost(c *context.Context, f form.CreateTeam) { case db.IsErrTeamAlreadyExist(err): c.RenderWithErr(c.Tr("form.team_name_been_taken"), TEAM_NEW, &f) default: - c.Handle(500, "UpdateTeam", err) + c.Error(err, "update team") } return } @@ -265,7 +265,7 @@ func DeleteTeam(c *context.Context) { c.Flash.Success(c.Tr("org.teams.delete_team_success")) } - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "redirect": c.Org.OrgLink + "/teams", }) } diff --git a/internal/route/repo/branch.go b/internal/route/repo/branch.go index 2ee353b3..17630554 100644 --- a/internal/route/repo/branch.go +++ b/internal/route/repo/branch.go @@ -31,13 +31,13 @@ type Branch struct { func loadBranches(c *context.Context) []*Branch { rawBranches, err := c.Repo.Repository.GetBranches() if err != nil { - c.Handle(500, "GetBranches", err) + c.Error(err, "get branches") return nil } protectBranches, err := db.GetProtectBranchesByRepoID(c.Repo.Repository.ID) if err != nil { - c.Handle(500, "GetProtectBranchesByRepoID", err) + c.Error(err, "get protect branches by repository ID") return nil } @@ -45,7 +45,7 @@ func loadBranches(c *context.Context) []*Branch { for i := range rawBranches { commit, err := rawBranches[i].GetCommit() if err != nil { - c.Handle(500, "GetCommit", err) + c.Error(err, "get commit") return nil } @@ -91,7 +91,7 @@ func Branches(c *context.Context) { c.Data["ActiveBranches"] = activeBranches c.Data["StaleBranches"] = staleBranches - c.HTML(200, BRANCHES_OVERVIEW) + c.Success( BRANCHES_OVERVIEW) } func AllBranches(c *context.Context) { @@ -104,7 +104,7 @@ func AllBranches(c *context.Context) { } c.Data["Branches"] = branches - c.HTML(200, BRANCHES_ALL) + c.Success( BRANCHES_ALL) } func DeleteBranchPost(c *context.Context) { diff --git a/internal/route/repo/commit.go b/internal/route/repo/commit.go index 7b11e89a..e8ff3380 100644 --- a/internal/route/repo/commit.go +++ b/internal/route/repo/commit.go @@ -54,7 +54,7 @@ func renderCommits(c *context.Context, filename string) { commits, err := c.Repo.Commit.CommitsByPage(page, pageSize, git.CommitsByPageOptions{Path: filename}) if err != nil { - c.ServerError("paging commits", err) + c.Error(err, "paging commits") return } @@ -73,7 +73,7 @@ func renderCommits(c *context.Context, filename string) { c.Data["Username"] = c.Repo.Owner.Name c.Data["Reponame"] = c.Repo.Repository.Name - c.HTML(200, COMMITS) + c.Success(COMMITS) } func Commits(c *context.Context) { @@ -91,7 +91,7 @@ func SearchCommits(c *context.Context) { commits, err := c.Repo.Commit.SearchCommits(keyword) if err != nil { - c.ServerError("SearchCommits", err) + c.Error(err, "search commits") return } @@ -102,7 +102,7 @@ func SearchCommits(c *context.Context) { c.Data["Username"] = c.Repo.Owner.Name c.Data["Reponame"] = c.Repo.Repository.Name c.Data["Branch"] = c.Repo.BranchName - c.HTML(200, COMMITS) + c.Success(COMMITS) } func FileHistory(c *context.Context) { @@ -119,7 +119,7 @@ func Diff(c *context.Context) { commit, err := c.Repo.GitRepo.CatFileCommit(commitID) if err != nil { - c.NotFoundOrServerError("get commit by ID", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "get commit by ID") return } @@ -127,7 +127,7 @@ func Diff(c *context.Context) { commitID, conf.Git.MaxDiffFiles, conf.Git.MaxDiffLines, conf.Git.MaxDiffLineChars, ) if err != nil { - c.NotFoundOrServerError("get diff", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "get diff") return } @@ -171,7 +171,7 @@ func RawDiff(c *context.Context) { git.RawDiffFormat(c.Params(":ext")), c.Resp, ); err != nil { - c.NotFoundOrServerError("get raw diff", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "get raw diff") return } } @@ -185,7 +185,7 @@ func CompareDiff(c *context.Context) { commit, err := c.Repo.GitRepo.CatFileCommit(afterCommitID) if err != nil { - c.Handle(404, "GetCommit", err) + c.NotFoundOrError(gitutil.NewError(err), "get head commit") return } @@ -194,13 +194,13 @@ func CompareDiff(c *context.Context) { git.DiffOptions{Base: beforeCommitID}, ) if err != nil { - c.ServerError("get diff", err) + c.NotFoundOrError(gitutil.NewError(err), "get diff") return } commits, err := commit.CommitsAfter(beforeCommitID) if err != nil { - c.ServerError("get commits after", err) + c.NotFoundOrError(gitutil.NewError(err), "get commits after") return } @@ -220,5 +220,5 @@ func CompareDiff(c *context.Context) { c.Data["SourcePath"] = conf.Server.Subpath + "/" + path.Join(userName, repoName, "src", afterCommitID) c.Data["BeforeSourcePath"] = conf.Server.Subpath + "/" + path.Join(userName, repoName, "src", beforeCommitID) c.Data["RawPath"] = conf.Server.Subpath + "/" + path.Join(userName, repoName, "raw", afterCommitID) - c.HTML(200, DIFF) + c.Success(DIFF) } diff --git a/internal/route/repo/download.go b/internal/route/repo/download.go index 4bf27e20..6e29c10e 100644 --- a/internal/route/repo/download.go +++ b/internal/route/repo/download.go @@ -51,12 +51,12 @@ func ServeBlob(c *context.Context, blob *git.Blob) error { func SingleDownload(c *context.Context) { blob, err := c.Repo.Commit.Blob(c.Repo.TreePath) if err != nil { - c.NotFoundOrServerError("get blob", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "get blob") return } if err = ServeBlob(c, blob); err != nil { - c.ServerError("serve blob", err) + c.Error(err, "serve blob") return } } diff --git a/internal/route/repo/editor.go b/internal/route/repo/editor.go index 17434dff..cd71ff79 100644 --- a/internal/route/repo/editor.go +++ b/internal/route/repo/editor.go @@ -56,7 +56,7 @@ func editFile(c *context.Context, isNewFile bool) { if !isNewFile { entry, err := c.Repo.Commit.TreeEntry(c.Repo.TreePath) if err != nil { - c.NotFoundOrServerError("get tree entry", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "get tree entry") return } @@ -69,7 +69,7 @@ func editFile(c *context.Context, isNewFile bool) { blob := entry.Blob() p, err := blob.Bytes() if err != nil { - c.ServerError("blob.Data", err) + c.Error(err, "get blob data") return } @@ -182,7 +182,7 @@ func editFilePost(c *context.Context, f form.EditRepoFile, isNewFile bool) { break } - c.ServerError("Repo.Commit.GetTreeEntryByPath", err) + c.Error(err, "get tree entry") return } if index != len(treeNames)-1 { @@ -211,14 +211,14 @@ func editFilePost(c *context.Context, f form.EditRepoFile, isNewFile bool) { c.FormErr("TreePath") c.RenderWithErr(c.Tr("repo.editor.file_editing_no_longer_exists", oldTreePath), EDIT_FILE, &f) } else { - c.ServerError("GetTreeEntryByPath", err) + c.Error(err, "get tree entry") } return } if lastCommit != c.Repo.CommitID { files, err := c.Repo.Commit.FilesChangedAfter(lastCommit) if err != nil { - c.ServerError("GetFilesChangedSinceCommit", err) + c.Error(err, "get changed files") return } @@ -236,7 +236,7 @@ func editFilePost(c *context.Context, f form.EditRepoFile, isNewFile bool) { entry, err := c.Repo.Commit.TreeEntry(f.TreePath) if err != nil { if !gitutil.IsErrRevisionNotExist(err) { - c.ServerError("GetTreeEntryByPath", err) + c.Error(err, "get tree entry") return } } @@ -297,26 +297,26 @@ func DiffPreviewPost(c *context.Context, f form.EditPreviewDiff) { entry, err := c.Repo.Commit.TreeEntry(treePath) if err != nil { - c.Error(500, "GetTreeEntryByPath: "+err.Error()) + c.Error(err, "get tree entry") return } else if entry.IsTree() { - c.Error(422) + c.Status(http.StatusUnprocessableEntity) return } diff, err := c.Repo.Repository.GetDiffPreview(c.Repo.BranchName, treePath, f.Content) if err != nil { - c.Error(500, "GetDiffPreview: "+err.Error()) + c.Error(err, "get diff preview") return } if diff.NumFiles() == 0 { - c.PlainText(200, []byte(c.Tr("repo.editor.no_changes_to_show"))) + c.PlainText(http.StatusOK, c.Tr("repo.editor.no_changes_to_show")) return } c.Data["File"] = diff.Files[0] - c.HTML(200, EDIT_DIFF_PREVIEW) + c.Success(EDIT_DIFF_PREVIEW) } func DeleteFile(c *context.Context) { @@ -468,7 +468,7 @@ func UploadFilePost(c *context.Context, f form.UploadRepoFile) { break } - c.ServerError("GetTreeEntryByPath", err) + c.Error(err, "get tree entry") return } @@ -514,7 +514,7 @@ func UploadFilePost(c *context.Context, f form.UploadRepoFile) { func UploadFileToServer(c *context.Context) { file, header, err := c.Req.FormFile("file") if err != nil { - c.Error(http.StatusInternalServerError, fmt.Sprintf("FormFile: %v", err)) + c.Error(err, "get file") return } defer file.Close() @@ -537,14 +537,14 @@ func UploadFileToServer(c *context.Context) { } if !allowed { - c.Error(http.StatusBadRequest, ErrFileTypeForbidden.Error()) + c.PlainText(http.StatusBadRequest, ErrFileTypeForbidden.Error()) return } } upload, err := db.NewUpload(header.Filename, buf, file) if err != nil { - c.Error(http.StatusInternalServerError, fmt.Sprintf("NewUpload: %v", err)) + c.Error(err, "new upload") return } @@ -556,15 +556,15 @@ func UploadFileToServer(c *context.Context) { func RemoveUploadFileFromServer(c *context.Context, f form.RemoveUploadFile) { if len(f.File) == 0 { - c.Status(204) + c.Status(http.StatusNoContent) return } if err := db.DeleteUploadByUUID(f.File); err != nil { - c.Error(500, fmt.Sprintf("DeleteUploadByUUID: %v", err)) + c.Error(err, "delete upload by UUID") return } log.Trace("Upload file removed: %s", f.File) - c.Status(204) + c.Status(http.StatusNoContent) } diff --git a/internal/route/repo/http.go b/internal/route/repo/http.go index 59aea393..e63bc872 100644 --- a/internal/route/repo/http.go +++ b/internal/route/repo/http.go @@ -22,7 +22,6 @@ import ( "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" "gogs.io/gogs/internal/lazyregexp" "gogs.io/gogs/internal/tool" ) @@ -39,7 +38,7 @@ type HTTPContext struct { // askCredentials responses HTTP header and status which informs client to provide credentials. func askCredentials(c *context.Context, status int, text string) { c.Resp.Header().Set("WWW-Authenticate", "Basic realm=\".\"") - c.HandleText(status, text) + c.PlainText(status, text) } func HTTPContexter() macaron.Handler { @@ -66,13 +65,13 @@ func HTTPContexter() macaron.Handler { owner, err := db.GetUserByName(ownerName) if err != nil { - c.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err) + c.NotFoundOrError(err, "get user by name") return } repo, err := db.GetRepositoryByName(owner.ID, repoName) if err != nil { - c.NotFoundOrServerError("GetRepositoryByName", errors.IsRepoNotExist, err) + c.NotFoundOrError(err, "get repository by name") return } @@ -113,8 +112,8 @@ func HTTPContexter() macaron.Handler { } authUser, err := db.UserLogin(authUsername, authPassword, -1) - if err != nil && !errors.IsUserNotExist(err) { - c.Handle(http.StatusInternalServerError, "UserLogin", err) + if err != nil && !db.IsErrUserNotExist(err) { + c.Error(err, "authenticate user") return } @@ -125,7 +124,7 @@ func HTTPContexter() macaron.Handler { if db.IsErrAccessTokenEmpty(err) || db.IsErrAccessTokenNotExist(err) { askCredentials(c, http.StatusUnauthorized, "") } else { - c.Handle(http.StatusInternalServerError, "GetAccessTokenBySHA", err) + c.Error(err, "get access token by SHA") } return } @@ -136,7 +135,7 @@ func HTTPContexter() macaron.Handler { if err != nil { // Once we found token, we're supposed to find its related user, // thus any error is unexpected. - c.Handle(http.StatusInternalServerError, "GetUserByID", err) + c.Error(err, "get user by ID") return } } else if authUser.IsEnabledTwoFactor() { @@ -153,7 +152,7 @@ Please create and use personal access token on user settings page`) } has, err := db.HasAccess(authUser.ID, repo, mode) if err != nil { - c.Handle(http.StatusInternalServerError, "HasAccess", err) + c.Error(err, "check access") return } else if !has { askCredentials(c, http.StatusForbidden, "User permission denied") @@ -161,7 +160,7 @@ Please create and use personal access token on user settings page`) } if !isPull && repo.IsMirror { - c.HandleText(http.StatusForbidden, "Mirror repository is read-only") + c.PlainText(http.StatusForbidden, "Mirror repository is read-only") return } @@ -388,7 +387,7 @@ func HTTP(c *HTTPContext) { // but we only want to output this message only if user is really trying to access // Git HTTP endpoints. if conf.Repository.DisableHTTPGit { - c.HandleText(http.StatusForbidden, "Interacting with repositories by HTTP protocol is not disabled") + c.PlainText(http.StatusForbidden, "Interacting with repositories by HTTP protocol is disabled") return } diff --git a/internal/route/repo/issue.go b/internal/route/repo/issue.go index fea9af98..1b64cfe2 100644 --- a/internal/route/repo/issue.go +++ b/internal/route/repo/issue.go @@ -51,7 +51,7 @@ var ( func MustEnableIssues(c *context.Context) { if !c.Repo.Repository.EnableIssues { - c.Handle(404, "MustEnableIssues", nil) + c.NotFound() return } @@ -63,7 +63,7 @@ func MustEnableIssues(c *context.Context) { func MustAllowPulls(c *context.Context) { if !c.Repo.Repository.AllowsPulls() { - c.Handle(404, "MustAllowPulls", nil) + c.NotFound() return } @@ -77,7 +77,7 @@ func MustAllowPulls(c *context.Context) { func RetrieveLabels(c *context.Context) { labels, err := db.GetLabelsByRepoID(c.Repo.Repository.ID) if err != nil { - c.Handle(500, "RetrieveLabels.GetLabels", err) + c.Error(err, "get labels by repository ID") return } for _, l := range labels { @@ -182,14 +182,14 @@ func issues(c *context.Context, isPullList bool) { SortType: sortType, }) if err != nil { - c.Handle(500, "Issues", err) + c.Error(err, "list issues") return } // Get issue-user relations. pairs, err := db.GetIssueUsers(repo.ID, posterID, isShowClosed) if err != nil { - c.Handle(500, "GetIssueUsers", err) + c.Error(err, "get issue-user relations") return } @@ -213,14 +213,14 @@ func issues(c *context.Context, isPullList bool) { // Get milestones. c.Data["Milestones"], err = db.GetMilestonesByRepoID(repo.ID) if err != nil { - c.Handle(500, "GetAllRepoMilestones", err) + c.Error(err, "get milestone by repository ID") return } // Get assignees. c.Data["Assignees"], err = repo.GetAssignees() if err != nil { - c.Handle(500, "GetAssignees", err) + c.Error(err, "get assignees") return } @@ -241,7 +241,7 @@ func issues(c *context.Context, isPullList bool) { c.Data["State"] = "open" } - c.HTML(200, ISSUES) + c.Success(ISSUES) } func Issues(c *context.Context) { @@ -264,18 +264,18 @@ func RetrieveRepoMilestonesAndAssignees(c *context.Context, repo *db.Repository) var err error c.Data["OpenMilestones"], err = db.GetMilestones(repo.ID, -1, false) if err != nil { - c.Handle(500, "GetMilestones", err) + c.Error(err, "get open milestones") return } c.Data["ClosedMilestones"], err = db.GetMilestones(repo.ID, -1, true) if err != nil { - c.Handle(500, "GetMilestones", err) + c.Error(err, "get closed milestones") return } c.Data["Assignees"], err = repo.GetAssignees() if err != nil { - c.Handle(500, "GetAssignees", err) + c.Error(err, "get assignees") return } } @@ -287,7 +287,7 @@ func RetrieveRepoMetas(c *context.Context, repo *db.Repository) []*db.Label { labels, err := db.GetLabelsByRepoID(repo.ID) if err != nil { - c.Handle(500, "GetLabelsByRepoID", err) + c.Error(err, "get labels by repository ID") return nil } c.Data["Labels"] = labels @@ -345,7 +345,7 @@ func NewIssue(c *context.Context) { return } - c.HTML(200, ISSUE_NEW) + c.Success(ISSUE_NEW) } func ValidateRepoMetas(c *context.Context, f form.NewIssue) ([]int64, int64, int64) { @@ -382,7 +382,7 @@ func ValidateRepoMetas(c *context.Context, f form.NewIssue) ([]int64, int64, int if milestoneID > 0 { c.Data["Milestone"], err = repo.GetMilestoneByID(milestoneID) if err != nil { - c.Handle(500, "GetMilestoneByID", err) + c.Error(err, "get milestone by ID") return nil, 0, 0 } c.Data["milestone_id"] = milestoneID @@ -393,7 +393,7 @@ func ValidateRepoMetas(c *context.Context, f form.NewIssue) ([]int64, int64, int if assigneeID > 0 { c.Data["Assignee"], err = repo.GetAssigneeByID(assigneeID) if err != nil { - c.Handle(500, "GetAssigneeByID", err) + c.Error(err, "get assignee by ID") return nil, 0, 0 } c.Data["assignee_id"] = assigneeID @@ -415,7 +415,7 @@ func NewIssuePost(c *context.Context, f form.NewIssue) { } if c.HasError() { - c.HTML(200, ISSUE_NEW) + c.Success(ISSUE_NEW) return } @@ -434,7 +434,7 @@ func NewIssuePost(c *context.Context, f form.NewIssue) { Content: f.Content, } if err := db.NewIssue(c.Repo.Repository, issue, labelIDs, attachments); err != nil { - c.Handle(500, "NewIssue", err) + c.Error(err, "new issue") return } @@ -445,7 +445,7 @@ func NewIssuePost(c *context.Context, f form.NewIssue) { func uploadAttachment(c *context.Context, allowedTypes []string) { file, header, err := c.Req.FormFile("file") if err != nil { - c.Error(500, fmt.Sprintf("FormFile: %v", err)) + c.Error(err, "get file") return } defer file.Close() @@ -467,18 +467,18 @@ func uploadAttachment(c *context.Context, allowedTypes []string) { } if !allowed { - c.Error(400, ErrFileTypeForbidden.Error()) + c.PlainText(http.StatusBadRequest, ErrFileTypeForbidden.Error()) return } attach, err := db.NewAttachment(header.Filename, buf, file) if err != nil { - c.Error(500, fmt.Sprintf("NewAttachment: %v", err)) + c.Error(err, "new attachment") return } log.Trace("New attachment uploaded: %s", attach.UUID) - c.JSON(200, map[string]string{ + c.JSONSuccess(map[string]string{ "uuid": attach.UUID, }) } @@ -505,7 +505,7 @@ func viewIssue(c *context.Context, isPullList bool) { issue, err := db.GetIssueByIndex(c.Repo.Repository.ID, index) if err != nil { - c.NotFoundOrServerError("GetIssueByIndex", errors.IsIssueNotExist, err) + c.NotFoundOrError(err, "get issue by index") return } c.Data["Title"] = issue.Title @@ -559,7 +559,7 @@ func viewIssue(c *context.Context, isPullList bool) { } labels, err := db.GetLabelsByRepoID(repo.ID) if err != nil { - c.Handle(500, "GetLabelsByRepoID", err) + c.Error(err, "get labels by repository ID") return } hasSelected := false @@ -583,7 +583,7 @@ func viewIssue(c *context.Context, isPullList bool) { if c.IsLogged { // Update issue-user. if err = issue.ReadBy(c.User.ID); err != nil { - c.Handle(500, "ReadBy", err) + c.Error(err, "mark read by") return } } @@ -638,8 +638,8 @@ func viewIssue(c *context.Context, isPullList bool) { branchProtected := false protectBranch, err := db.GetProtectBranchOfRepoByName(pull.BaseRepoID, pull.HeadBranch) if err != nil { - if !errors.IsErrBranchNotExist(err) { - c.ServerError("GetProtectBranchOfRepoByName", err) + if !db.IsErrBranchNotExist(err) { + c.Error(err, "get protect branch of repository by name") return } } else { @@ -661,7 +661,7 @@ func viewIssue(c *context.Context, isPullList bool) { c.Data["Issue"] = issue c.Data["IsIssueOwner"] = c.Repo.IsWriter() || (c.IsLogged && issue.IsPoster(c.User.ID)) c.Data["SignInLink"] = conf.Server.Subpath + "/user/login?redirect_to=" + c.Data["Link"].(string) - c.HTML(200, ISSUE_VIEW) + c.Success(ISSUE_VIEW) } func ViewIssue(c *context.Context) { @@ -675,7 +675,7 @@ func ViewPull(c *context.Context) { func getActionIssue(c *context.Context) *db.Issue { issue, err := db.GetIssueByIndex(c.Repo.Repository.ID, c.ParamsInt64(":index")) if err != nil { - c.NotFoundOrServerError("GetIssueByIndex", errors.IsIssueNotExist, err) + c.NotFoundOrError(err, "get issue by index") return nil } @@ -695,22 +695,22 @@ func UpdateIssueTitle(c *context.Context) { } if !c.IsLogged || (!issue.IsPoster(c.User.ID) && !c.Repo.IsWriter()) { - c.Error(403) + c.Status(http.StatusForbidden) return } title := c.QueryTrim("title") if len(title) == 0 { - c.Error(204) + c.Status(http.StatusNoContent) return } if err := issue.ChangeTitle(c.User, title); err != nil { - c.Handle(500, "ChangeTitle", err) + c.Error(err, "change title") return } - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "title": issue.Title, }) } @@ -722,17 +722,17 @@ func UpdateIssueContent(c *context.Context) { } if !c.IsLogged || (c.User.ID != issue.PosterID && !c.Repo.IsWriter()) { - c.Error(403) + c.Status(http.StatusForbidden) return } content := c.Query("content") if err := issue.ChangeContent(c.User, content); err != nil { - c.Handle(500, "ChangeContent", err) + c.Error(err, "change content") return } - c.JSON(200, map[string]string{ + c.JSONSuccess(map[string]string{ "content": string(markup.Markdown(issue.Content, c.Query("context"), c.Repo.Repository.ComposeMetas())), }) } @@ -745,35 +745,31 @@ func UpdateIssueLabel(c *context.Context) { if c.Query("action") == "clear" { if err := issue.ClearLabels(c.User); err != nil { - c.Handle(500, "ClearLabels", err) + c.Error(err, "clear labels") return } } else { isAttach := c.Query("action") == "attach" label, err := db.GetLabelOfRepoByID(c.Repo.Repository.ID, c.QueryInt64("id")) if err != nil { - if db.IsErrLabelNotExist(err) { - c.Error(404, "GetLabelByID") - } else { - c.Handle(500, "GetLabelByID", err) - } + c.NotFoundOrError(err, "get label by ID") return } if isAttach && !issue.HasLabel(label.ID) { if err = issue.AddLabel(c.User, label); err != nil { - c.Handle(500, "AddLabel", err) + c.Error(err, "add label") return } } else if !isAttach && issue.HasLabel(label.ID) { if err = issue.RemoveLabel(c.User, label); err != nil { - c.Handle(500, "RemoveLabel", err) + c.Error(err, "remove label") return } } } - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "ok": true, }) } @@ -787,7 +783,7 @@ func UpdateIssueMilestone(c *context.Context) { oldMilestoneID := issue.MilestoneID milestoneID := c.QueryInt64("id") if oldMilestoneID == milestoneID { - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "ok": true, }) return @@ -796,11 +792,11 @@ func UpdateIssueMilestone(c *context.Context) { // Not check for invalid milestone id and give responsibility to owners. issue.MilestoneID = milestoneID if err := db.ChangeMilestoneAssign(c.User, issue, oldMilestoneID); err != nil { - c.Handle(500, "ChangeMilestoneAssign", err) + c.Error(err, "change milestone assign") return } - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "ok": true, }) } @@ -813,18 +809,18 @@ func UpdateIssueAssignee(c *context.Context) { assigneeID := c.QueryInt64("id") if issue.AssigneeID == assigneeID { - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "ok": true, }) return } if err := issue.ChangeAssignee(c.User, assigneeID); err != nil { - c.Handle(500, "ChangeAssignee", err) + c.Error(err, "change assignee") return } - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "ok": true, }) } @@ -862,7 +858,7 @@ func NewComment(c *context.Context, f form.CreateComment) { pr, err = db.GetUnmergedPullRequest(pull.HeadRepoID, pull.BaseRepoID, pull.HeadBranch, pull.BaseBranch) if err != nil { if !db.IsErrPullRequestNotExist(err) { - c.ServerError("GetUnmergedPullRequest", err) + c.Error(err, "get unmerged pull request") return } } @@ -870,7 +866,7 @@ func NewComment(c *context.Context, f form.CreateComment) { // Regenerate patch and test conflict. if pr == nil { if err = issue.PullRequest.UpdatePatch(); err != nil { - c.ServerError("UpdatePatch", err) + c.Error(err, "update patch") return } @@ -913,7 +909,7 @@ func NewComment(c *context.Context, f form.CreateComment) { comment, err = db.CreateIssueComment(c.User, c.Repo.Repository, issue, f.Content, attachments) if err != nil { - c.ServerError("CreateIssueComment", err) + c.Error(err, "create issue comment") return } @@ -923,32 +919,32 @@ func NewComment(c *context.Context, f form.CreateComment) { func UpdateCommentContent(c *context.Context) { comment, err := db.GetCommentByID(c.ParamsInt64(":id")) if err != nil { - c.NotFoundOrServerError("GetCommentByID", db.IsErrCommentNotExist, err) + c.NotFoundOrError(err, "get comment by ID") return } if c.UserID() != comment.PosterID && !c.Repo.IsAdmin() { - c.Error(404) + c.NotFound() return } else if comment.Type != db.COMMENT_TYPE_COMMENT { - c.Error(204) + c.Status(http.StatusNoContent) return } oldContent := comment.Content comment.Content = c.Query("content") if len(comment.Content) == 0 { - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "content": "", }) return } if err = db.UpdateComment(c.User, comment, oldContent); err != nil { - c.Handle(500, "UpdateComment", err) + c.Error(err, "update comment") return } - c.JSON(200, map[string]string{ + c.JSONSuccess(map[string]string{ "content": string(markup.Markdown(comment.Content, c.Query("context"), c.Repo.Repository.ComposeMetas())), }) } @@ -956,24 +952,24 @@ func UpdateCommentContent(c *context.Context) { func DeleteComment(c *context.Context) { comment, err := db.GetCommentByID(c.ParamsInt64(":id")) if err != nil { - c.NotFoundOrServerError("GetCommentByID", db.IsErrCommentNotExist, err) + c.NotFoundOrError(err, "get comment by ID") return } if c.UserID() != comment.PosterID && !c.Repo.IsAdmin() { - c.Error(404) + c.NotFound() return } else if comment.Type != db.COMMENT_TYPE_COMMENT { - c.Error(204) + c.Status(http.StatusNoContent) return } if err = db.DeleteCommentByID(c.User, comment.ID); err != nil { - c.Handle(500, "DeleteCommentByID", err) + c.Error(err, "delete comment by ID") return } - c.Status(200) + c.Status(http.StatusOK) } func Labels(c *context.Context) { @@ -982,7 +978,7 @@ func Labels(c *context.Context) { c.Data["PageIsLabels"] = true c.Data["RequireMinicolors"] = true c.Data["LabelTemplates"] = db.LabelTemplates - c.HTML(200, LABELS) + c.Success(LABELS) } func InitializeLabels(c *context.Context, f form.InitializeLabels) { @@ -1006,7 +1002,7 @@ func InitializeLabels(c *context.Context, f form.InitializeLabels) { } } if err := db.NewLabels(labels...); err != nil { - c.Handle(500, "NewLabels", err) + c.Error(err, "new labels") return } c.RawRedirect(c.Repo.MakeURL("labels")) @@ -1028,7 +1024,7 @@ func NewLabel(c *context.Context, f form.CreateLabel) { Color: f.Color, } if err := db.NewLabels(l); err != nil { - c.Handle(500, "NewLabel", err) + c.Error(err, "new labels") return } c.RawRedirect(c.Repo.MakeURL("labels")) @@ -1037,19 +1033,14 @@ func NewLabel(c *context.Context, f form.CreateLabel) { func UpdateLabel(c *context.Context, f form.CreateLabel) { l, err := db.GetLabelByID(f.ID) if err != nil { - switch { - case db.IsErrLabelNotExist(err): - c.Error(404) - default: - c.Handle(500, "UpdateLabel", err) - } + c.NotFoundOrError(err, "get label by ID") return } l.Name = f.Title l.Color = f.Color if err := db.UpdateLabel(l); err != nil { - c.Handle(500, "UpdateLabel", err) + c.Error(err, "update label") return } c.RawRedirect(c.Repo.MakeURL("labels")) @@ -1092,7 +1083,7 @@ func Milestones(c *context.Context) { miles, err := db.GetMilestones(c.Repo.Repository.ID, page, isShowClosed) if err != nil { - c.Handle(500, "GetMilestones", err) + c.Error(err, "get milestones") return } for _, m := range miles { @@ -1112,7 +1103,7 @@ func Milestones(c *context.Context) { } c.Data["IsShowClosed"] = isShowClosed - c.HTML(200, MILESTONE) + c.Success(MILESTONE) } func NewMilestone(c *context.Context) { @@ -1121,7 +1112,7 @@ func NewMilestone(c *context.Context) { c.Data["PageIsMilestones"] = true c.Data["RequireDatetimepicker"] = true c.Data["DateLang"] = conf.I18n.DateLang(c.Locale.Language()) - c.HTML(200, MILESTONE_NEW) + c.Success(MILESTONE_NEW) } func NewMilestonePost(c *context.Context, f form.CreateMilestone) { @@ -1132,7 +1123,7 @@ func NewMilestonePost(c *context.Context, f form.CreateMilestone) { c.Data["DateLang"] = conf.I18n.DateLang(c.Locale.Language()) if c.HasError() { - c.HTML(200, MILESTONE_NEW) + c.Success(MILESTONE_NEW) return } @@ -1152,7 +1143,7 @@ func NewMilestonePost(c *context.Context, f form.CreateMilestone) { Content: f.Content, Deadline: deadline, }); err != nil { - c.Handle(500, "NewMilestone", err) + c.Error(err, "new milestone") return } @@ -1169,11 +1160,7 @@ func EditMilestone(c *context.Context) { m, err := db.GetMilestoneByRepoID(c.Repo.Repository.ID, c.ParamsInt64(":id")) if err != nil { - if db.IsErrMilestoneNotExist(err) { - c.Handle(404, "", nil) - } else { - c.Handle(500, "GetMilestoneByRepoID", err) - } + c.NotFoundOrError(err, "get milestone by repository ID") return } c.Data["title"] = m.Name @@ -1181,7 +1168,7 @@ func EditMilestone(c *context.Context) { if len(m.DeadlineString) > 0 { c.Data["deadline"] = m.DeadlineString } - c.HTML(200, MILESTONE_NEW) + c.Success(MILESTONE_NEW) } func EditMilestonePost(c *context.Context, f form.CreateMilestone) { @@ -1192,7 +1179,7 @@ func EditMilestonePost(c *context.Context, f form.CreateMilestone) { c.Data["DateLang"] = conf.I18n.DateLang(c.Locale.Language()) if c.HasError() { - c.HTML(200, MILESTONE_NEW) + c.Success(MILESTONE_NEW) return } @@ -1208,18 +1195,14 @@ func EditMilestonePost(c *context.Context, f form.CreateMilestone) { m, err := db.GetMilestoneByRepoID(c.Repo.Repository.ID, c.ParamsInt64(":id")) if err != nil { - if db.IsErrMilestoneNotExist(err) { - c.Handle(404, "", nil) - } else { - c.Handle(500, "GetMilestoneByRepoID", err) - } + c.NotFoundOrError(err, "get milestone by repository ID") return } m.Name = f.Title m.Content = f.Content m.Deadline = deadline if err = db.UpdateMilestone(m); err != nil { - c.Handle(500, "UpdateMilestone", err) + c.Error(err, "update milestone") return } @@ -1230,11 +1213,7 @@ func EditMilestonePost(c *context.Context, f form.CreateMilestone) { func ChangeMilestonStatus(c *context.Context) { m, err := db.GetMilestoneByRepoID(c.Repo.Repository.ID, c.ParamsInt64(":id")) if err != nil { - if db.IsErrMilestoneNotExist(err) { - c.Handle(404, "", err) - } else { - c.Handle(500, "GetMilestoneByRepoID", err) - } + c.NotFoundOrError(err, "get milestone by repository ID") return } @@ -1246,7 +1225,7 @@ func ChangeMilestonStatus(c *context.Context) { case "open": if m.IsClosed { if err = db.ChangeMilestoneStatus(m, false); err != nil { - c.Handle(500, "ChangeMilestoneStatus", err) + c.Error(err, "change milestone status to open") return } } @@ -1255,7 +1234,7 @@ func ChangeMilestonStatus(c *context.Context) { if !m.IsClosed { m.ClosedDate = time.Now() if err = db.ChangeMilestoneStatus(m, true); err != nil { - c.Handle(500, "ChangeMilestoneStatus", err) + c.Error(err, "change milestone status to closed") return } } @@ -1272,7 +1251,7 @@ func DeleteMilestone(c *context.Context) { c.Flash.Success(c.Tr("repo.milestones.deletion_success")) } - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "redirect": c.Repo.MakeURL("milestones"), }) } diff --git a/internal/route/repo/pull.go b/internal/route/repo/pull.go index a1b47480..14e9a5c3 100644 --- a/internal/route/repo/pull.go +++ b/internal/route/repo/pull.go @@ -5,6 +5,7 @@ package repo import ( + "net/http" "path" "strings" @@ -16,7 +17,6 @@ import ( "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" "gogs.io/gogs/internal/form" "gogs.io/gogs/internal/gitutil" "gogs.io/gogs/internal/tool" @@ -49,7 +49,7 @@ var ( func parseBaseRepository(c *context.Context) *db.Repository { baseRepo, err := db.GetRepositoryByID(c.ParamsInt64(":repoid")) if err != nil { - c.NotFoundOrServerError("GetRepositoryByID", errors.IsRepoNotExist, err) + c.NotFoundOrError(err, "get repository by ID") return nil } @@ -63,13 +63,13 @@ func parseBaseRepository(c *context.Context) *db.Repository { c.Data["IsPrivate"] = baseRepo.IsPrivate if err = baseRepo.GetOwner(); err != nil { - c.ServerError("GetOwner", err) + c.Error(err, "get owner") return nil } c.Data["ForkFrom"] = baseRepo.Owner.Name + "/" + baseRepo.Name if err := c.User.GetOrganizations(true); err != nil { - c.ServerError("GetOrganizations", err) + c.Error(err, "get organizations") return nil } c.Data["Orgs"] = c.User.Orgs @@ -110,7 +110,7 @@ func ForkPost(c *context.Context, f form.CreateRepo) { repo, has, err := db.HasForkedRepo(ctxUser.ID, baseRepo.ID) if err != nil { - c.ServerError("HasForkedRepo", err) + c.Error(err, "check forked repository") return } else if has { c.Redirect(repo.Link()) @@ -119,7 +119,7 @@ func ForkPost(c *context.Context, f form.CreateRepo) { // Check ownership of organization. if ctxUser.IsOrganization() && !ctxUser.IsOwnedBy(c.User.ID) { - c.Error(403) + c.Status(http.StatusForbidden) return } @@ -133,7 +133,7 @@ func ForkPost(c *context.Context, f form.CreateRepo) { if err != nil { c.Data["Err_RepoName"] = true switch { - case errors.IsReachLimitOfRepo(err): + case db.IsErrReachLimitOfRepo(err): c.RenderWithErr(c.Tr("repo.form.reach_limit_of_creation", c.User.RepoCreationNum()), FORK, &f) case db.IsErrRepoAlreadyExist(err): c.RenderWithErr(c.Tr("repo.settings.new_owner_has_same_repo"), FORK, &f) @@ -142,7 +142,7 @@ func ForkPost(c *context.Context, f form.CreateRepo) { case db.IsErrNamePatternNotAllowed(err): c.RenderWithErr(c.Tr("repo.form.name_pattern_not_allowed", err.(db.ErrNamePatternNotAllowed).Pattern), FORK, &f) default: - c.ServerError("ForkPost", err) + c.Error(err, "fork repository") } return } @@ -154,21 +154,21 @@ func ForkPost(c *context.Context, f form.CreateRepo) { func checkPullInfo(c *context.Context) *db.Issue { issue, err := db.GetIssueByIndex(c.Repo.Repository.ID, c.ParamsInt64(":index")) if err != nil { - c.NotFoundOrServerError("GetIssueByIndex", errors.IsIssueNotExist, err) + c.NotFoundOrError(err, "get issue by index") return nil } c.Data["Title"] = issue.Title c.Data["Issue"] = issue if !issue.IsPull { - c.Handle(404, "ViewPullCommits", nil) + c.NotFound() return nil } if c.IsLogged { // Update issue-user. if err = issue.ReadBy(c.User.ID); err != nil { - c.ServerError("ReadBy", err) + c.Error(err, "mark read by") return nil } } @@ -185,14 +185,14 @@ func PrepareMergedViewPullInfo(c *context.Context, issue *db.Issue) { var err error c.Data["NumCommits"], err = c.Repo.GitRepo.RevListCount([]string{pull.MergeBase + "..." + pull.MergedCommitID}) if err != nil { - c.ServerError("Repo.GitRepo.CommitsCountBetween", err) + c.Error(err, "count commits") return } names, err := c.Repo.GitRepo.DiffNameOnly(pull.MergeBase, pull.MergedCommitID, git.DiffNameOnlyOptions{NeedsMergeBase: true}) c.Data["NumFiles"] = len(names) if err != nil { - c.ServerError("Repo.GitRepo.FilesCountBetween", err) + c.Error(err, "get changed files") return } } @@ -212,7 +212,7 @@ func PrepareViewPullInfo(c *context.Context, issue *db.Issue) *gitutil.PullReque if pull.HeadRepo != nil { headGitRepo, err = git.Open(pull.HeadRepo.RepoPath()) if err != nil { - c.ServerError("open repository", err) + c.Error(err, "open repository") return nil } } @@ -236,7 +236,7 @@ func PrepareViewPullInfo(c *context.Context, issue *db.Issue) *gitutil.PullReque return nil } - c.ServerError("GetPullRequestInfo", err) + c.Error(err, "get pull request meta") return nil } c.Data["NumCommits"] = len(prMeta.Commits) @@ -267,17 +267,17 @@ func ViewPullCommits(c *context.Context) { } startCommit, err := c.Repo.GitRepo.CatFileCommit(pull.MergeBase) if err != nil { - c.ServerError("get commit of merge base", err) + c.Error(err, "get commit of merge base") return } endCommit, err := c.Repo.GitRepo.CatFileCommit(pull.MergedCommitID) if err != nil { - c.ServerError("get merged commit", err) + c.Error(err, "get merged commit") return } commits, err = c.Repo.GitRepo.RevList([]string{startCommit.ID.String() + "..." + endCommit.ID.String()}) if err != nil { - c.ServerError("list commits", err) + c.Error(err, "list commits") return } @@ -330,7 +330,7 @@ func ViewPullFiles(c *context.Context) { if c.Written() { return } else if prInfo == nil { - c.Handle(404, "ViewPullFiles", nil) + c.NotFound() return } @@ -338,13 +338,13 @@ func ViewPullFiles(c *context.Context) { headGitRepo, err := git.Open(headRepoPath) if err != nil { - c.ServerError("open repository", err) + c.Error(err, "open repository") return } headCommitID, err := headGitRepo.BranchCommitID(pull.HeadBranch) if err != nil { - c.ServerError("get head branch commit ID", err) + c.Error(err, "get head branch commit ID") return } @@ -359,7 +359,7 @@ func ViewPullFiles(c *context.Context) { git.DiffOptions{Base: startCommitID}, ) if err != nil { - c.ServerError("get diff", err) + c.Error(err, "get diff") return } c.Data["Diff"] = diff @@ -367,7 +367,7 @@ func ViewPullFiles(c *context.Context) { commit, err := gitRepo.CatFileCommit(endCommitID) if err != nil { - c.ServerError("get commit", err) + c.Error(err, "get commit") return } @@ -406,7 +406,7 @@ func MergePullRequest(c *context.Context) { pr, err := db.GetPullRequestByIssueID(issue.ID) if err != nil { - c.NotFoundOrServerError("GetPullRequestByIssueID", db.IsErrPullRequestNotExist, err) + c.NotFoundOrError(err, "get pull request by issue ID") return } @@ -418,7 +418,7 @@ func MergePullRequest(c *context.Context) { pr.Issue = issue pr.Issue.Repo = c.Repo.Repository if err = pr.Merge(c.User, c.Repo.GitRepo, db.MergeStyle(c.Query("merge_style")), c.Query("commit_description")); err != nil { - c.ServerError("Merge", err) + c.Error(err, "merge") return } @@ -460,7 +460,7 @@ func ParseCompareInfo(c *context.Context) (*db.User, *db.Repository, *git.Reposi } else if len(headInfos) == 2 { headUser, err = db.GetUserByName(headInfos[0]) if err != nil { - c.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err) + c.NotFoundOrError(err, "get user by name") return nil, nil, nil, nil, "", "" } headBranch = headInfos[1] @@ -491,7 +491,7 @@ func ParseCompareInfo(c *context.Context) (*db.User, *db.Repository, *git.Reposi var has bool headRepo, has, err = db.HasForkedRepo(headUser.ID, baseRepo.ID) if err != nil { - c.ServerError("HasForkedRepo", err) + c.Error(err, "get forked repository") return nil, nil, nil, nil, "", "" } else if !has { log.Trace("ParseCompareInfo [base_repo_id: %d]: does not have fork or in same repository", baseRepo.ID) @@ -501,7 +501,7 @@ func ParseCompareInfo(c *context.Context) (*db.User, *db.Repository, *git.Reposi headGitRepo, err = git.Open(db.RepoPath(headUser.Name, headRepo.Name)) if err != nil { - c.ServerError("open repository", err) + c.Error(err, "open repository") return nil, nil, nil, nil, "", "" } } else { @@ -523,7 +523,7 @@ func ParseCompareInfo(c *context.Context) (*db.User, *db.Repository, *git.Reposi headBranches, err := headGitRepo.Branches() if err != nil { - c.ServerError("get branches", err) + c.Error(err, "get branches") return nil, nil, nil, nil, "", "" } c.Data["HeadBranches"] = headBranches @@ -535,7 +535,7 @@ func ParseCompareInfo(c *context.Context) (*db.User, *db.Repository, *git.Reposi c.Data["IsNoMergeBase"] = true c.Success(COMPARE_PULL) } else { - c.ServerError("get pull request meta", err) + c.Error(err, "get pull request meta") } return nil, nil, nil, nil, "", "" } @@ -563,7 +563,7 @@ func PrepareCompareDiff( headCommitID, err := headGitRepo.BranchCommitID(headBranch) if err != nil { - c.ServerError("get head branch commit ID", err) + c.Error(err, "get head branch commit ID") return false } c.Data["AfterCommitID"] = headCommitID @@ -578,7 +578,7 @@ func PrepareCompareDiff( git.DiffOptions{Base: meta.MergeBase}, ) if err != nil { - c.ServerError("get repository diff", err) + c.Error(err, "get repository diff") return false } c.Data["Diff"] = diff @@ -586,7 +586,7 @@ func PrepareCompareDiff( headCommit, err := headGitRepo.CatFileCommit(headCommitID) if err != nil { - c.ServerError("get head commit", err) + c.Error(err, "get head commit") return false } @@ -619,7 +619,7 @@ func CompareAndPullRequest(c *context.Context) { pr, err := db.GetUnmergedPullRequest(headRepo.ID, c.Repo.Repository.ID, headBranch, baseBranch) if err != nil { if !db.IsErrPullRequestNotExist(err) { - c.ServerError("GetUnmergedPullRequest", err) + c.Error(err, "get unmerged pull request") return } } else { @@ -701,7 +701,7 @@ func CompareAndPullRequestPost(c *context.Context, f form.NewIssue) { patch, err := headGitRepo.DiffBinary(meta.MergeBase, headBranch) if err != nil { - c.ServerError("get patch", err) + c.Error(err, "get patch") return } @@ -730,10 +730,10 @@ func CompareAndPullRequestPost(c *context.Context, f form.NewIssue) { // FIXME: check error in the case two people send pull request at almost same time, give nice error prompt // instead of 500. if err := db.NewPullRequest(repo, pullIssue, labelIDs, attachments, pullRequest, patch); err != nil { - c.ServerError("NewPullRequest", err) + c.Error(err, "new pull request") return } else if err := pullRequest.PushToBaseRepo(); err != nil { - c.ServerError("PushToBaseRepo", err) + c.Error(err, "push to base repository") return } @@ -744,13 +744,13 @@ func CompareAndPullRequestPost(c *context.Context, f form.NewIssue) { func parseOwnerAndRepo(c *context.Context) (*db.User, *db.Repository) { owner, err := db.GetUserByName(c.Params(":username")) if err != nil { - c.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err) + c.NotFoundOrError(err, "get user by name") return nil, nil } repo, err := db.GetRepositoryByName(owner.ID, c.Params(":reponame")) if err != nil { - c.NotFoundOrServerError("GetRepositoryByName", errors.IsRepoNotExist, err) + c.NotFoundOrError(err, "get repository by name") return nil, nil } @@ -762,7 +762,7 @@ func TriggerTask(c *context.Context) { branch := c.Query("branch") secret := c.Query("secret") if len(branch) == 0 || len(secret) == 0 || pusherID <= 0 { - c.Error(404) + c.NotFound() log.Trace("TriggerTask: branch or secret is empty, or pusher ID is not valid") return } @@ -771,14 +771,14 @@ func TriggerTask(c *context.Context) { return } if secret != tool.MD5(owner.Salt) { - c.Error(404) + c.NotFound() log.Trace("TriggerTask [%s/%s]: invalid secret", owner.Name, repo.Name) return } pusher, err := db.GetUserByID(pusherID) if err != nil { - c.NotFoundOrServerError("GetUserByID", errors.IsUserNotExist, err) + c.NotFoundOrError(err, "get user by ID") return } diff --git a/internal/route/repo/release.go b/internal/route/repo/release.go index f945e4fc..cf05b800 100644 --- a/internal/route/repo/release.go +++ b/internal/route/repo/release.go @@ -53,13 +53,13 @@ func Releases(c *context.Context) { tagsPage, err := gitutil.Module.ListTagsAfter(c.Repo.GitRepo.Path(), c.Query("after"), 10) if err != nil { - c.ServerError("get tags", err) + c.Error(err, "get tags") return } releases, err := db.GetPublishedReleasesByRepoID(c.Repo.Repository.ID, tagsPage.Tags...) if err != nil { - c.Handle(500, "GetPublishedReleasesByRepoID", err) + c.Error(err, "get published releases by repository ID") return } @@ -75,12 +75,12 @@ func Releases(c *context.Context) { releases[j] = nil // Mark as used. if err = r.LoadAttributes(); err != nil { - c.Handle(500, "LoadAttributes", err) + c.Error(err, "load attributes") return } if err := calReleaseNumCommitsBehind(c.Repo, r, countCache); err != nil { - c.Handle(500, "calReleaseNumCommitsBehind", err) + c.Error(err, "calculate number of commits after release") return } @@ -93,7 +93,7 @@ func Releases(c *context.Context) { if results[i] == nil { commit, err := c.Repo.GitRepo.TagCommit(rawTag) if err != nil { - c.Handle(500, "get tag commit", err) + c.Error(err, "get tag commit") return } @@ -105,7 +105,7 @@ func Releases(c *context.Context) { results[i].NumCommits, err = commit.CommitsCount() if err != nil { - c.ServerError("count commits", err) + c.Error(err, "count commits") return } results[i].NumCommitsBehind = c.Repo.CommitsCount - results[i].NumCommits @@ -118,18 +118,18 @@ func Releases(c *context.Context) { if tagsPage.HasLatest { drafts, err = db.GetDraftReleasesByRepoID(c.Repo.Repository.ID) if err != nil { - c.Handle(500, "GetDraftReleasesByRepoID", err) + c.Error(err, "get draft releases by repository ID") return } for _, r := range drafts { if err = r.LoadAttributes(); err != nil { - c.Handle(500, "LoadAttributes", err) + c.Error(err, "load attributes") return } if err := calReleaseNumCommitsBehind(c.Repo, r, countCache); err != nil { - c.Handle(500, "calReleaseNumCommitsBehind", err) + c.Error(err, "calculate number of commits after release") return } @@ -148,7 +148,7 @@ func Releases(c *context.Context) { if len(results) > 0 { c.Data["NextAfter"] = results[len(results)-1].TagName } - c.HTML(200, RELEASES) + c.Success(RELEASES) } func renderReleaseAttachmentSettings(c *context.Context) { @@ -164,7 +164,7 @@ func NewRelease(c *context.Context) { c.Data["PageIsReleaseList"] = true c.Data["tag_target"] = c.Repo.Repository.DefaultBranch renderReleaseAttachmentSettings(c) - c.HTML(200, RELEASE_NEW) + c.Success(RELEASE_NEW) } func NewReleasePost(c *context.Context, f form.NewRelease) { @@ -173,7 +173,7 @@ func NewReleasePost(c *context.Context, f form.NewRelease) { renderReleaseAttachmentSettings(c) if c.HasError() { - c.HTML(200, RELEASE_NEW) + c.Success(RELEASE_NEW) return } @@ -194,13 +194,13 @@ func NewReleasePost(c *context.Context, f form.NewRelease) { commit, err := c.Repo.GitRepo.BranchCommit(f.Target) if err != nil { - c.ServerError("get branch commit", err) + c.Error(err, "get branch commit") return } commitsCount, err := commit.CommitsCount() if err != nil { - c.ServerError("count commits", err) + c.Error(err, "count commits") return } @@ -230,7 +230,7 @@ func NewReleasePost(c *context.Context, f form.NewRelease) { case db.IsErrInvalidTagName(err): c.RenderWithErr(c.Tr("repo.release.tag_name_invalid"), RELEASE_NEW, &f) default: - c.Handle(500, "NewRelease", err) + c.Error(err, "new release") } return } @@ -248,11 +248,7 @@ func EditRelease(c *context.Context) { tagName := c.Params("*") rel, err := db.GetRelease(c.Repo.Repository.ID, tagName) if err != nil { - if db.IsErrReleaseNotExist(err) { - c.Handle(404, "GetRelease", err) - } else { - c.Handle(500, "GetRelease", err) - } + c.NotFoundOrError(err, "get release") return } c.Data["ID"] = rel.ID @@ -264,7 +260,7 @@ func EditRelease(c *context.Context) { c.Data["prerelease"] = rel.IsPrerelease c.Data["IsDraft"] = rel.IsDraft - c.HTML(200, RELEASE_NEW) + c.Success(RELEASE_NEW) } func EditReleasePost(c *context.Context, f form.EditRelease) { @@ -276,11 +272,7 @@ func EditReleasePost(c *context.Context, f form.EditRelease) { tagName := c.Params("*") rel, err := db.GetRelease(c.Repo.Repository.ID, tagName) if err != nil { - if db.IsErrReleaseNotExist(err) { - c.Handle(404, "GetRelease", err) - } else { - c.Handle(500, "GetRelease", err) - } + c.NotFoundOrError(err, "get release") return } c.Data["tag_name"] = rel.TagName @@ -292,7 +284,7 @@ func EditReleasePost(c *context.Context, f form.EditRelease) { c.Data["IsDraft"] = rel.IsDraft if c.HasError() { - c.HTML(200, RELEASE_NEW) + c.Success(RELEASE_NEW) return } @@ -307,7 +299,7 @@ func EditReleasePost(c *context.Context, f form.EditRelease) { rel.IsDraft = len(f.Draft) > 0 rel.IsPrerelease = f.Prerelease if err = db.UpdateRelease(c.User, c.Repo.GitRepo, rel, isPublish, attachments); err != nil { - c.Handle(500, "UpdateRelease", err) + c.Error(err, "update release") return } c.Redirect(c.Repo.RepoLink + "/releases") @@ -328,7 +320,7 @@ func DeleteRelease(c *context.Context) { c.Flash.Success(c.Tr("repo.release.deletion_success")) } - c.JSON(200, map[string]interface{}{ + c.JSONSuccess( map[string]interface{}{ "redirect": c.Repo.RepoLink + "/releases", }) } diff --git a/internal/route/repo/repo.go b/internal/route/repo/repo.go index a0bd25fe..c55314d3 100644 --- a/internal/route/repo/repo.go +++ b/internal/route/repo/repo.go @@ -5,7 +5,7 @@ package repo import ( - "fmt" + "net/http" "os" "path" "path/filepath" @@ -19,7 +19,6 @@ import ( "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" "gogs.io/gogs/internal/form" "gogs.io/gogs/internal/tool" ) @@ -31,14 +30,14 @@ const ( func MustBeNotBare(c *context.Context) { if c.Repo.Repository.IsBare { - c.Handle(404, "MustBeNotBare", nil) + c.NotFound() } } func checkContextUser(c *context.Context, uid int64) *db.User { orgs, err := db.GetOwnedOrgsByUserIDDesc(c.User.ID, "updated_unix") if err != nil { - c.Handle(500, "GetOwnedOrgsByUserIDDesc", err) + c.Error(err, "get owned organization by user ID") return nil } c.Data["Orgs"] = orgs @@ -49,18 +48,18 @@ func checkContextUser(c *context.Context, uid int64) *db.User { } org, err := db.GetUserByID(uid) - if errors.IsUserNotExist(err) { + if db.IsErrUserNotExist(err) { return c.User } if err != nil { - c.Handle(500, "GetUserByID", fmt.Errorf("[%d]: %v", uid, err)) + c.Error(err, "get user by ID") return nil } // Check ownership of organization. if !org.IsOrganization() || !(c.User.IsAdmin || org.IsOwnedBy(c.User.ID)) { - c.Error(403) + c.Status(http.StatusForbidden) return nil } return org @@ -84,12 +83,12 @@ func Create(c *context.Context) { } c.Data["ContextUser"] = ctxUser - c.HTML(200, CREATE) + c.Success(CREATE) } func handleCreateError(c *context.Context, owner *db.User, err error, name, tpl string, form interface{}) { switch { - case errors.IsReachLimitOfRepo(err): + case db.IsErrReachLimitOfRepo(err): c.RenderWithErr(c.Tr("repo.form.reach_limit_of_creation", owner.RepoCreationNum()), tpl, form) case db.IsErrRepoAlreadyExist(err): c.Data["Err_RepoName"] = true @@ -101,7 +100,7 @@ func handleCreateError(c *context.Context, owner *db.User, err error, name, tpl c.Data["Err_RepoName"] = true c.RenderWithErr(c.Tr("repo.form.name_pattern_not_allowed", err.(db.ErrNamePatternNotAllowed).Pattern), tpl, form) default: - c.Handle(500, name, err) + c.Error(err, name) } } @@ -119,7 +118,7 @@ func CreatePost(c *context.Context, f form.CreateRepo) { c.Data["ContextUser"] = ctxUser if c.HasError() { - c.HTML(200, CREATE) + c.Success(CREATE) return } @@ -159,7 +158,7 @@ func Migrate(c *context.Context) { } c.Data["ContextUser"] = ctxUser - c.HTML(200, MIGRATE) + c.Success(MIGRATE) } func MigratePost(c *context.Context, f form.MigrateRepo) { @@ -172,7 +171,7 @@ func MigratePost(c *context.Context, f form.MigrateRepo) { c.Data["ContextUser"] = ctxUser if c.HasError() { - c.HTML(200, MIGRATE) + c.Success(MIGRATE) return } @@ -189,10 +188,10 @@ func MigratePost(c *context.Context, f form.MigrateRepo) { case addrErr.IsInvalidPath: c.RenderWithErr(c.Tr("repo.migrate.invalid_local_path"), MIGRATE, &f) default: - c.Handle(500, "Unknown error", err) + c.Error(err, "unexpected error") } } else { - c.Handle(500, "ParseRemoteAddr", err) + c.Error(err, "parse remote address") } return } @@ -259,7 +258,7 @@ func Action(c *context.Context) { } if err != nil { - c.ServerError(fmt.Sprintf("Action (%s)", c.Params(":action")), err) + c.Errorf(err, "action %q", c.Params(":action")) return } @@ -290,14 +289,14 @@ func Download(c *context.Context) { archiveFormat = git.ArchiveTarGz default: log.Trace("Unknown format: %s", uri) - c.Error(404) + c.NotFound() return } refName = strings.TrimSuffix(uri, ext) if !com.IsDir(archivePath) { if err := os.MkdirAll(archivePath, os.ModePerm); err != nil { - c.Handle(500, "Download -> os.MkdirAll(archivePath)", err) + c.Error(err, "create archive directory") return } } @@ -311,13 +310,13 @@ func Download(c *context.Context) { if gitRepo.HasBranch(refName) { commit, err = gitRepo.BranchCommit(refName) if err != nil { - c.ServerError("get branch commit", err) + c.Error(err, "get branch commit") return } } else if gitRepo.HasTag(refName) { commit, err = gitRepo.TagCommit(refName) if err != nil { - c.ServerError("get tag commit", err) + c.Error(err, "get tag commit") return } } else if len(refName) >= 7 && len(refName) <= 40 { @@ -334,7 +333,7 @@ func Download(c *context.Context) { archivePath = path.Join(archivePath, tool.ShortSHA1(commit.ID.String())+ext) if !com.IsFile(archivePath) { if err := commit.CreateArchive(archiveFormat, archivePath); err != nil { - c.ServerError("creates archive", err) + c.Error(err, "creates archive") return } } diff --git a/internal/route/repo/setting.go b/internal/route/repo/setting.go index bf463f4a..1c4446d0 100644 --- a/internal/route/repo/setting.go +++ b/internal/route/repo/setting.go @@ -7,7 +7,6 @@ package repo import ( "fmt" "io/ioutil" - "os" "strings" "time" @@ -21,6 +20,7 @@ import ( "gogs.io/gogs/internal/db/errors" "gogs.io/gogs/internal/email" "gogs.io/gogs/internal/form" + "gogs.io/gogs/internal/osutil" "gogs.io/gogs/internal/tool" ) @@ -72,7 +72,7 @@ func SettingsPost(c *context.Context, f form.RepoSetting) { case db.IsErrNamePatternNotAllowed(err): c.RenderWithErr(c.Tr("repo.form.name_pattern_not_allowed", err.(db.ErrNamePatternNotAllowed).Pattern), SETTINGS_OPTIONS, &f) default: - c.ServerError("ChangeRepositoryName", err) + c.Error(err, "change repository name") } return } @@ -94,7 +94,7 @@ func SettingsPost(c *context.Context, f form.RepoSetting) { visibilityChanged := repo.IsPrivate != f.Private repo.IsPrivate = f.Private if err := db.UpdateRepository(repo, visibilityChanged); err != nil { - c.ServerError("UpdateRepository", err) + c.Error(err, "update repository") return } log.Trace("Repository basic settings updated: %s/%s", c.Repo.Owner.Name, repo.Name) @@ -119,12 +119,12 @@ func SettingsPost(c *context.Context, f form.RepoSetting) { c.Repo.Mirror.Interval = f.Interval c.Repo.Mirror.NextSync = time.Now().Add(time.Duration(f.Interval) * time.Hour) if err := db.UpdateMirror(c.Repo.Mirror); err != nil { - c.ServerError("UpdateMirror", err) + c.Error(err, "update mirror") return } } if err := c.Repo.Mirror.SaveAddress(f.MirrorAddress); err != nil { - c.ServerError("SaveAddress", err) + c.Error(err, "save address") return } @@ -157,7 +157,7 @@ func SettingsPost(c *context.Context, f form.RepoSetting) { repo.PullsAllowRebase = f.PullsAllowRebase if err := db.UpdateRepository(repo, false); err != nil { - c.ServerError("UpdateRepository", err) + c.Error(err, "update repository") return } log.Trace("Repository advanced settings updated: %s/%s", c.Repo.Owner.Name, repo.Name) @@ -189,10 +189,10 @@ func SettingsPost(c *context.Context, f form.RepoSetting) { repo.IsMirror = false if _, err := db.CleanUpMigrateInfo(repo); err != nil { - c.ServerError("CleanUpMigrateInfo", err) + c.Error(err, "clean up migrate info") return } else if err = db.DeleteMirrorByRepoID(c.Repo.Repository.ID); err != nil { - c.ServerError("DeleteMirrorByRepoID", err) + c.Error(err, "delete mirror by repository ID") return } log.Trace("Repository converted from mirror to regular: %s/%s", c.Repo.Owner.Name, repo.Name) @@ -219,7 +219,7 @@ func SettingsPost(c *context.Context, f form.RepoSetting) { newOwner := c.Query("new_owner_name") isExist, err := db.IsUserExist(0, newOwner) if err != nil { - c.ServerError("IsUserExist", err) + c.Error(err, "check if user exists") return } else if !isExist { c.RenderWithErr(c.Tr("form.enterred_invalid_owner_name"), SETTINGS_OPTIONS, nil) @@ -230,7 +230,7 @@ func SettingsPost(c *context.Context, f form.RepoSetting) { if db.IsErrRepoAlreadyExist(err) { c.RenderWithErr(c.Tr("repo.settings.new_owner_has_same_repo"), SETTINGS_OPTIONS, nil) } else { - c.ServerError("TransferOwnership", err) + c.Error(err, "transfer ownership") } return } @@ -256,7 +256,7 @@ func SettingsPost(c *context.Context, f form.RepoSetting) { } if err := db.DeleteRepository(c.Repo.Owner.ID, repo.ID); err != nil { - c.ServerError("DeleteRepository", err) + c.Error(err, "delete repository") return } log.Trace("Repository deleted: %s/%s", c.Repo.Owner.Name, repo.Name) @@ -286,7 +286,7 @@ func SettingsPost(c *context.Context, f form.RepoSetting) { repo.EnableWiki = false if err := db.UpdateRepository(repo, false); err != nil { - c.ServerError("UpdateRepository", err) + c.Error(err, "update repository") return } @@ -311,14 +311,14 @@ func SettingsAvatarPost(c *context.Context, f form.Avatar) { } else { c.Flash.Success(c.Tr("settings.update_avatar_success")) } - c.SubURLRedirect(c.Repo.RepoLink + "/settings") + c.RedirectSubpath(c.Repo.RepoLink + "/settings") } func SettingsDeleteAvatar(c *context.Context) { if err := c.Repo.Repository.DeleteAvatar(); err != nil { c.Flash.Error(fmt.Sprintf("Failed to delete avatar: %v", err)) } - c.SubURLRedirect(c.Repo.RepoLink + "/settings") + c.RedirectSubpath(c.Repo.RepoLink + "/settings") } // FIXME: limit upload size @@ -361,12 +361,12 @@ func SettingsCollaboration(c *context.Context) { users, err := c.Repo.Repository.GetCollaborators() if err != nil { - c.Handle(500, "GetCollaborators", err) + c.Error(err, "get collaborators") return } c.Data["Collaborators"] = users - c.HTML(200, SETTINGS_COLLABORATION) + c.Success(SETTINGS_COLLABORATION) } func SettingsCollaborationPost(c *context.Context) { @@ -378,11 +378,11 @@ func SettingsCollaborationPost(c *context.Context) { u, err := db.GetUserByName(name) if err != nil { - if errors.IsUserNotExist(err) { + if db.IsErrUserNotExist(err) { c.Flash.Error(c.Tr("form.user_not_exist")) c.Redirect(conf.Server.Subpath + c.Req.URL.Path) } else { - c.Handle(500, "GetUserByName", err) + c.Error(err, "get user by name") } return } @@ -395,7 +395,7 @@ func SettingsCollaborationPost(c *context.Context) { } if err = c.Repo.Repository.AddCollaborator(u); err != nil { - c.Handle(500, "AddCollaborator", err) + c.Error(err, "add collaborator") return } @@ -425,7 +425,7 @@ func DeleteCollaboration(c *context.Context) { c.Flash.Success(c.Tr("repo.settings.remove_collaborator_success")) } - c.JSON(200, map[string]interface{}{ + c.JSONSuccess( map[string]interface{}{ "redirect": c.Repo.RepoLink + "/settings/collaboration", }) } @@ -436,13 +436,13 @@ func SettingsBranches(c *context.Context) { if c.Repo.Repository.IsBare { c.Flash.Info(c.Tr("repo.settings.branches_bare"), true) - c.HTML(200, SETTINGS_BRANCHES) + c.Success(SETTINGS_BRANCHES) return } protectBranches, err := db.GetProtectBranchesByRepoID(c.Repo.Repository.ID) if err != nil { - c.Handle(500, "GetProtectBranchesByRepoID", err) + c.Error(err, "get protect branch by repository ID") return } @@ -455,7 +455,7 @@ func SettingsBranches(c *context.Context) { } c.Data["ProtectBranches"] = branches - c.HTML(200, SETTINGS_BRANCHES) + c.Success(SETTINGS_BRANCHES) } func UpdateDefaultBranch(c *context.Context) { @@ -473,7 +473,7 @@ func UpdateDefaultBranch(c *context.Context) { } if err := db.UpdateRepository(c.Repo.Repository, false); err != nil { - c.Handle(500, "UpdateRepository", err) + c.Error(err, "update repository") return } @@ -493,8 +493,8 @@ func SettingsProtectedBranch(c *context.Context) { protectBranch, err := db.GetProtectBranchOfRepoByName(c.Repo.Repository.ID, branch) if err != nil { - if !errors.IsErrBranchNotExist(err) { - c.Handle(500, "GetProtectBranchOfRepoByName", err) + if !db.IsErrBranchNotExist(err) { + c.Error(err, "get protect branch of repository by name") return } @@ -507,7 +507,7 @@ func SettingsProtectedBranch(c *context.Context) { if c.Repo.Owner.IsOrganization() { users, err := c.Repo.Repository.GetWriters() if err != nil { - c.Handle(500, "Repo.Repository.GetPushers", err) + c.Error(err, "get writers") return } c.Data["Users"] = users @@ -515,7 +515,7 @@ func SettingsProtectedBranch(c *context.Context) { teams, err := c.Repo.Owner.TeamsHaveAccessToRepo(c.Repo.Repository.ID, db.ACCESS_MODE_WRITE) if err != nil { - c.Handle(500, "Repo.Owner.TeamsHaveAccessToRepo", err) + c.Error(err, "get teams have access to the repository") return } c.Data["Teams"] = teams @@ -523,7 +523,7 @@ func SettingsProtectedBranch(c *context.Context) { } c.Data["Branch"] = protectBranch - c.HTML(200, SETTINGS_PROTECTED_BRANCH) + c.Success(SETTINGS_PROTECTED_BRANCH) } func SettingsProtectedBranchPost(c *context.Context, f form.ProtectBranch) { @@ -535,8 +535,8 @@ func SettingsProtectedBranchPost(c *context.Context, f form.ProtectBranch) { protectBranch, err := db.GetProtectBranchOfRepoByName(c.Repo.Repository.ID, branch) if err != nil { - if !errors.IsErrBranchNotExist(err) { - c.Handle(500, "GetProtectBranchOfRepoByName", err) + if !db.IsErrBranchNotExist(err) { + c.Error(err, "get protect branch of repository by name") return } @@ -556,7 +556,7 @@ func SettingsProtectedBranchPost(c *context.Context, f form.ProtectBranch) { err = db.UpdateProtectBranch(protectBranch) } if err != nil { - c.Handle(500, "UpdateOrgProtectBranch/UpdateProtectBranch", err) + c.Error(err, "update protect branch") return } @@ -570,12 +570,12 @@ func SettingsGitHooks(c *context.Context) { hooks, err := c.Repo.GitRepo.Hooks("custom_hooks") if err != nil { - c.Handle(500, "Hooks", err) + c.Error(err, "get hooks") return } c.Data["Hooks"] = hooks - c.HTML(200, SETTINGS_GITHOOKS) + c.Success(SETTINGS_GITHOOKS) } func SettingsGitHooksEdit(c *context.Context) { @@ -586,30 +586,22 @@ func SettingsGitHooksEdit(c *context.Context) { name := c.Params(":name") hook, err := c.Repo.GitRepo.Hook("custom_hooks", git.HookName(name)) if err != nil { - if err == os.ErrNotExist { - c.Handle(404, "GetHook", err) - } else { - c.Handle(500, "GetHook", err) - } + c.NotFoundOrError(osutil.NewError(err), "get hook") return } c.Data["Hook"] = hook - c.HTML(200, SETTINGS_GITHOOK_EDIT) + c.Success(SETTINGS_GITHOOK_EDIT) } func SettingsGitHooksEditPost(c *context.Context) { name := c.Params(":name") hook, err := c.Repo.GitRepo.Hook("custom_hooks", git.HookName(name)) if err != nil { - if err == os.ErrNotExist { - c.Handle(404, "GetHook", err) - } else { - c.Handle(500, "GetHook", err) - } + c.NotFoundOrError(osutil.NewError(err), "get hook") return } if err = hook.Update(c.Query("content")); err != nil { - c.Handle(500, "hook.Update", err) + c.Error(err, "update hook") return } c.Redirect(c.Data["Link"].(string)) @@ -621,12 +613,12 @@ func SettingsDeployKeys(c *context.Context) { keys, err := db.ListDeployKeys(c.Repo.Repository.ID) if err != nil { - c.Handle(500, "ListDeployKeys", err) + c.Error(err, "list deploy keys") return } c.Data["Deploykeys"] = keys - c.HTML(200, SETTINGS_DEPLOY_KEYS) + c.Success(SETTINGS_DEPLOY_KEYS) } func SettingsDeployKeysPost(c *context.Context, f form.AddSSHKey) { @@ -635,13 +627,13 @@ func SettingsDeployKeysPost(c *context.Context, f form.AddSSHKey) { keys, err := db.ListDeployKeys(c.Repo.Repository.ID) if err != nil { - c.Handle(500, "ListDeployKeys", err) + c.Error(err, "list deploy keys") return } c.Data["Deploykeys"] = keys if c.HasError() { - c.HTML(200, SETTINGS_DEPLOY_KEYS) + c.Success(SETTINGS_DEPLOY_KEYS) return } @@ -669,7 +661,7 @@ func SettingsDeployKeysPost(c *context.Context, f form.AddSSHKey) { c.Data["Err_Title"] = true c.RenderWithErr(c.Tr("repo.settings.key_name_used"), SETTINGS_DEPLOY_KEYS, &f) default: - c.Handle(500, "AddDeployKey", err) + c.Error(err, "add deploy key") } return } @@ -686,7 +678,7 @@ func DeleteDeployKey(c *context.Context) { c.Flash.Success(c.Tr("repo.settings.deploy_key_deletion_success")) } - c.JSON(200, map[string]interface{}{ + c.JSONSuccess( map[string]interface{}{ "redirect": c.Repo.RepoLink + "/settings/keys", }) } diff --git a/internal/route/repo/view.go b/internal/route/repo/view.go index b07dafe2..378dc976 100644 --- a/internal/route/repo/view.go +++ b/internal/route/repo/view.go @@ -37,13 +37,13 @@ const ( func renderDirectory(c *context.Context, treeLink string) { tree, err := c.Repo.Commit.Subtree(c.Repo.TreePath) if err != nil { - c.NotFoundOrServerError("get subtree", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "get subtree") return } entries, err := tree.Entries() if err != nil { - c.ServerError("list entries", err) + c.Error(err, "list entries") return } entries.Sort() @@ -54,7 +54,7 @@ func renderDirectory(c *context.Context, treeLink string) { Timeout: 5 * time.Minute, }) if err != nil { - c.ServerError("get commits info", err) + c.Error(err, "get commits info") return } @@ -76,7 +76,7 @@ func renderDirectory(c *context.Context, treeLink string) { p, err := readmeFile.Bytes() if err != nil { - c.ServerError("readmeFile.Data", err) + c.Error(err, "read file") return } @@ -107,7 +107,7 @@ func renderDirectory(c *context.Context, treeLink string) { if len(c.Repo.TreePath) > 0 { latestCommit, err = c.Repo.Commit.CommitByPath(git.CommitByRevisionOptions{Path: c.Repo.TreePath}) if err != nil { - c.ServerError("get commit by path", err) + c.Error(err, "get commit by path") return } } @@ -126,7 +126,7 @@ func renderFile(c *context.Context, entry *git.TreeEntry, treeLink, rawLink stri blob := entry.Blob() p, err := blob.Bytes() if err != nil { - c.Handle(500, "Data", err) + c.Error(err, "read blob") return } @@ -232,7 +232,7 @@ func Home(c *context.Context) { c.Data["PageIsViewFiles"] = true if c.Repo.Repository.IsBare { - c.HTML(200, BARE) + c.Success(BARE) return } @@ -260,7 +260,7 @@ func Home(c *context.Context) { var err error c.Repo.CommitsCount, err = c.Repo.Commit.CommitsCount() if err != nil { - c.Handle(500, "CommitsCount", err) + c.Error(err, "count commits") return } c.Data["CommitsCount"] = c.Repo.CommitsCount @@ -270,7 +270,7 @@ func Home(c *context.Context) { // Get current entry user currently looking at. entry, err := c.Repo.Commit.TreeEntry(c.Repo.TreePath) if err != nil { - c.NotFoundOrServerError("get tree entry", gitutil.IsErrRevisionNotExist, err) + c.NotFoundOrError(gitutil.NewError(err), "get tree entry") return } @@ -306,7 +306,7 @@ func Home(c *context.Context) { c.Data["TreeLink"] = treeLink c.Data["TreeNames"] = treeNames c.Data["BranchLink"] = branchLink - c.HTML(200, HOME) + c.Success(HOME) } func RenderUserCards(c *context.Context, total int, getter func(page int) ([]*db.User, error), tpl string) { @@ -319,12 +319,12 @@ func RenderUserCards(c *context.Context, total int, getter func(page int) ([]*db items, err := getter(pager.Current()) if err != nil { - c.Handle(500, "getter", err) + c.Error(err, "getter") return } c.Data["Cards"] = items - c.HTML(200, tpl) + c.Success(tpl) } func Watchers(c *context.Context) { @@ -346,17 +346,17 @@ func Forks(c *context.Context) { forks, err := c.Repo.Repository.GetForks() if err != nil { - c.Handle(500, "GetForks", err) + c.Error(err, "get forks") return } for _, fork := range forks { if err = fork.GetOwner(); err != nil { - c.Handle(500, "GetOwner", err) + c.Error(err, "get owner") return } } c.Data["Forks"] = forks - c.HTML(200, FORKS) + c.Success(FORKS) } diff --git a/internal/route/repo/webhook.go b/internal/route/repo/webhook.go index 705fd2ad..32c2069b 100644 --- a/internal/route/repo/webhook.go +++ b/internal/route/repo/webhook.go @@ -6,6 +6,7 @@ package repo import ( "fmt" + "net/http" "strings" jsoniter "github.com/json-iterator/go" @@ -36,12 +37,12 @@ func Webhooks(c *context.Context) { ws, err := db.GetWebhooksByRepoID(c.Repo.Repository.ID) if err != nil { - c.Handle(500, "GetWebhooksByRepoID", err) + c.Error(err, "get webhooks by repository ID") return } c.Data["Webhooks"] = ws - c.HTML(200, WEBHOOKS) + c.Success(WEBHOOKS) } type OrgRepoCtx struct { @@ -77,7 +78,7 @@ func getOrgRepoCtx(c *context.Context) (*OrgRepoCtx, error) { func checkHookType(c *context.Context) string { hookType := strings.ToLower(c.Params(":type")) if !com.IsSliceContainsStr(conf.Webhook.Types, hookType) { - c.Handle(404, "checkHookType", nil) + c.NotFound() return "" } return hookType @@ -91,7 +92,7 @@ func WebhooksNew(c *context.Context) { orCtx, err := getOrgRepoCtx(c) if err != nil { - c.Handle(500, "getOrgRepoCtx", err) + c.Error(err, "get organization repository context") return } @@ -101,7 +102,7 @@ func WebhooksNew(c *context.Context) { } c.Data["BaseLink"] = orCtx.Link - c.HTML(200, orCtx.NewTemplate) + c.Success(orCtx.NewTemplate) } func ParseHookEvent(f form.Webhook) *db.HookEvent { @@ -131,13 +132,13 @@ func WebHooksNewPost(c *context.Context, f form.NewWebhook) { orCtx, err := getOrgRepoCtx(c) if err != nil { - c.Handle(500, "getOrgRepoCtx", err) + c.Error(err, "get organization repository context") return } c.Data["BaseLink"] = orCtx.Link if c.HasError() { - c.HTML(200, orCtx.NewTemplate) + c.Success(orCtx.NewTemplate) return } @@ -157,10 +158,10 @@ func WebHooksNewPost(c *context.Context, f form.NewWebhook) { OrgID: orCtx.OrgID, } if err := w.UpdateEvent(); err != nil { - c.Handle(500, "UpdateEvent", err) + c.Error(err, "update event") return } else if err := db.CreateWebhook(w); err != nil { - c.Handle(500, "CreateWebhook", err) + c.Error(err, "create webhook") return } @@ -176,12 +177,12 @@ func SlackHooksNewPost(c *context.Context, f form.NewSlackHook) { orCtx, err := getOrgRepoCtx(c) if err != nil { - c.Handle(500, "getOrgRepoCtx", err) + c.Error(err, "get organization repository context") return } if c.HasError() { - c.HTML(200, orCtx.NewTemplate) + c.Success(orCtx.NewTemplate) return } @@ -192,7 +193,7 @@ func SlackHooksNewPost(c *context.Context, f form.NewSlackHook) { Color: f.Color, }) if err != nil { - c.Handle(500, "Marshal", err) + c.Error(err, "marshal JSON") return } @@ -207,10 +208,10 @@ func SlackHooksNewPost(c *context.Context, f form.NewSlackHook) { OrgID: orCtx.OrgID, } if err := w.UpdateEvent(); err != nil { - c.Handle(500, "UpdateEvent", err) + c.Error(err, "update event") return } else if err := db.CreateWebhook(w); err != nil { - c.Handle(500, "CreateWebhook", err) + c.Error(err, "create webhook") return } @@ -227,12 +228,12 @@ func DiscordHooksNewPost(c *context.Context, f form.NewDiscordHook) { orCtx, err := getOrgRepoCtx(c) if err != nil { - c.Handle(500, "getOrgRepoCtx", err) + c.Error(err, "get organization repository context") return } if c.HasError() { - c.HTML(200, orCtx.NewTemplate) + c.Success(orCtx.NewTemplate) return } @@ -242,7 +243,7 @@ func DiscordHooksNewPost(c *context.Context, f form.NewDiscordHook) { Color: f.Color, }) if err != nil { - c.Handle(500, "Marshal", err) + c.Error(err, "marshal JSON") return } @@ -257,10 +258,10 @@ func DiscordHooksNewPost(c *context.Context, f form.NewDiscordHook) { OrgID: orCtx.OrgID, } if err := w.UpdateEvent(); err != nil { - c.Handle(500, "UpdateEvent", err) + c.Error(err, "update event") return } else if err := db.CreateWebhook(w); err != nil { - c.Handle(500, "CreateWebhook", err) + c.Error(err, "create webhook") return } @@ -276,12 +277,12 @@ func DingtalkHooksNewPost(c *context.Context, f form.NewDingtalkHook) { orCtx, err := getOrgRepoCtx(c) if err != nil { - c.Handle(500, "getOrgRepoCtx", err) + c.Error(err, "get organization repository context") return } if c.HasError() { - c.HTML(200, orCtx.NewTemplate) + c.Success(orCtx.NewTemplate) return } @@ -295,10 +296,10 @@ func DingtalkHooksNewPost(c *context.Context, f form.NewDingtalkHook) { OrgID: orCtx.OrgID, } if err := w.UpdateEvent(); err != nil { - c.Handle(500, "UpdateEvent", err) + c.Error(err, "update event") return } else if err := db.CreateWebhook(w); err != nil { - c.Handle(500, "CreateWebhook", err) + c.Error(err, "create webhook") return } @@ -311,7 +312,7 @@ func checkWebhook(c *context.Context) (*OrgRepoCtx, *db.Webhook) { orCtx, err := getOrgRepoCtx(c) if err != nil { - c.Handle(500, "getOrgRepoCtx", err) + c.Error(err, "get organization repository context") return nil, nil } c.Data["BaseLink"] = orCtx.Link @@ -323,7 +324,7 @@ func checkWebhook(c *context.Context) (*OrgRepoCtx, *db.Webhook) { w, err = db.GetWebhookByOrgID(c.Org.Organization.ID, c.ParamsInt64(":id")) } if err != nil { - c.NotFoundOrServerError("GetWebhookOfRepoByID/GetWebhookByOrgID", errors.IsWebhookNotExist, err) + c.NotFoundOrError(err, "get webhook") return nil, nil } @@ -342,7 +343,8 @@ func checkWebhook(c *context.Context) (*OrgRepoCtx, *db.Webhook) { c.Data["History"], err = w.History(1) if err != nil { - c.Handle(500, "History", err) + c.Error(err, "get history") + return nil, nil } return orCtx, w } @@ -358,7 +360,7 @@ func WebHooksEdit(c *context.Context) { } c.Data["Webhook"] = w - c.HTML(200, orCtx.NewTemplate) + c.Success(orCtx.NewTemplate) } func WebHooksEditPost(c *context.Context, f form.NewWebhook) { @@ -373,7 +375,7 @@ func WebHooksEditPost(c *context.Context, f form.NewWebhook) { c.Data["Webhook"] = w if c.HasError() { - c.HTML(200, orCtx.NewTemplate) + c.Success(orCtx.NewTemplate) return } @@ -388,10 +390,10 @@ func WebHooksEditPost(c *context.Context, f form.NewWebhook) { w.HookEvent = ParseHookEvent(f.Webhook) w.IsActive = f.Active if err := w.UpdateEvent(); err != nil { - c.Handle(500, "UpdateEvent", err) + c.Error(err, "update event") return } else if err := db.UpdateWebhook(w); err != nil { - c.Handle(500, "WebHooksEditPost", err) + c.Error(err, "update webhook") return } @@ -411,7 +413,7 @@ func SlackHooksEditPost(c *context.Context, f form.NewSlackHook) { c.Data["Webhook"] = w if c.HasError() { - c.HTML(200, orCtx.NewTemplate) + c.Success(orCtx.NewTemplate) return } @@ -422,7 +424,7 @@ func SlackHooksEditPost(c *context.Context, f form.NewSlackHook) { Color: f.Color, }) if err != nil { - c.Handle(500, "Marshal", err) + c.Error(err, "marshal JSON") return } @@ -431,10 +433,10 @@ func SlackHooksEditPost(c *context.Context, f form.NewSlackHook) { w.HookEvent = ParseHookEvent(f.Webhook) w.IsActive = f.Active if err := w.UpdateEvent(); err != nil { - c.Handle(500, "UpdateEvent", err) + c.Error(err, "update event") return } else if err := db.UpdateWebhook(w); err != nil { - c.Handle(500, "UpdateWebhook", err) + c.Error(err, "update webhook") return } @@ -455,7 +457,7 @@ func DiscordHooksEditPost(c *context.Context, f form.NewDiscordHook) { c.Data["Webhook"] = w if c.HasError() { - c.HTML(200, orCtx.NewTemplate) + c.Success(orCtx.NewTemplate) return } @@ -465,7 +467,7 @@ func DiscordHooksEditPost(c *context.Context, f form.NewDiscordHook) { Color: f.Color, }) if err != nil { - c.Handle(500, "Marshal", err) + c.Error(err, "marshal JSON") return } @@ -474,10 +476,10 @@ func DiscordHooksEditPost(c *context.Context, f form.NewDiscordHook) { w.HookEvent = ParseHookEvent(f.Webhook) w.IsActive = f.Active if err := w.UpdateEvent(); err != nil { - c.Handle(500, "UpdateEvent", err) + c.Error(err, "update event") return } else if err := db.UpdateWebhook(w); err != nil { - c.Handle(500, "UpdateWebhook", err) + c.Error(err, "update webhook") return } @@ -497,7 +499,7 @@ func DingtalkHooksEditPost(c *context.Context, f form.NewDingtalkHook) { c.Data["Webhook"] = w if c.HasError() { - c.HTML(200, orCtx.NewTemplate) + c.Success(orCtx.NewTemplate) return } @@ -505,10 +507,10 @@ func DingtalkHooksEditPost(c *context.Context, f form.NewDingtalkHook) { w.HookEvent = ParseHookEvent(f.Webhook) w.IsActive = f.Active if err := w.UpdateEvent(); err != nil { - c.Handle(500, "UpdateEvent", err) + c.Error(err, "update event") return } else if err := db.UpdateWebhook(w); err != nil { - c.Handle(500, "UpdateWebhook", err) + c.Error(err, "update webhook") return } @@ -550,22 +552,22 @@ func TestWebhook(c *context.Context) { author, err := db.GetUserByEmail(c.Repo.Commit.Author.Email) if err == nil { authorUsername = author.Name - } else if !errors.IsUserNotExist(err) { - c.Handle(500, "GetUserByEmail.(author)", err) + } else if !db.IsErrUserNotExist(err) { + c.Error(err, "get user by email") return } user, err := db.GetUserByEmail(c.Repo.Commit.Committer.Email) if err == nil { committerUsername = user.Name - } else if !errors.IsUserNotExist(err) { - c.Handle(500, "GetUserByEmail.(committer)", err) + } else if !db.IsErrUserNotExist(err) { + c.Error(err, "get user by email") return } nameStatus, err = c.Repo.Commit.ShowNameStatus() if err != nil { - c.Handle(500, "FileStatus", err) + c.Error(err, "get changed files") return } } @@ -600,34 +602,36 @@ func TestWebhook(c *context.Context) { Sender: apiUser, } if err := db.TestWebhook(c.Repo.Repository, db.HOOK_EVENT_PUSH, p, c.ParamsInt64("id")); err != nil { - c.Handle(500, "TestWebhook", err) - } else { - c.Flash.Info(c.Tr("repo.settings.webhook.test_delivery_success")) - c.Status(200) + c.Error(err, "test webhook") + return } + + c.Flash.Info(c.Tr("repo.settings.webhook.test_delivery_success")) + c.Status(http.StatusOK) } func RedeliveryWebhook(c *context.Context) { webhook, err := db.GetWebhookOfRepoByID(c.Repo.Repository.ID, c.ParamsInt64(":id")) if err != nil { - c.NotFoundOrServerError("GetWebhookOfRepoByID/GetWebhookByOrgID", errors.IsWebhookNotExist, err) + c.NotFoundOrError(err, "get webhook") return } hookTask, err := db.GetHookTaskOfWebhookByUUID(webhook.ID, c.Query("uuid")) if err != nil { - c.NotFoundOrServerError("GetHookTaskOfWebhookByUUID/GetWebhookByOrgID", errors.IsHookTaskNotExist, err) + c.NotFoundOrError(err, "get hook task by UUID") return } hookTask.IsDelivered = false if err = db.UpdateHookTask(hookTask); err != nil { - c.Handle(500, "UpdateHookTask", err) - } else { - go db.HookQueue.Add(c.Repo.Repository.ID) - c.Flash.Info(c.Tr("repo.settings.webhook.redelivery_success", hookTask.UUID)) - c.Status(200) + c.Error(err, "update hook task") + return } + + go db.HookQueue.Add(c.Repo.Repository.ID) + c.Flash.Info(c.Tr("repo.settings.webhook.redelivery_success", hookTask.UUID)) + c.Status(http.StatusOK) } func DeleteWebhook(c *context.Context) { @@ -637,7 +641,7 @@ func DeleteWebhook(c *context.Context) { c.Flash.Success(c.Tr("repo.settings.webhook_deletion_success")) } - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "redirect": c.Repo.RepoLink + "/settings/hooks", }) } diff --git a/internal/route/repo/wiki.go b/internal/route/repo/wiki.go index 91bc3c91..b9f754ee 100644 --- a/internal/route/repo/wiki.go +++ b/internal/route/repo/wiki.go @@ -26,7 +26,7 @@ const ( func MustEnableWiki(c *context.Context) { if !c.Repo.Repository.EnableWiki { - c.Handle(404, "MustEnableWiki", nil) + c.NotFound() return } @@ -45,12 +45,12 @@ type PageMeta struct { func renderWikiPage(c *context.Context, isViewPage bool) (*git.Repository, string) { wikiRepo, err := git.Open(c.Repo.Repository.WikiPath()) if err != nil { - c.ServerError("open repository", err) + c.Error(err, "open repository") return nil, "" } commit, err := wikiRepo.BranchCommit("master") if err != nil { - c.ServerError("get branch commit", err) + c.Error(err, "get branch commit") return nil, "" } @@ -58,7 +58,7 @@ func renderWikiPage(c *context.Context, isViewPage bool) (*git.Repository, strin if isViewPage { entries, err := commit.Entries() if err != nil { - c.ServerError("list entries", err) + c.Error(err, "list entries") return nil, "" } pages := make([]PageMeta, 0, len(entries)) @@ -91,13 +91,13 @@ func renderWikiPage(c *context.Context, isViewPage bool) (*git.Repository, strin if gitutil.IsErrRevisionNotExist(err) { c.Redirect(c.Repo.RepoLink + "/wiki/_pages") } else { - c.ServerError("GetBlobByPath", err) + c.Error(err, "get blob") } return nil, "" } p, err := blob.Bytes() if err != nil { - c.ServerError("Data", err) + c.Error(err, "read blob") return nil, "" } if isViewPage { @@ -114,7 +114,7 @@ func Wiki(c *context.Context) { if !c.Repo.Repository.HasWiki() { c.Data["Title"] = c.Tr("repo.wiki") - c.HTML(200, WIKI_START) + c.Success(WIKI_START) return } @@ -126,12 +126,12 @@ func Wiki(c *context.Context) { // Get last change information. commits, err := wikiRepo.Log(git.RefsHeads+"master", git.LogOptions{Path: pageName + ".md"}) if err != nil { - c.ServerError("get commits by path", err) + c.Error(err, "get commits by path") return } c.Data["Author"] = commits[0].Author - c.HTML(200, WIKI_VIEW) + c.Success(WIKI_VIEW) } func WikiPages(c *context.Context) { @@ -145,18 +145,18 @@ func WikiPages(c *context.Context) { wikiRepo, err := git.Open(c.Repo.Repository.WikiPath()) if err != nil { - c.ServerError("open repository", err) + c.Error(err, "open repository") return } commit, err := wikiRepo.BranchCommit("master") if err != nil { - c.ServerError("get branch commit", err) + c.Error(err, "get branch commit") return } entries, err := commit.Entries() if err != nil { - c.ServerError("list entries", err) + c.Error(err, "list entries") return } pages := make([]PageMeta, 0, len(entries)) @@ -164,7 +164,7 @@ func WikiPages(c *context.Context) { if entries[i].Type() == git.ObjectBlob && strings.HasSuffix(entries[i].Name(), ".md") { commits, err := wikiRepo.Log(git.RefsHeads+"master", git.LogOptions{Path: entries[i].Name()}) if err != nil { - c.ServerError("get commits by path", err) + c.Error(err, "get commits by path") return } name := strings.TrimSuffix(entries[i].Name(), ".md") @@ -177,7 +177,7 @@ func WikiPages(c *context.Context) { } c.Data["Pages"] = pages - c.HTML(200, WIKI_PAGES) + c.Success(WIKI_PAGES) } func NewWiki(c *context.Context) { @@ -189,7 +189,7 @@ func NewWiki(c *context.Context) { c.Data["title"] = "Home" } - c.HTML(200, WIKI_NEW) + c.Success(WIKI_NEW) } func NewWikiPost(c *context.Context, f form.NewWiki) { @@ -198,7 +198,7 @@ func NewWikiPost(c *context.Context, f form.NewWiki) { c.Data["RequireSimpleMDE"] = true if c.HasError() { - c.HTML(200, WIKI_NEW) + c.Success(WIKI_NEW) return } @@ -207,7 +207,7 @@ func NewWikiPost(c *context.Context, f form.NewWiki) { c.Data["Err_Title"] = true c.RenderWithErr(c.Tr("repo.wiki.page_already_exists"), WIKI_NEW, &f) } else { - c.ServerError("AddWikiPage", err) + c.Error(err, "add wiki page") } return } @@ -230,7 +230,7 @@ func EditWiki(c *context.Context) { return } - c.HTML(200, WIKI_NEW) + c.Success(WIKI_NEW) } func EditWikiPost(c *context.Context, f form.NewWiki) { @@ -239,12 +239,12 @@ func EditWikiPost(c *context.Context, f form.NewWiki) { c.Data["RequireSimpleMDE"] = true if c.HasError() { - c.HTML(200, WIKI_NEW) + c.Success(WIKI_NEW) return } if err := c.Repo.Repository.EditWikiPage(c.User, f.OldTitle, f.Title, f.Content, f.Message); err != nil { - c.ServerError("EditWikiPage", err) + c.Error(err, "edit wiki page") return } @@ -259,11 +259,11 @@ func DeleteWikiPagePost(c *context.Context) { pageName := db.ToWikiPageName(pageURL) if err := c.Repo.Repository.DeleteWikiPage(c.User, pageName); err != nil { - c.ServerError("DeleteWikiPage", err) + c.Error(err, "delete wiki page") return } - c.JSON(200, map[string]interface{}{ + c.JSONSuccess(map[string]interface{}{ "redirect": c.Repo.RepoLink + "/wiki/", }) } diff --git a/internal/route/user/auth.go b/internal/route/user/auth.go index 88b0d1e8..5fef81c3 100644 --- a/internal/route/user/auth.go +++ b/internal/route/user/auth.go @@ -53,8 +53,8 @@ func AutoLogin(c *context.Context) (bool, error) { u, err := db.GetUserByName(uname) if err != nil { - if !errors.IsUserNotExist(err) { - return false, fmt.Errorf("GetUserByName: %v", err) + if !db.IsErrUserNotExist(err) { + return false, fmt.Errorf("get user by name: %v", err) } return false, nil } @@ -79,7 +79,7 @@ func Login(c *context.Context) { // Check auto-login isSucceed, err := AutoLogin(c) if err != nil { - c.ServerError("AutoLogin", err) + c.Error(err, "auto login") return } @@ -94,7 +94,7 @@ func Login(c *context.Context) { if tool.IsSameSiteURLPath(redirectTo) { c.Redirect(redirectTo) } else { - c.SubURLRedirect("/") + c.RedirectSubpath("/") } c.SetCookie("redirect_to", "", -1, conf.Server.Subpath) return @@ -103,7 +103,7 @@ func Login(c *context.Context) { // Display normal login page loginSources, err := db.ActivatedLoginSources() if err != nil { - c.ServerError("ActivatedLoginSources", err) + c.Error(err, "list activated login sources") return } c.Data["LoginSources"] = loginSources @@ -142,7 +142,7 @@ func afterLogin(c *context.Context, u *db.User, remember bool) { return } - c.SubURLRedirect("/") + c.RedirectSubpath("/") } func LoginPost(c *context.Context, f form.SignIn) { @@ -150,7 +150,7 @@ func LoginPost(c *context.Context, f form.SignIn) { loginSources, err := db.ActivatedLoginSources() if err != nil { - c.ServerError("ActivatedLoginSources", err) + c.Error(err, "list activated login sources") return } c.Data["LoginSources"] = loginSources @@ -163,7 +163,7 @@ func LoginPost(c *context.Context, f form.SignIn) { u, err := db.UserLogin(f.UserName, f.Password, f.LoginSource) if err != nil { switch err.(type) { - case errors.UserNotExist: + case db.ErrUserNotExist: c.FormErr("UserName", "Password") c.RenderWithErr(c.Tr("form.username_password_incorrect"), LOGIN, &f) case errors.LoginSourceMismatch: @@ -171,7 +171,7 @@ func LoginPost(c *context.Context, f form.SignIn) { c.RenderWithErr(c.Tr("form.auth_source_mismatch"), LOGIN, &f) default: - c.ServerError("UserLogin", err) + c.Error(err, "authenticate user") } for i := range loginSources { if loginSources[i].IsDefault { @@ -189,7 +189,7 @@ func LoginPost(c *context.Context, f form.SignIn) { c.Session.Set("twoFactorRemember", f.Remember) c.Session.Set("twoFactorUserID", u.ID) - c.SubURLRedirect("/user/login/two_factor") + c.RedirectSubpath("/user/login/two_factor") } func LoginTwoFactor(c *context.Context) { @@ -211,31 +211,31 @@ func LoginTwoFactorPost(c *context.Context) { t, err := db.GetTwoFactorByUserID(userID) if err != nil { - c.ServerError("GetTwoFactorByUserID", err) + c.Error(err, "get two factor by user ID") return } passcode := c.Query("passcode") valid, err := t.ValidateTOTP(passcode) if err != nil { - c.ServerError("ValidateTOTP", err) + c.Error(err, "validate TOTP") return } else if !valid { c.Flash.Error(c.Tr("settings.two_factor_invalid_passcode")) - c.SubURLRedirect("/user/login/two_factor") + c.RedirectSubpath("/user/login/two_factor") return } u, err := db.GetUserByID(userID) if err != nil { - c.ServerError("GetUserByID", err) + c.Error(err, "get user by ID") return } // Prevent same passcode from being reused if c.Cache.IsExist(u.TwoFactorCacheKey(passcode)) { c.Flash.Error(c.Tr("settings.two_factor_reused_passcode")) - c.SubURLRedirect("/user/login/two_factor") + c.RedirectSubpath("/user/login/two_factor") return } if err = c.Cache.Put(u.TwoFactorCacheKey(passcode), 1, 60); err != nil { @@ -265,16 +265,16 @@ func LoginTwoFactorRecoveryCodePost(c *context.Context) { if err := db.UseRecoveryCode(userID, c.Query("recovery_code")); err != nil { if errors.IsTwoFactorRecoveryCodeNotFound(err) { c.Flash.Error(c.Tr("auth.login_two_factor_invalid_recovery_code")) - c.SubURLRedirect("/user/login/two_factor_recovery_code") + c.RedirectSubpath("/user/login/two_factor_recovery_code") } else { - c.ServerError("UseRecoveryCode", err) + c.Error(err, "use recovery code") } return } u, err := db.GetUserByID(userID) if err != nil { - c.ServerError("GetUserByID", err) + c.Error(err, "get user by ID") return } afterLogin(c, u, c.Session.Get("twoFactorRemember").(bool)) @@ -286,7 +286,7 @@ func SignOut(c *context.Context) { c.SetCookie(conf.Security.CookieUsername, "", -1, conf.Server.Subpath) c.SetCookie(conf.Security.CookieRememberName, "", -1, conf.Server.Subpath) c.SetCookie(conf.Session.CSRFCookieName, "", -1, conf.Server.Subpath) - c.SubURLRedirect("/") + c.RedirectSubpath("/") } func SignUp(c *context.Context) { @@ -351,7 +351,7 @@ func SignUpPost(c *context.Context, cpt *captcha.Captcha, f form.Register) { c.FormErr("UserName") c.RenderWithErr(c.Tr("user.form.name_pattern_not_allowed", err.(db.ErrNamePatternNotAllowed).Pattern), SIGNUP, &f) default: - c.ServerError("CreateUser", err) + c.Error(err, "create user") } return } @@ -362,7 +362,7 @@ func SignUpPost(c *context.Context, cpt *captcha.Captcha, f form.Register) { u.IsAdmin = true u.IsActive = true if err := db.UpdateUser(u); err != nil { - c.ServerError("UpdateUser", err) + c.Error(err, "update user") return } } @@ -381,7 +381,7 @@ func SignUpPost(c *context.Context, cpt *captcha.Captcha, f form.Register) { return } - c.SubURLRedirect("/user/login") + c.RedirectSubpath("/user/login") } func Activate(c *context.Context) { @@ -416,11 +416,11 @@ func Activate(c *context.Context) { user.IsActive = true var err error if user.Rands, err = db.GetUserSalt(); err != nil { - c.ServerError("GetUserSalt", err) + c.Error(err, "get user salt") return } if err := db.UpdateUser(user); err != nil { - c.ServerError("UpdateUser", err) + c.Error(err, "update user") return } @@ -428,7 +428,7 @@ func Activate(c *context.Context) { c.Session.Set("uid", user.ID) c.Session.Set("uname", user.Name) - c.SubURLRedirect("/") + c.RedirectSubpath("/") return } @@ -443,14 +443,14 @@ func ActivateEmail(c *context.Context) { // Verify code. if email := db.VerifyActiveEmailCode(code, emailAddr); email != nil { if err := email.Activate(); err != nil { - c.ServerError("ActivateEmail", err) + c.Error(err, "activate email") } log.Trace("Email activated: %s", email.Email) c.Flash.Success(c.Tr("settings.add_email_success")) } - c.SubURLRedirect("/user/settings/email") + c.RedirectSubpath("/user/settings/email") } func ForgotPasswd(c *context.Context) { @@ -480,14 +480,14 @@ func ForgotPasswdPost(c *context.Context) { u, err := db.GetUserByEmail(emailAddr) if err != nil { - if errors.IsUserNotExist(err) { + if db.IsErrUserNotExist(err) { c.Data["Hours"] = conf.Auth.ActivateCodeLives / 60 c.Data["IsResetSent"] = true c.Success(FORGOT_PASSWORD) return - } else { - c.ServerError("GetUserByEmail", err) } + + c.Error(err, "get user by email") return } @@ -549,21 +549,21 @@ func ResetPasswdPost(c *context.Context) { u.Passwd = passwd var err error if u.Rands, err = db.GetUserSalt(); err != nil { - c.ServerError("GetUserSalt", err) + c.Error(err, "get user salt") return } if u.Salt, err = db.GetUserSalt(); err != nil { - c.ServerError("GetUserSalt", err) + c.Error(err, "get user salt") return } u.EncodePasswd() if err := db.UpdateUser(u); err != nil { - c.ServerError("UpdateUser", err) + c.Error(err, "update user") return } log.Trace("User password reset: %s", u.Name) - c.SubURLRedirect("/user/login") + c.RedirectSubpath("/user/login") return } diff --git a/internal/route/user/home.go b/internal/route/user/home.go index d2d23fba..5ba9bb17 100644 --- a/internal/route/user/home.go +++ b/internal/route/user/home.go @@ -7,6 +7,7 @@ package user import ( "bytes" "fmt" + "net/http" "github.com/unknwon/com" "github.com/unknwon/paginater" @@ -14,7 +15,6 @@ import ( "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/db/errors" ) const ( @@ -33,7 +33,7 @@ func getDashboardContextUser(c *context.Context) *db.User { // Organization. org, err := db.GetUserByName(orgName) if err != nil { - c.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err) + c.NotFoundOrError(err, "get user by name") return nil } ctxUser = org @@ -41,7 +41,7 @@ func getDashboardContextUser(c *context.Context) *db.User { c.Data["ContextUser"] = ctxUser if err := c.User.GetOrganizations(true); err != nil { - c.Handle(500, "GetOrganizations", err) + c.Error(err, "get organizations") return nil } c.Data["Orgs"] = c.User.Orgs @@ -55,7 +55,7 @@ func getDashboardContextUser(c *context.Context) *db.User { func retrieveFeeds(c *context.Context, ctxUser *db.User, userID int64, isProfile bool) { actions, err := db.GetFeeds(ctxUser, userID, c.QueryInt64("after_id"), isProfile) if err != nil { - c.Handle(500, "GetFeeds", err) + c.Error(err, "get feeds") return } @@ -68,10 +68,10 @@ func retrieveFeeds(c *context.Context, ctxUser *db.User, userID int64, isProfile if !ok { u, err := db.GetUserByName(act.ActUserName) if err != nil { - if errors.IsUserNotExist(err) { + if db.IsErrUserNotExist(err) { continue } - c.Handle(500, "GetUserByName", err) + c.Error(err, "get user by name") return } unameAvatars[act.ActUserName] = u.RelAvatarLink() @@ -100,7 +100,7 @@ func Dashboard(c *context.Context) { } if c.Req.Header.Get("X-AJAX") == "true" { - c.HTML(200, NEWS_FEED) + c.Success(NEWS_FEED) return } @@ -112,10 +112,10 @@ func Dashboard(c *context.Context) { if !ctxUser.IsOrganization() { collaborateRepos, err := c.User.GetAccessibleRepositories(conf.UI.User.RepoPagingNum) if err != nil { - c.Handle(500, "GetAccessibleRepositories", err) + c.Error(err, "get accessible repositories") return } else if err = db.RepositoryList(collaborateRepos).LoadAttributes(); err != nil { - c.Handle(500, "RepositoryList.LoadAttributes", err) + c.Error(err, "load attributes") return } c.Data["CollaborativeRepos"] = collaborateRepos @@ -127,18 +127,18 @@ func Dashboard(c *context.Context) { if ctxUser.IsOrganization() { repos, repoCount, err = ctxUser.GetUserRepositories(c.User.ID, 1, conf.UI.User.RepoPagingNum) if err != nil { - c.Handle(500, "GetUserRepositories", err) + c.Error(err, "get user repositories") return } mirrors, err = ctxUser.GetUserMirrorRepositories(c.User.ID) if err != nil { - c.Handle(500, "GetUserMirrorRepositories", err) + c.Error(err, "get user mirror repositories") return } } else { if err = ctxUser.GetRepositories(1, conf.UI.User.RepoPagingNum); err != nil { - c.Handle(500, "GetRepositories", err) + c.Error(err, "get repositories") return } repos = ctxUser.Repos @@ -146,7 +146,7 @@ func Dashboard(c *context.Context) { mirrors, err = ctxUser.GetMirrorRepositories() if err != nil { - c.Handle(500, "GetMirrorRepositories", err) + c.Error(err, "get mirror repositories") return } } @@ -155,13 +155,13 @@ func Dashboard(c *context.Context) { c.Data["MaxShowRepoNum"] = conf.UI.User.RepoPagingNum if err := db.MirrorRepositoryList(mirrors).LoadAttributes(); err != nil { - c.Handle(500, "MirrorRepositoryList.LoadAttributes", err) + c.Error(err, "load attributes") return } c.Data["MirrorCount"] = len(mirrors) c.Data["Mirrors"] = mirrors - c.HTML(200, DASHBOARD) + c.Success(DASHBOARD) } func Issues(c *context.Context) { @@ -216,12 +216,12 @@ func Issues(c *context.Context) { if ctxUser.IsOrganization() { repos, _, err = ctxUser.GetUserRepositories(c.User.ID, 1, ctxUser.NumRepos) if err != nil { - c.Handle(500, "GetRepositories", err) + c.Error(err, "get repositories") return } } else { if err := ctxUser.GetRepositories(1, c.User.NumRepos); err != nil { - c.Handle(500, "GetRepositories", err) + c.Error(err, "get repositories") return } repos = ctxUser.Repos @@ -255,7 +255,7 @@ func Issues(c *context.Context) { if !isPullList { userRepoIDs, err = db.FilterRepositoryWithIssues(userRepoIDs) if err != nil { - c.Handle(500, "FilterRepositoryWithIssues", err) + c.Error(err, "filter repositories with issues") return } } @@ -287,32 +287,32 @@ func Issues(c *context.Context) { issues, err := db.Issues(issueOptions) if err != nil { - c.Handle(500, "Issues", err) + c.Error(err, "list issues") return } if repoID > 0 { repo, err := db.GetRepositoryByID(repoID) if err != nil { - c.Handle(500, "GetRepositoryByID", fmt.Errorf("[#%d] %v", repoID, err)) + c.Error(err, "get repository by ID") return } if err = repo.GetOwner(); err != nil { - c.Handle(500, "GetOwner", fmt.Errorf("[#%d] %v", repoID, err)) + c.Error(err, "get owner") return } // Check if user has access to given repository. if !repo.IsOwnedBy(ctxUser.ID) && !repo.HasAccess(ctxUser.ID) { - c.Handle(404, "Issues", fmt.Errorf("#%d", repoID)) + c.NotFound() return } } for _, issue := range issues { if err = issue.Repo.GetOwner(); err != nil { - c.Handle(500, "GetOwner", fmt.Errorf("[#%d] %v", issue.RepoID, err)) + c.Error(err, "get owner") return } } @@ -341,13 +341,13 @@ func Issues(c *context.Context) { c.Data["State"] = "open" } - c.HTML(200, ISSUES) + c.Success(ISSUES) } func ShowSSHKeys(c *context.Context, uid int64) { keys, err := db.ListPublicKeys(uid) if err != nil { - c.Handle(500, "ListPublicKeys", err) + c.Error(err, "list public keys") return } @@ -356,7 +356,7 @@ func ShowSSHKeys(c *context.Context, uid int64) { buf.WriteString(keys[i].OmitEmail()) buf.WriteString("\n") } - c.PlainText(200, buf.Bytes()) + c.PlainText(http.StatusOK, buf.String()) } func showOrgProfile(c *context.Context) { @@ -382,7 +382,7 @@ func showOrgProfile(c *context.Context) { if c.IsLogged && !c.User.IsAdmin { repos, count, err = org.GetUserRepositories(c.User.ID, page, conf.UI.User.RepoPagingNum) if err != nil { - c.Handle(500, "GetUserRepositories", err) + c.Error(err, "get user repositories") return } c.Data["Repos"] = repos @@ -395,7 +395,7 @@ func showOrgProfile(c *context.Context) { PageSize: conf.UI.User.RepoPagingNum, }) if err != nil { - c.Handle(500, "GetRepositories", err) + c.Error(err, "get user repositories") return } c.Data["Repos"] = repos @@ -404,20 +404,20 @@ func showOrgProfile(c *context.Context) { c.Data["Page"] = paginater.New(int(count), conf.UI.User.RepoPagingNum, page, 5) if err := org.GetMembers(); err != nil { - c.Handle(500, "GetMembers", err) + c.Error(err, "get members") return } c.Data["Members"] = org.Members c.Data["Teams"] = org.Teams - c.HTML(200, ORG_HOME) + c.Success(ORG_HOME) } func Email2User(c *context.Context) { u, err := db.GetUserByEmail(c.Query("email")) if err != nil { - c.NotFoundOrServerError("GetUserByEmail", errors.IsUserNotExist, err) + c.NotFoundOrError(err, "get user by email") return } c.Redirect(conf.Server.Subpath + "/user/" + u.Name) diff --git a/internal/route/user/profile.go b/internal/route/user/profile.go index d18b35f8..89d84509 100644 --- a/internal/route/user/profile.go +++ b/internal/route/user/profile.go @@ -5,15 +5,14 @@ package user import ( - "fmt" - repo2 "gogs.io/gogs/internal/route/repo" "strings" "github.com/unknwon/paginater" + "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/conf" + "gogs.io/gogs/internal/route/repo" "gogs.io/gogs/internal/tool" ) @@ -45,7 +44,7 @@ func Profile(c *context.Context, puser *context.ParamsUser) { orgs, err := db.GetOrgsByUserID(puser.ID, c.IsLogged && (c.User.IsAdmin || c.User.ID == puser.ID)) if err != nil { - c.ServerError("GetOrgsByUserIDDesc", err) + c.Error(err, "get organizations by user ID") return } @@ -73,7 +72,7 @@ func Profile(c *context.Context, puser *context.ParamsUser) { PageSize: conf.UI.User.RepoPagingNum, }) if err != nil { - c.ServerError("GetRepositories", err) + c.Error(err, "get user repositories") return } @@ -89,7 +88,7 @@ func Followers(c *context.Context, puser *context.ParamsUser) { c.PageIs("Followers") c.Data["CardsTitle"] = c.Tr("user.followers") c.Data["Owner"] = puser - repo2.RenderUserCards(c, puser.NumFollowers, puser.GetFollowers, FOLLOWERS) + repo.RenderUserCards(c, puser.NumFollowers, puser.GetFollowers, FOLLOWERS) } func Following(c *context.Context, puser *context.ParamsUser) { @@ -97,7 +96,7 @@ func Following(c *context.Context, puser *context.ParamsUser) { c.PageIs("Following") c.Data["CardsTitle"] = c.Tr("user.following") c.Data["Owner"] = puser - repo2.RenderUserCards(c, puser.NumFollowing, puser.GetFollowing, FOLLOWERS) + repo.RenderUserCards(c, puser.NumFollowing, puser.GetFollowing, FOLLOWERS) } func Stars(c *context.Context) { @@ -114,7 +113,7 @@ func Action(c *context.Context, puser *context.ParamsUser) { } if err != nil { - c.ServerError(fmt.Sprintf("Action (%s)", c.Params(":action")), err) + c.Errorf(err, "action %q", c.Params(":action")) return } diff --git a/internal/route/user/setting.go b/internal/route/user/setting.go index f09e4034..d8ae9e70 100644 --- a/internal/route/user/setting.go +++ b/internal/route/user/setting.go @@ -80,7 +80,7 @@ func SettingsPost(c *context.Context, f form.UpdateProfile) { case db.IsErrNamePatternNotAllowed(err): msg = c.Tr("form.name_pattern_not_allowed") default: - c.ServerError("ChangeUserName", err) + c.Error(err, "change user name") return } @@ -106,12 +106,12 @@ func SettingsPost(c *context.Context, f form.UpdateProfile) { c.RenderWithErr(msg, SETTINGS_PROFILE, &f) return } - c.ServerError("UpdateUser", err) + c.Errorf(err, "update user") return } c.Flash.Success(c.Tr("settings.update_profile_success")) - c.SubURLRedirect("/user/settings") + c.RedirectSubpath("/user/settings") } // FIXME: limit upload size @@ -169,7 +169,7 @@ func SettingsAvatarPost(c *context.Context, f form.Avatar) { c.Flash.Success(c.Tr("settings.update_avatar_success")) } - c.SubURLRedirect("/user/settings/avatar") + c.RedirectSubpath("/user/settings/avatar") } func SettingsDeleteAvatar(c *context.Context) { @@ -177,7 +177,7 @@ func SettingsDeleteAvatar(c *context.Context) { c.Flash.Error(fmt.Sprintf("Failed to delete avatar: %v", err)) } - c.SubURLRedirect("/user/settings/avatar") + c.RedirectSubpath("/user/settings/avatar") } func SettingsPassword(c *context.Context) { @@ -203,18 +203,18 @@ func SettingsPasswordPost(c *context.Context, f form.ChangePassword) { c.User.Passwd = f.Password var err error if c.User.Salt, err = db.GetUserSalt(); err != nil { - c.ServerError("GetUserSalt", err) + c.Errorf(err, "get user salt") return } c.User.EncodePasswd() if err := db.UpdateUser(c.User); err != nil { - c.ServerError("UpdateUser", err) + c.Errorf(err, "update user") return } c.Flash.Success(c.Tr("settings.change_password_success")) } - c.SubURLRedirect("/user/settings/password") + c.RedirectSubpath("/user/settings/password") } func SettingsEmails(c *context.Context) { @@ -223,7 +223,7 @@ func SettingsEmails(c *context.Context) { emails, err := db.GetEmailAddresses(c.User.ID) if err != nil { - c.ServerError("GetEmailAddresses", err) + c.Errorf(err, "get email addresses") return } c.Data["Emails"] = emails @@ -238,18 +238,18 @@ func SettingsEmailPost(c *context.Context, f form.AddEmail) { // Make emailaddress primary. if c.Query("_method") == "PRIMARY" { if err := db.MakeEmailPrimary(c.UserID(), &db.EmailAddress{ID: c.QueryInt64("id")}); err != nil { - c.ServerError("MakeEmailPrimary", err) + c.Errorf(err, "make email primary") return } - c.SubURLRedirect("/user/settings/email") + c.RedirectSubpath("/user/settings/email") return } // Add Email address. emails, err := db.GetEmailAddresses(c.User.ID) if err != nil { - c.ServerError("GetEmailAddresses", err) + c.Errorf(err, "get email addresses") return } c.Data["Emails"] = emails @@ -268,7 +268,7 @@ func SettingsEmailPost(c *context.Context, f form.AddEmail) { if db.IsErrEmailAlreadyUsed(err) { c.RenderWithErr(c.Tr("form.email_been_used"), SETTINGS_EMAILS, &f) } else { - c.ServerError("AddEmailAddress", err) + c.Errorf(err, "add email address") } return } @@ -285,7 +285,7 @@ func SettingsEmailPost(c *context.Context, f form.AddEmail) { c.Flash.Success(c.Tr("settings.add_email_success")) } - c.SubURLRedirect("/user/settings/email") + c.RedirectSubpath("/user/settings/email") } func DeleteEmail(c *context.Context) { @@ -293,7 +293,7 @@ func DeleteEmail(c *context.Context) { ID: c.QueryInt64("id"), UID: c.User.ID, }); err != nil { - c.ServerError("DeleteEmailAddress", err) + c.Errorf(err, "delete email address") return } @@ -309,7 +309,7 @@ func SettingsSSHKeys(c *context.Context) { keys, err := db.ListPublicKeys(c.User.ID) if err != nil { - c.ServerError("ListPublicKeys", err) + c.Errorf(err, "list public keys") return } c.Data["Keys"] = keys @@ -323,7 +323,7 @@ func SettingsSSHKeysPost(c *context.Context, f form.AddSSHKey) { keys, err := db.ListPublicKeys(c.User.ID) if err != nil { - c.ServerError("ListPublicKeys", err) + c.Errorf(err, "list public keys") return } c.Data["Keys"] = keys @@ -339,7 +339,7 @@ func SettingsSSHKeysPost(c *context.Context, f form.AddSSHKey) { c.Flash.Info(c.Tr("form.unable_verify_ssh_key")) } else { c.Flash.Error(c.Tr("form.invalid_ssh_key", err.Error())) - c.SubURLRedirect("/user/settings/ssh") + c.RedirectSubpath("/user/settings/ssh") return } } @@ -354,13 +354,13 @@ func SettingsSSHKeysPost(c *context.Context, f form.AddSSHKey) { c.FormErr("Title") c.RenderWithErr(c.Tr("settings.ssh_key_name_used"), SETTINGS_SSH_KEYS, &f) default: - c.ServerError("AddPublicKey", err) + c.Errorf(err, "add public key") } return } c.Flash.Success(c.Tr("settings.add_key_success", f.Title)) - c.SubURLRedirect("/user/settings/ssh") + c.RedirectSubpath("/user/settings/ssh") } func DeleteSSHKey(c *context.Context) { @@ -381,7 +381,7 @@ func SettingsSecurity(c *context.Context) { t, err := db.GetTwoFactorByUserID(c.UserID()) if err != nil && !errors.IsTwoFactorNotFound(err) { - c.ServerError("GetTwoFactorByUserID", err) + c.Errorf(err, "get two factor by user ID") return } c.Data["TwoFactor"] = t @@ -410,7 +410,7 @@ func SettingsTwoFactorEnable(c *context.Context) { AccountName: c.User.Email, }) if err != nil { - c.ServerError("Generate", err) + c.Errorf(err, "generate TOTP") return } } @@ -418,13 +418,13 @@ func SettingsTwoFactorEnable(c *context.Context) { img, err := key.Image(240, 240) if err != nil { - c.ServerError("Image", err) + c.Errorf(err, "generate image") return } var buf bytes.Buffer if err = png.Encode(&buf, img); err != nil { - c.ServerError("Encode", err) + c.Errorf(err, "encode image") return } c.Data["QRCode"] = template.URL("data:image/png;base64," + base64.StdEncoding.EncodeToString(buf.Bytes())) @@ -443,20 +443,20 @@ func SettingsTwoFactorEnablePost(c *context.Context) { if !totp.Validate(c.Query("passcode"), secret) { c.Flash.Error(c.Tr("settings.two_factor_invalid_passcode")) - c.SubURLRedirect("/user/settings/security/two_factor_enable") + c.RedirectSubpath("/user/settings/security/two_factor_enable") return } if err := db.NewTwoFactor(c.UserID(), secret); err != nil { c.Flash.Error(c.Tr("settings.two_factor_enable_error", err)) - c.SubURLRedirect("/user/settings/security/two_factor_enable") + c.RedirectSubpath("/user/settings/security/two_factor_enable") return } c.Session.Delete("twoFactorSecret") c.Session.Delete("twoFactorURL") c.Flash.Success(c.Tr("settings.two_factor_enable_success")) - c.SubURLRedirect("/user/settings/security/two_factor_recovery_codes") + c.RedirectSubpath("/user/settings/security/two_factor_recovery_codes") } func SettingsTwoFactorRecoveryCodes(c *context.Context) { @@ -470,7 +470,7 @@ func SettingsTwoFactorRecoveryCodes(c *context.Context) { recoveryCodes, err := db.GetRecoveryCodesByUserID(c.UserID()) if err != nil { - c.ServerError("GetRecoveryCodesByUserID", err) + c.Errorf(err, "get recovery codes by user ID") return } c.Data["RecoveryCodes"] = recoveryCodes @@ -490,7 +490,7 @@ func SettingsTwoFactorRecoveryCodesPost(c *context.Context) { c.Flash.Success(c.Tr("settings.two_factor_regenerate_recovery_codes_success")) } - c.SubURLRedirect("/user/settings/security/two_factor_recovery_codes") + c.RedirectSubpath("/user/settings/security/two_factor_recovery_codes") } func SettingsTwoFactorDisable(c *context.Context) { @@ -500,7 +500,7 @@ func SettingsTwoFactorDisable(c *context.Context) { } if err := db.DeleteTwoFactor(c.UserID()); err != nil { - c.ServerError("DeleteTwoFactor", err) + c.Errorf(err, "delete two factor") return } @@ -516,11 +516,11 @@ func SettingsRepos(c *context.Context) { repos, err := db.GetUserAndCollaborativeRepositories(c.User.ID) if err != nil { - c.ServerError("GetUserAndCollaborativeRepositories", err) + c.Errorf(err, "get user and collaborative repositories") return } if err = db.RepositoryList(repos).LoadAttributes(); err != nil { - c.ServerError("LoadAttributes", err) + c.Errorf(err, "load attributes") return } c.Data["Repos"] = repos @@ -531,12 +531,12 @@ func SettingsRepos(c *context.Context) { func SettingsLeaveRepo(c *context.Context) { repo, err := db.GetRepositoryByID(c.QueryInt64("id")) if err != nil { - c.NotFoundOrServerError("GetRepositoryByID", errors.IsRepoNotExist, err) + c.NotFoundOrError(err, "get repository by ID") return } if err = repo.DeleteCollaboration(c.User.ID); err != nil { - c.ServerError("DeleteCollaboration", err) + c.Errorf(err, "delete collaboration") return } @@ -552,7 +552,7 @@ func SettingsOrganizations(c *context.Context) { orgs, err := db.GetOrgsByUserID(c.User.ID, true) if err != nil { - c.ServerError("GetOrgsByUserID", err) + c.Errorf(err, "get organizations by user ID") return } c.Data["Orgs"] = orgs @@ -565,7 +565,7 @@ func SettingsLeaveOrganization(c *context.Context) { if db.IsErrLastOrgOwner(err) { c.Flash.Error(c.Tr("form.last_org_owner")) } else { - c.ServerError("RemoveOrgUser", err) + c.Errorf(err, "remove organization user") return } } @@ -581,7 +581,7 @@ func SettingsApplications(c *context.Context) { tokens, err := db.ListAccessTokens(c.User.ID) if err != nil { - c.ServerError("ListAccessTokens", err) + c.Errorf(err, "list access tokens") return } c.Data["Tokens"] = tokens @@ -596,7 +596,7 @@ func SettingsApplicationsPost(c *context.Context, f form.NewAccessToken) { if c.HasError() { tokens, err := db.ListAccessTokens(c.User.ID) if err != nil { - c.ServerError("ListAccessTokens", err) + c.Errorf(err, "list access tokens") return } @@ -612,16 +612,16 @@ func SettingsApplicationsPost(c *context.Context, f form.NewAccessToken) { if err := db.NewAccessToken(t); err != nil { if errors.IsAccessTokenNameAlreadyExist(err) { c.Flash.Error(c.Tr("settings.token_name_exists")) - c.SubURLRedirect("/user/settings/applications") + c.RedirectSubpath("/user/settings/applications") } else { - c.ServerError("NewAccessToken", err) + c.Errorf(err, "new access token") } return } c.Flash.Success(c.Tr("settings.generate_token_succees")) c.Flash.Info(t.Sha1) - c.SubURLRedirect("/user/settings/applications") + c.RedirectSubpath("/user/settings/applications") } func SettingsDeleteApplication(c *context.Context) { @@ -642,10 +642,10 @@ func SettingsDelete(c *context.Context) { if c.Req.Method == "POST" { if _, err := db.UserLogin(c.User.Name, c.Query("password"), c.User.LoginSource); err != nil { - if errors.IsUserNotExist(err) { + if db.IsErrUserNotExist(err) { c.RenderWithErr(c.Tr("form.enterred_invalid_password"), SETTINGS_DELETE, nil) } else { - c.ServerError("UserLogin", err) + c.Errorf(err, "authenticate user") } return } @@ -659,7 +659,7 @@ func SettingsDelete(c *context.Context) { c.Flash.Error(c.Tr("form.still_has_org")) c.Redirect(conf.Server.Subpath + "/user/settings/delete") default: - c.ServerError("DeleteUser", err) + c.Errorf(err, "delete user") } } else { log.Trace("Account deleted: %s", c.User.Name) |