diff options
Diffstat (limited to 'pkg/context')
-rw-r--r-- | pkg/context/api.go | 26 | ||||
-rw-r--r-- | pkg/context/auth.go | 54 | ||||
-rw-r--r-- | pkg/context/context.go | 78 | ||||
-rw-r--r-- | pkg/context/org.go | 94 | ||||
-rw-r--r-- | pkg/context/repo.go | 276 |
5 files changed, 264 insertions, 264 deletions
diff --git a/pkg/context/api.go b/pkg/context/api.go index 623bc1aa..f4b95b4c 100644 --- a/pkg/context/api.go +++ b/pkg/context/api.go @@ -25,7 +25,7 @@ const DOC_URL = "https://github.com/gogits/go-gogs-client/wiki" // Error responses error message to client with given message. // If status is 500, also it prints error to log. -func (ctx *APIContext) Error(status int, title string, obj interface{}) { +func (c *APIContext) Error(status int, title string, obj interface{}) { var message string if err, ok := obj.(error); ok { message = err.Error() @@ -37,39 +37,39 @@ func (ctx *APIContext) Error(status int, title string, obj interface{}) { log.Error(3, "%s: %s", title, message) } - ctx.JSON(status, map[string]string{ + c.JSON(status, map[string]string{ "message": message, "url": DOC_URL, }) } // SetLinkHeader sets pagination link header by given totol number and page size. -func (ctx *APIContext) SetLinkHeader(total, pageSize int) { - page := paginater.New(total, pageSize, ctx.QueryInt("page"), 0) +func (c *APIContext) SetLinkHeader(total, pageSize int) { + page := paginater.New(total, pageSize, c.QueryInt("page"), 0) links := make([]string, 0, 4) if page.HasNext() { - links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"next\"", setting.AppURL, ctx.Req.URL.Path[1:], page.Next())) + links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"next\"", setting.AppURL, c.Req.URL.Path[1:], page.Next())) } if !page.IsLast() { - links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"last\"", setting.AppURL, ctx.Req.URL.Path[1:], page.TotalPages())) + links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"last\"", setting.AppURL, c.Req.URL.Path[1:], page.TotalPages())) } if !page.IsFirst() { - links = append(links, fmt.Sprintf("<%s%s?page=1>; rel=\"first\"", setting.AppURL, ctx.Req.URL.Path[1:])) + links = append(links, fmt.Sprintf("<%s%s?page=1>; rel=\"first\"", setting.AppURL, c.Req.URL.Path[1:])) } if page.HasPrevious() { - links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"prev\"", setting.AppURL, ctx.Req.URL.Path[1:], page.Previous())) + links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"prev\"", setting.AppURL, c.Req.URL.Path[1:], page.Previous())) } if len(links) > 0 { - ctx.Header().Set("Link", strings.Join(links, ",")) + c.Header().Set("Link", strings.Join(links, ",")) } } func APIContexter() macaron.Handler { - return func(c *Context) { - ctx := &APIContext{ - Context: c, + return func(ctx *Context) { + c := &APIContext{ + Context: ctx, } - c.Map(ctx) + ctx.Map(c) } } diff --git a/pkg/context/auth.go b/pkg/context/auth.go index 9ad5cdd0..3ffc9c8f 100644 --- a/pkg/context/auth.go +++ b/pkg/context/auth.go @@ -22,73 +22,73 @@ type ToggleOptions struct { } func Toggle(options *ToggleOptions) macaron.Handler { - return func(ctx *Context) { + return func(c *Context) { // Cannot view any page before installation. if !setting.InstallLock { - ctx.Redirect(setting.AppSubURL + "/install") + c.Redirect(setting.AppSubURL + "/install") return } // Check prohibit login users. - if ctx.IsLogged && ctx.User.ProhibitLogin { - ctx.Data["Title"] = ctx.Tr("auth.prohibit_login") - ctx.HTML(200, "user/auth/prohibit_login") + if c.IsLogged && c.User.ProhibitLogin { + c.Data["Title"] = c.Tr("auth.prohibit_login") + c.HTML(200, "user/auth/prohibit_login") return } // Check non-logged users landing page. - if !ctx.IsLogged && ctx.Req.RequestURI == "/" && setting.LandingPageURL != setting.LANDING_PAGE_HOME { - ctx.Redirect(setting.AppSubURL + string(setting.LandingPageURL)) + if !c.IsLogged && c.Req.RequestURI == "/" && setting.LandingPageURL != setting.LANDING_PAGE_HOME { + c.Redirect(setting.AppSubURL + string(setting.LandingPageURL)) return } // Redirect to dashboard if user tries to visit any non-login page. - if options.SignOutRequired && ctx.IsLogged && ctx.Req.RequestURI != "/" { - ctx.Redirect(setting.AppSubURL + "/") + if options.SignOutRequired && c.IsLogged && c.Req.RequestURI != "/" { + c.Redirect(setting.AppSubURL + "/") return } - if !options.SignOutRequired && !options.DisableCSRF && ctx.Req.Method == "POST" && !auth.IsAPIPath(ctx.Req.URL.Path) { - csrf.Validate(ctx.Context, ctx.csrf) - if ctx.Written() { + if !options.SignOutRequired && !options.DisableCSRF && c.Req.Method == "POST" && !auth.IsAPIPath(c.Req.URL.Path) { + csrf.Validate(c.Context, c.csrf) + if c.Written() { return } } if options.SignInRequired { - if !ctx.IsLogged { + if !c.IsLogged { // Restrict API calls with error message. - if auth.IsAPIPath(ctx.Req.URL.Path) { - ctx.JSON(403, map[string]string{ + if auth.IsAPIPath(c.Req.URL.Path) { + c.JSON(403, map[string]string{ "message": "Only signed in user is allowed to call APIs.", }) return } - ctx.SetCookie("redirect_to", url.QueryEscape(setting.AppSubURL+ctx.Req.RequestURI), 0, setting.AppSubURL) - ctx.Redirect(setting.AppSubURL + "/user/login") + c.SetCookie("redirect_to", url.QueryEscape(setting.AppSubURL+c.Req.RequestURI), 0, setting.AppSubURL) + c.Redirect(setting.AppSubURL + "/user/login") return - } else if !ctx.User.IsActive && setting.Service.RegisterEmailConfirm { - ctx.Data["Title"] = ctx.Tr("auth.active_your_account") - ctx.HTML(200, "user/auth/activate") + } else if !c.User.IsActive && setting.Service.RegisterEmailConfirm { + c.Data["Title"] = c.Tr("auth.active_your_account") + c.HTML(200, "user/auth/activate") return } } // Redirect to log in page if auto-signin info is provided and has not signed in. - if !options.SignOutRequired && !ctx.IsLogged && !auth.IsAPIPath(ctx.Req.URL.Path) && - len(ctx.GetCookie(setting.CookieUserName)) > 0 { - ctx.SetCookie("redirect_to", url.QueryEscape(setting.AppSubURL+ctx.Req.RequestURI), 0, setting.AppSubURL) - ctx.Redirect(setting.AppSubURL + "/user/login") + if !options.SignOutRequired && !c.IsLogged && !auth.IsAPIPath(c.Req.URL.Path) && + len(c.GetCookie(setting.CookieUserName)) > 0 { + c.SetCookie("redirect_to", url.QueryEscape(setting.AppSubURL+c.Req.RequestURI), 0, setting.AppSubURL) + c.Redirect(setting.AppSubURL + "/user/login") return } if options.AdminRequired { - if !ctx.User.IsAdmin { - ctx.Error(403) + if !c.User.IsAdmin { + c.Error(403) return } - ctx.Data["PageIsAdmin"] = true + c.Data["PageIsAdmin"] = true } } } diff --git a/pkg/context/context.go b/pkg/context/context.go index d52c668e..e8843cea 100644 --- a/pkg/context/context.go +++ b/pkg/context/context.go @@ -85,39 +85,39 @@ func (c *Context) UserID() int64 { } // HasError returns true if error occurs in form validation. -func (ctx *Context) HasApiError() bool { - hasErr, ok := ctx.Data["HasError"] +func (c *Context) HasApiError() bool { + hasErr, ok := c.Data["HasError"] if !ok { return false } return hasErr.(bool) } -func (ctx *Context) GetErrMsg() string { - return ctx.Data["ErrorMsg"].(string) +func (c *Context) GetErrMsg() string { + return c.Data["ErrorMsg"].(string) } // HasError returns true if error occurs in form validation. -func (ctx *Context) HasError() bool { - hasErr, ok := ctx.Data["HasError"] +func (c *Context) HasError() bool { + hasErr, ok := c.Data["HasError"] if !ok { return false } - ctx.Flash.ErrorMsg = ctx.Data["ErrorMsg"].(string) - ctx.Data["Flash"] = ctx.Flash + c.Flash.ErrorMsg = c.Data["ErrorMsg"].(string) + c.Data["Flash"] = c.Flash return hasErr.(bool) } // HasValue returns true if value of given name exists. -func (ctx *Context) HasValue(name string) bool { - _, ok := ctx.Data[name] +func (c *Context) HasValue(name string) bool { + _, ok := c.Data[name] return ok } // HTML responses template with given status. -func (ctx *Context) HTML(status int, name string) { +func (c *Context) HTML(status int, name string) { log.Trace("Template: %s", name) - ctx.Context.HTML(status, name) + c.Context.HTML(status, name) } // Success responses template with status http.StatusOK. @@ -137,33 +137,33 @@ func (c *Context) SubURLRedirect(location string, status ...int) { } // RenderWithErr used for page has form validation but need to prompt error to users. -func (ctx *Context) RenderWithErr(msg, tpl string, f interface{}) { +func (c *Context) RenderWithErr(msg, tpl string, f interface{}) { if f != nil { - form.Assign(f, ctx.Data) + form.Assign(f, c.Data) } - ctx.Flash.ErrorMsg = msg - ctx.Data["Flash"] = ctx.Flash - ctx.HTML(http.StatusOK, tpl) + c.Flash.ErrorMsg = msg + c.Data["Flash"] = c.Flash + c.HTML(http.StatusOK, tpl) } // Handle handles and logs error by given status. -func (ctx *Context) Handle(status int, title string, err error) { +func (c *Context) Handle(status int, title string, err error) { switch status { case http.StatusNotFound: - ctx.Data["Title"] = "Page Not Found" + c.Data["Title"] = "Page Not Found" case http.StatusInternalServerError: - ctx.Data["Title"] = "Internal Server Error" + c.Data["Title"] = "Internal Server Error" log.Error(2, "%s: %v", title, err) - if !setting.ProdMode || (ctx.IsLogged && ctx.User.IsAdmin) { - ctx.Data["ErrorMsg"] = err + if !setting.ProdMode || (c.IsLogged && c.User.IsAdmin) { + c.Data["ErrorMsg"] = err } } - ctx.HTML(status, fmt.Sprintf("status/%d", status)) + c.HTML(status, fmt.Sprintf("status/%d", status)) } // NotFound renders the 404 page. -func (ctx *Context) NotFound() { - ctx.Handle(http.StatusNotFound, "", nil) +func (c *Context) NotFound() { + c.Handle(http.StatusNotFound, "", nil) } // ServerError renders the 500 page. @@ -182,11 +182,11 @@ func (c *Context) NotFoundOrServerError(title string, errck func(error) bool, er c.ServerError(title, err) } -func (ctx *Context) HandleText(status int, title string) { - ctx.PlainText(status, []byte(title)) +func (c *Context) HandleText(status int, title string) { + c.PlainText(status, []byte(title)) } -func (ctx *Context) ServeContent(name string, r io.ReadSeeker, params ...interface{}) { +func (c *Context) ServeContent(name string, r io.ReadSeeker, params ...interface{}) { modtime := time.Now() for _, p := range params { switch v := p.(type) { @@ -194,14 +194,14 @@ func (ctx *Context) ServeContent(name string, r io.ReadSeeker, params ...interfa modtime = v } } - ctx.Resp.Header().Set("Content-Description", "File Transfer") - ctx.Resp.Header().Set("Content-Type", "application/octet-stream") - ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+name) - ctx.Resp.Header().Set("Content-Transfer-Encoding", "binary") - ctx.Resp.Header().Set("Expires", "0") - ctx.Resp.Header().Set("Cache-Control", "must-revalidate") - ctx.Resp.Header().Set("Pragma", "public") - http.ServeContent(ctx.Resp, ctx.Req.Request, name, modtime, r) + c.Resp.Header().Set("Content-Description", "File Transfer") + c.Resp.Header().Set("Content-Type", "application/octet-stream") + c.Resp.Header().Set("Content-Disposition", "attachment; filename="+name) + c.Resp.Header().Set("Content-Transfer-Encoding", "binary") + c.Resp.Header().Set("Expires", "0") + c.Resp.Header().Set("Cache-Control", "must-revalidate") + c.Resp.Header().Set("Pragma", "public") + http.ServeContent(c.Resp, c.Req.Request, name, modtime, r) } // Contexter initializes a classic context for a request. @@ -228,8 +228,8 @@ func Contexter() macaron.Handler { // This is particular a workaround for "go get" command which does not respect // .netrc file. if c.Query("go-get") == "1" { - ownerName := ctx.Params(":username") - repoName := ctx.Params(":reponame") + ownerName := c.Params(":username") + repoName := c.Params(":reponame") branchName := "master" owner, err := models.GetUserByName(ownerName) @@ -244,7 +244,7 @@ func Contexter() macaron.Handler { } prefix := setting.AppURL + path.Join(ownerName, repoName, "src", branchName) - ctx.PlainText(http.StatusOK, []byte(com.Expand(` + c.PlainText(http.StatusOK, []byte(com.Expand(` <html> <head> <meta name="go-import" content="{GoGetImport} git {CloneLink}"> diff --git a/pkg/context/org.go b/pkg/context/org.go index be0b0572..45c23bd6 100644 --- a/pkg/context/org.go +++ b/pkg/context/org.go @@ -25,7 +25,7 @@ type Organization struct { Team *models.Team } -func HandleOrgAssignment(ctx *Context, args ...bool) { +func HandleOrgAssignment(c *Context, args ...bool) { var ( requireMember bool requireOwner bool @@ -45,106 +45,106 @@ func HandleOrgAssignment(ctx *Context, args ...bool) { requireTeamAdmin = args[3] } - orgName := ctx.Params(":org") + orgName := c.Params(":org") var err error - ctx.Org.Organization, err = models.GetUserByName(orgName) + c.Org.Organization, err = models.GetUserByName(orgName) if err != nil { - ctx.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err) + c.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err) return } - org := ctx.Org.Organization - ctx.Data["Org"] = org + org := c.Org.Organization + c.Data["Org"] = org // Force redirection when username is actually a user. if !org.IsOrganization() { - ctx.Redirect("/" + org.Name) + c.Redirect("/" + org.Name) return } // Admin has super access. - if ctx.IsLogged && ctx.User.IsAdmin { - ctx.Org.IsOwner = true - ctx.Org.IsMember = true - ctx.Org.IsTeamMember = true - ctx.Org.IsTeamAdmin = true - } else if ctx.IsLogged { - ctx.Org.IsOwner = org.IsOwnedBy(ctx.User.ID) - if ctx.Org.IsOwner { - ctx.Org.IsMember = true - ctx.Org.IsTeamMember = true - ctx.Org.IsTeamAdmin = true + if c.IsLogged && c.User.IsAdmin { + c.Org.IsOwner = true + c.Org.IsMember = true + c.Org.IsTeamMember = true + c.Org.IsTeamAdmin = true + } else if c.IsLogged { + c.Org.IsOwner = org.IsOwnedBy(c.User.ID) + if c.Org.IsOwner { + c.Org.IsMember = true + c.Org.IsTeamMember = true + c.Org.IsTeamAdmin = true } else { - if org.IsOrgMember(ctx.User.ID) { - ctx.Org.IsMember = true + if org.IsOrgMember(c.User.ID) { + c.Org.IsMember = true } } } else { // Fake data. - ctx.Data["SignedUser"] = &models.User{} + c.Data["SignedUser"] = &models.User{} } - if (requireMember && !ctx.Org.IsMember) || - (requireOwner && !ctx.Org.IsOwner) { - ctx.Handle(404, "OrgAssignment", err) + if (requireMember && !c.Org.IsMember) || + (requireOwner && !c.Org.IsOwner) { + c.Handle(404, "OrgAssignment", err) return } - ctx.Data["IsOrganizationOwner"] = ctx.Org.IsOwner - ctx.Data["IsOrganizationMember"] = ctx.Org.IsMember + c.Data["IsOrganizationOwner"] = c.Org.IsOwner + c.Data["IsOrganizationMember"] = c.Org.IsMember - ctx.Org.OrgLink = setting.AppSubURL + "/org/" + org.Name - ctx.Data["OrgLink"] = ctx.Org.OrgLink + c.Org.OrgLink = setting.AppSubURL + "/org/" + org.Name + c.Data["OrgLink"] = c.Org.OrgLink // Team. - if ctx.Org.IsMember { - if ctx.Org.IsOwner { + if c.Org.IsMember { + if c.Org.IsOwner { if err := org.GetTeams(); err != nil { - ctx.Handle(500, "GetTeams", err) + c.Handle(500, "GetTeams", err) return } } else { - org.Teams, err = org.GetUserTeams(ctx.User.ID) + org.Teams, err = org.GetUserTeams(c.User.ID) if err != nil { - ctx.Handle(500, "GetUserTeams", err) + c.Handle(500, "GetUserTeams", err) return } } } - teamName := ctx.Params(":team") + teamName := c.Params(":team") if len(teamName) > 0 { teamExists := false for _, team := range org.Teams { if team.LowerName == strings.ToLower(teamName) { teamExists = true - ctx.Org.Team = team - ctx.Org.IsTeamMember = true - ctx.Data["Team"] = ctx.Org.Team + c.Org.Team = team + c.Org.IsTeamMember = true + c.Data["Team"] = c.Org.Team break } } if !teamExists { - ctx.Handle(404, "OrgAssignment", err) + c.Handle(404, "OrgAssignment", err) return } - ctx.Data["IsTeamMember"] = ctx.Org.IsTeamMember - if requireTeamMember && !ctx.Org.IsTeamMember { - ctx.Handle(404, "OrgAssignment", err) + c.Data["IsTeamMember"] = c.Org.IsTeamMember + if requireTeamMember && !c.Org.IsTeamMember { + c.Handle(404, "OrgAssignment", err) return } - ctx.Org.IsTeamAdmin = ctx.Org.Team.IsOwnerTeam() || ctx.Org.Team.Authorize >= models.ACCESS_MODE_ADMIN - ctx.Data["IsTeamAdmin"] = ctx.Org.IsTeamAdmin - if requireTeamAdmin && !ctx.Org.IsTeamAdmin { - ctx.Handle(404, "OrgAssignment", err) + c.Org.IsTeamAdmin = c.Org.Team.IsOwnerTeam() || c.Org.Team.Authorize >= models.ACCESS_MODE_ADMIN + c.Data["IsTeamAdmin"] = c.Org.IsTeamAdmin + if requireTeamAdmin && !c.Org.IsTeamAdmin { + c.Handle(404, "OrgAssignment", err) return } } } func OrgAssignment(args ...bool) macaron.Handler { - return func(ctx *Context) { - HandleOrgAssignment(ctx, args...) + return func(c *Context) { + HandleOrgAssignment(c, args...) } } diff --git a/pkg/context/repo.go b/pkg/context/repo.go index 7920b27b..761b8af0 100644 --- a/pkg/context/repo.go +++ b/pkg/context/repo.go @@ -108,7 +108,7 @@ func (r *Repository) PullRequestURL(baseBranch, headBranch string) string { // [0]: issues, [1]: wiki func RepoAssignment(pages ...bool) macaron.Handler { - return func(ctx *Context) { + return func(c *Context) { var ( owner *models.User err error @@ -123,53 +123,53 @@ func RepoAssignment(pages ...bool) macaron.Handler { isWikiPage = pages[1] } - ownerName := ctx.Params(":username") - repoName := strings.TrimSuffix(ctx.Params(":reponame"), ".git") - refName := ctx.Params(":branchname") + ownerName := c.Params(":username") + repoName := strings.TrimSuffix(c.Params(":reponame"), ".git") + refName := c.Params(":branchname") if len(refName) == 0 { - refName = ctx.Params(":path") + refName = c.Params(":path") } // Check if the user is the same as the repository owner - if ctx.IsLogged && ctx.User.LowerName == strings.ToLower(ownerName) { - owner = ctx.User + if c.IsLogged && c.User.LowerName == strings.ToLower(ownerName) { + owner = c.User } else { owner, err = models.GetUserByName(ownerName) if err != nil { - ctx.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err) + c.NotFoundOrServerError("GetUserByName", errors.IsUserNotExist, err) return } } - ctx.Repo.Owner = owner - ctx.Data["Username"] = ctx.Repo.Owner.Name + c.Repo.Owner = owner + c.Data["Username"] = c.Repo.Owner.Name repo, err := models.GetRepositoryByName(owner.ID, repoName) if err != nil { - ctx.NotFoundOrServerError("GetRepositoryByName", errors.IsRepoNotExist, err) + c.NotFoundOrServerError("GetRepositoryByName", errors.IsRepoNotExist, err) return } - ctx.Repo.Repository = repo - ctx.Data["RepoName"] = ctx.Repo.Repository.Name - ctx.Data["IsBareRepo"] = ctx.Repo.Repository.IsBare - ctx.Repo.RepoLink = repo.Link() - ctx.Data["RepoLink"] = ctx.Repo.RepoLink - ctx.Data["RepoRelPath"] = ctx.Repo.Owner.Name + "/" + ctx.Repo.Repository.Name + c.Repo.Repository = repo + c.Data["RepoName"] = c.Repo.Repository.Name + c.Data["IsBareRepo"] = c.Repo.Repository.IsBare + c.Repo.RepoLink = repo.Link() + c.Data["RepoLink"] = c.Repo.RepoLink + c.Data["RepoRelPath"] = c.Repo.Owner.Name + "/" + c.Repo.Repository.Name // Admin has super access. - if ctx.IsLogged && ctx.User.IsAdmin { - ctx.Repo.AccessMode = models.ACCESS_MODE_OWNER + if c.IsLogged && c.User.IsAdmin { + c.Repo.AccessMode = models.ACCESS_MODE_OWNER } else { - mode, err := models.AccessLevel(ctx.UserID(), repo) + mode, err := models.AccessLevel(c.UserID(), repo) if err != nil { - ctx.ServerError("AccessLevel", err) + c.ServerError("AccessLevel", err) return } - ctx.Repo.AccessMode = mode + c.Repo.AccessMode = mode } // Check access - if ctx.Repo.AccessMode == models.ACCESS_MODE_NONE { + if c.Repo.AccessMode == models.ACCESS_MODE_NONE { // Redirect to any accessible page if not yet on it if repo.IsPartialPublic() && (!(isIssuesPage || isWikiPage) || @@ -177,11 +177,11 @@ func RepoAssignment(pages ...bool) macaron.Handler { (isWikiPage && !repo.CanGuestViewWiki())) { switch { case repo.CanGuestViewIssues(): - ctx.Redirect(repo.Link() + "/issues") + c.Redirect(repo.Link() + "/issues") case repo.CanGuestViewWiki(): - ctx.Redirect(repo.Link() + "/wiki") + c.Redirect(repo.Link() + "/wiki") default: - ctx.NotFound() + c.NotFound() } return } @@ -190,92 +190,92 @@ func RepoAssignment(pages ...bool) macaron.Handler { if !repo.IsPartialPublic() || (isIssuesPage && !repo.CanGuestViewIssues()) || (isWikiPage && !repo.CanGuestViewWiki()) { - ctx.NotFound() + c.NotFound() return } - ctx.Repo.Repository.EnableIssues = repo.CanGuestViewIssues() - ctx.Repo.Repository.EnableWiki = repo.CanGuestViewWiki() + c.Repo.Repository.EnableIssues = repo.CanGuestViewIssues() + c.Repo.Repository.EnableWiki = repo.CanGuestViewWiki() } if repo.IsMirror { - ctx.Repo.Mirror, err = models.GetMirrorByRepoID(repo.ID) + c.Repo.Mirror, err = models.GetMirrorByRepoID(repo.ID) if err != nil { - ctx.Handle(500, "GetMirror", err) + c.ServerError("GetMirror", err) return } - ctx.Data["MirrorEnablePrune"] = ctx.Repo.Mirror.EnablePrune - ctx.Data["MirrorInterval"] = ctx.Repo.Mirror.Interval - ctx.Data["Mirror"] = ctx.Repo.Mirror + c.Data["MirrorEnablePrune"] = c.Repo.Mirror.EnablePrune + c.Data["MirrorInterval"] = c.Repo.Mirror.Interval + c.Data["Mirror"] = c.Repo.Mirror } gitRepo, err := git.OpenRepository(models.RepoPath(ownerName, repoName)) if err != nil { - ctx.Handle(500, "RepoAssignment Invalid repo "+models.RepoPath(ownerName, repoName), err) + c.ServerError(fmt.Sprintf("RepoAssignment Invalid repo '%s'", c.Repo.Repository.RepoPath()), err) return } - ctx.Repo.GitRepo = gitRepo + c.Repo.GitRepo = gitRepo - tags, err := ctx.Repo.GitRepo.GetTags() + tags, err := c.Repo.GitRepo.GetTags() if err != nil { - ctx.Handle(500, fmt.Sprintf("GetTags '%s'", ctx.Repo.Repository.RepoPath()), err) + c.ServerError(fmt.Sprintf("GetTags '%s'", c.Repo.Repository.RepoPath()), err) return } - ctx.Data["Tags"] = tags - ctx.Repo.Repository.NumTags = len(tags) - - ctx.Data["Title"] = owner.Name + "/" + repo.Name - ctx.Data["Repository"] = repo - ctx.Data["Owner"] = ctx.Repo.Repository.Owner - ctx.Data["IsRepositoryOwner"] = ctx.Repo.IsOwner() - ctx.Data["IsRepositoryAdmin"] = ctx.Repo.IsAdmin() - ctx.Data["IsRepositoryWriter"] = ctx.Repo.IsWriter() - - ctx.Data["DisableSSH"] = setting.SSH.Disabled - ctx.Data["DisableHTTP"] = setting.Repository.DisableHTTPGit - ctx.Data["CloneLink"] = repo.CloneLink() - ctx.Data["WikiCloneLink"] = repo.WikiCloneLink() - - if ctx.IsLogged { - ctx.Data["IsWatchingRepo"] = models.IsWatching(ctx.User.ID, repo.ID) - ctx.Data["IsStaringRepo"] = models.IsStaring(ctx.User.ID, repo.ID) + c.Data["Tags"] = tags + c.Repo.Repository.NumTags = len(tags) + + c.Data["Title"] = owner.Name + "/" + repo.Name + c.Data["Repository"] = repo + c.Data["Owner"] = c.Repo.Repository.Owner + c.Data["IsRepositoryOwner"] = c.Repo.IsOwner() + c.Data["IsRepositoryAdmin"] = c.Repo.IsAdmin() + c.Data["IsRepositoryWriter"] = c.Repo.IsWriter() + + c.Data["DisableSSH"] = setting.SSH.Disabled + c.Data["DisableHTTP"] = setting.Repository.DisableHTTPGit + c.Data["CloneLink"] = repo.CloneLink() + c.Data["WikiCloneLink"] = repo.WikiCloneLink() + + if c.IsLogged { + c.Data["IsWatchingRepo"] = models.IsWatching(c.User.ID, repo.ID) + c.Data["IsStaringRepo"] = models.IsStaring(c.User.ID, repo.ID) } // repo is bare and display enable - if ctx.Repo.Repository.IsBare { + if c.Repo.Repository.IsBare { return } - ctx.Data["TagName"] = ctx.Repo.TagName - brs, err := ctx.Repo.GitRepo.GetBranches() + c.Data["TagName"] = c.Repo.TagName + brs, err := c.Repo.GitRepo.GetBranches() if err != nil { - ctx.Handle(500, "GetBranches", err) + c.ServerError("GetBranches", err) return } - ctx.Data["Branches"] = brs - ctx.Data["BrancheCount"] = len(brs) + c.Data["Branches"] = brs + c.Data["BrancheCount"] = len(brs) // If not branch selected, try default one. // If default branch doesn't exists, fall back to some other branch. - if len(ctx.Repo.BranchName) == 0 { - if len(ctx.Repo.Repository.DefaultBranch) > 0 && gitRepo.IsBranchExist(ctx.Repo.Repository.DefaultBranch) { - ctx.Repo.BranchName = ctx.Repo.Repository.DefaultBranch + if len(c.Repo.BranchName) == 0 { + if len(c.Repo.Repository.DefaultBranch) > 0 && gitRepo.IsBranchExist(c.Repo.Repository.DefaultBranch) { + c.Repo.BranchName = c.Repo.Repository.DefaultBranch } else if len(brs) > 0 { - ctx.Repo.BranchName = brs[0] + c.Repo.BranchName = brs[0] } } - ctx.Data["BranchName"] = ctx.Repo.BranchName - ctx.Data["CommitID"] = ctx.Repo.CommitID + c.Data["BranchName"] = c.Repo.BranchName + c.Data["CommitID"] = c.Repo.CommitID - ctx.Data["IsGuest"] = !ctx.Repo.HasAccess() + c.Data["IsGuest"] = !c.Repo.HasAccess() } } // RepoRef handles repository reference name including those contain `/`. func RepoRef() macaron.Handler { - return func(ctx *Context) { + return func(c *Context) { // Empty repository does not have reference information. - if ctx.Repo.Repository.IsBare { + if c.Repo.Repository.IsBare { return } @@ -285,44 +285,44 @@ func RepoRef() macaron.Handler { ) // For API calls. - if ctx.Repo.GitRepo == nil { - repoPath := models.RepoPath(ctx.Repo.Owner.Name, ctx.Repo.Repository.Name) - ctx.Repo.GitRepo, err = git.OpenRepository(repoPath) + if c.Repo.GitRepo == nil { + repoPath := models.RepoPath(c.Repo.Owner.Name, c.Repo.Repository.Name) + c.Repo.GitRepo, err = git.OpenRepository(repoPath) if err != nil { - ctx.Handle(500, "RepoRef Invalid repo "+repoPath, err) + c.Handle(500, "RepoRef Invalid repo "+repoPath, err) return } } // Get default branch. - if len(ctx.Params("*")) == 0 { - refName = ctx.Repo.Repository.DefaultBranch - if !ctx.Repo.GitRepo.IsBranchExist(refName) { - brs, err := ctx.Repo.GitRepo.GetBranches() + if len(c.Params("*")) == 0 { + refName = c.Repo.Repository.DefaultBranch + if !c.Repo.GitRepo.IsBranchExist(refName) { + brs, err := c.Repo.GitRepo.GetBranches() if err != nil { - ctx.Handle(500, "GetBranches", err) + c.Handle(500, "GetBranches", err) return } refName = brs[0] } - ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetBranchCommit(refName) + c.Repo.Commit, err = c.Repo.GitRepo.GetBranchCommit(refName) if err != nil { - ctx.Handle(500, "GetBranchCommit", err) + c.Handle(500, "GetBranchCommit", err) return } - ctx.Repo.CommitID = ctx.Repo.Commit.ID.String() - ctx.Repo.IsViewBranch = true + c.Repo.CommitID = c.Repo.Commit.ID.String() + c.Repo.IsViewBranch = true } else { hasMatched := false - parts := strings.Split(ctx.Params("*"), "/") + parts := strings.Split(c.Params("*"), "/") for i, part := range parts { refName = strings.TrimPrefix(refName+"/"+part, "/") - if ctx.Repo.GitRepo.IsBranchExist(refName) || - ctx.Repo.GitRepo.IsTagExist(refName) { + if c.Repo.GitRepo.IsBranchExist(refName) || + c.Repo.GitRepo.IsTagExist(refName) { if i < len(parts)-1 { - ctx.Repo.TreePath = strings.Join(parts[i+1:], "/") + c.Repo.TreePath = strings.Join(parts[i+1:], "/") } hasMatched = true break @@ -330,97 +330,97 @@ func RepoRef() macaron.Handler { } if !hasMatched && len(parts[0]) == 40 { refName = parts[0] - ctx.Repo.TreePath = strings.Join(parts[1:], "/") + c.Repo.TreePath = strings.Join(parts[1:], "/") } - if ctx.Repo.GitRepo.IsBranchExist(refName) { - ctx.Repo.IsViewBranch = true + if c.Repo.GitRepo.IsBranchExist(refName) { + c.Repo.IsViewBranch = true - ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetBranchCommit(refName) + c.Repo.Commit, err = c.Repo.GitRepo.GetBranchCommit(refName) if err != nil { - ctx.Handle(500, "GetBranchCommit", err) + c.Handle(500, "GetBranchCommit", err) return } - ctx.Repo.CommitID = ctx.Repo.Commit.ID.String() + c.Repo.CommitID = c.Repo.Commit.ID.String() - } else if ctx.Repo.GitRepo.IsTagExist(refName) { - ctx.Repo.IsViewTag = true - ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetTagCommit(refName) + } else if c.Repo.GitRepo.IsTagExist(refName) { + c.Repo.IsViewTag = true + c.Repo.Commit, err = c.Repo.GitRepo.GetTagCommit(refName) if err != nil { - ctx.Handle(500, "GetTagCommit", err) + c.Handle(500, "GetTagCommit", err) return } - ctx.Repo.CommitID = ctx.Repo.Commit.ID.String() + c.Repo.CommitID = c.Repo.Commit.ID.String() } else if len(refName) == 40 { - ctx.Repo.IsViewCommit = true - ctx.Repo.CommitID = refName + c.Repo.IsViewCommit = true + c.Repo.CommitID = refName - ctx.Repo.Commit, err = ctx.Repo.GitRepo.GetCommit(refName) + c.Repo.Commit, err = c.Repo.GitRepo.GetCommit(refName) if err != nil { - ctx.NotFound() + c.NotFound() return } } else { - ctx.Handle(404, "RepoRef invalid repo", fmt.Errorf("branch or tag not exist: %s", refName)) + c.Handle(404, "RepoRef invalid repo", fmt.Errorf("branch or tag not exist: %s", refName)) return } } - ctx.Repo.BranchName = refName - ctx.Data["BranchName"] = ctx.Repo.BranchName - ctx.Data["CommitID"] = ctx.Repo.CommitID - ctx.Data["TreePath"] = ctx.Repo.TreePath - ctx.Data["IsViewBranch"] = ctx.Repo.IsViewBranch - ctx.Data["IsViewTag"] = ctx.Repo.IsViewTag - ctx.Data["IsViewCommit"] = ctx.Repo.IsViewCommit + c.Repo.BranchName = refName + c.Data["BranchName"] = c.Repo.BranchName + c.Data["CommitID"] = c.Repo.CommitID + c.Data["TreePath"] = c.Repo.TreePath + c.Data["IsViewBranch"] = c.Repo.IsViewBranch + c.Data["IsViewTag"] = c.Repo.IsViewTag + c.Data["IsViewCommit"] = c.Repo.IsViewCommit // People who have push access or have fored repository can propose a new pull request. - if ctx.Repo.IsWriter() || (ctx.IsLogged && ctx.User.HasForkedRepo(ctx.Repo.Repository.ID)) { + if c.Repo.IsWriter() || (c.IsLogged && c.User.HasForkedRepo(c.Repo.Repository.ID)) { // Pull request is allowed if this is a fork repository // and base repository accepts pull requests. - if ctx.Repo.Repository.BaseRepo != nil { - if ctx.Repo.Repository.BaseRepo.AllowsPulls() { - ctx.Repo.PullRequest.Allowed = true + if c.Repo.Repository.BaseRepo != nil { + if c.Repo.Repository.BaseRepo.AllowsPulls() { + c.Repo.PullRequest.Allowed = true // In-repository pull requests has higher priority than cross-repository if user is viewing // base repository and 1) has write access to it 2) has forked it. - if ctx.Repo.IsWriter() { - ctx.Data["BaseRepo"] = ctx.Repo.Repository.BaseRepo - ctx.Repo.PullRequest.BaseRepo = ctx.Repo.Repository.BaseRepo - ctx.Repo.PullRequest.HeadInfo = ctx.Repo.Owner.Name + ":" + ctx.Repo.BranchName + if c.Repo.IsWriter() { + c.Data["BaseRepo"] = c.Repo.Repository.BaseRepo + c.Repo.PullRequest.BaseRepo = c.Repo.Repository.BaseRepo + c.Repo.PullRequest.HeadInfo = c.Repo.Owner.Name + ":" + c.Repo.BranchName } else { - ctx.Data["BaseRepo"] = ctx.Repo.Repository - ctx.Repo.PullRequest.BaseRepo = ctx.Repo.Repository - ctx.Repo.PullRequest.HeadInfo = ctx.User.Name + ":" + ctx.Repo.BranchName + c.Data["BaseRepo"] = c.Repo.Repository + c.Repo.PullRequest.BaseRepo = c.Repo.Repository + c.Repo.PullRequest.HeadInfo = c.User.Name + ":" + c.Repo.BranchName } } } else { // Or, this is repository accepts pull requests between branches. - if ctx.Repo.Repository.AllowsPulls() { - ctx.Data["BaseRepo"] = ctx.Repo.Repository - ctx.Repo.PullRequest.BaseRepo = ctx.Repo.Repository - ctx.Repo.PullRequest.Allowed = true - ctx.Repo.PullRequest.SameRepo = true - ctx.Repo.PullRequest.HeadInfo = ctx.Repo.BranchName + if c.Repo.Repository.AllowsPulls() { + c.Data["BaseRepo"] = c.Repo.Repository + c.Repo.PullRequest.BaseRepo = c.Repo.Repository + c.Repo.PullRequest.Allowed = true + c.Repo.PullRequest.SameRepo = true + c.Repo.PullRequest.HeadInfo = c.Repo.BranchName } } } - ctx.Data["PullRequestCtx"] = ctx.Repo.PullRequest + c.Data["PullRequestCtx"] = c.Repo.PullRequest } } func RequireRepoAdmin() macaron.Handler { - return func(ctx *Context) { - if !ctx.IsLogged || (!ctx.Repo.IsAdmin() && !ctx.User.IsAdmin) { - ctx.NotFound() + return func(c *Context) { + if !c.IsLogged || (!c.Repo.IsAdmin() && !c.User.IsAdmin) { + c.NotFound() return } } } func RequireRepoWriter() macaron.Handler { - return func(ctx *Context) { - if !ctx.IsLogged || (!ctx.Repo.IsWriter() && !ctx.User.IsAdmin) { - ctx.NotFound() + return func(c *Context) { + if !c.IsLogged || (!c.Repo.IsWriter() && !c.User.IsAdmin) { + c.NotFound() return } } @@ -428,9 +428,9 @@ func RequireRepoWriter() macaron.Handler { // GitHookService checks if repository Git hooks service has been enabled. func GitHookService() macaron.Handler { - return func(ctx *Context) { - if !ctx.User.CanEditGitHook() { - ctx.NotFound() + return func(c *Context) { + if !c.User.CanEditGitHook() { + c.NotFound() return } } |