Skip to content

Commit

Permalink
router/repo: code refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
unknwon committed Aug 30, 2016
1 parent 2a13f68 commit 780cc2d
Show file tree
Hide file tree
Showing 13 changed files with 233 additions and 241 deletions.
2 changes: 1 addition & 1 deletion gogs.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (
"github.com/gogits/gogs/modules/setting"
)

const APP_VER = "0.9.94.0829"
const APP_VER = "0.9.94.0830"

func init() {
runtime.GOMAXPROCS(runtime.NumCPU())
Expand Down
24 changes: 6 additions & 18 deletions modules/base/tool.go
Original file line number Diff line number Diff line change
Expand Up @@ -518,26 +518,14 @@ func IsLetter(ch rune) bool {
return 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_' || ch >= 0x80 && unicode.IsLetter(ch)
}

func IsTextFile(data []byte) (string, bool) {
contentType := http.DetectContentType(data)
if strings.Index(contentType, "text/") != -1 {
return contentType, true
}
return contentType, false
func IsTextFile(data []byte) bool {
return strings.Index(http.DetectContentType(data), "text/") != -1
}

func IsImageFile(data []byte) (string, bool) {
contentType := http.DetectContentType(data)
if strings.Index(contentType, "image/") != -1 {
return contentType, true
}
return contentType, false
func IsImageFile(data []byte) bool {
return strings.Index(http.DetectContentType(data), "image/") != -1
}

func IsPDFFile(data []byte) (string, bool) {
contentType := http.DetectContentType(data)
if strings.Index(contentType, "application/pdf") != -1 {
return contentType, true
}
return contentType, false
func IsPDFFile(data []byte) bool {
return strings.Index(http.DetectContentType(data), "application/pdf") != -1
}
11 changes: 5 additions & 6 deletions modules/context/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,13 +105,12 @@ func (ctx *Context) Handle(status int, title string, err error) {
ctx.HTML(status, base.TplName(fmt.Sprintf("status/%d", status)))
}

// HandleError use error check function to determine if server should
// response as client input error or server internal error.
// It responses with given status code for client error,
// or error context description for logging purpose of server error.
func (ctx *Context) HandleError(title string, errck func(error) bool, err error, status int) {
// NotFoundOrServerError use error check function to determine if the error
// is about not found. It responses with 404 status code for not found error,
// or error context description for logging purpose of 500 server error.
func (ctx *Context) NotFoundOrServerError(title string, errck func(error) bool, err error) {
if errck(err) {
ctx.Error(status, err.Error())
ctx.Handle(404, title, err)
return
}

Expand Down
13 changes: 10 additions & 3 deletions modules/context/repo.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ type Repository struct {
CommitsCount int64
Mirror *models.Mirror

PullRequest *PullRequest
PullRequest *PullRequest
}

// IsOwner returns true if current user is the owner of repository.
Expand All @@ -71,6 +71,11 @@ func (r *Repository) HasAccess() bool {
return r.AccessMode >= models.ACCESS_MODE_READ
}

// CanEnableEditor returns true if repository is editable and user has proper access level.
func (r *Repository) CanEnableEditor() bool {
return r.Repository.CanEnableEditor() && r.IsViewBranch && r.IsWriter()
}

// GetEditorconfig returns the .editorconfig definition if found in the
// HEAD of the default repo branch.
func (r *Repository) GetEditorconfig() (*editorconfig.Editorconfig, error) {
Expand Down Expand Up @@ -167,6 +172,7 @@ func RepoAssignment(args ...bool) macaron.Handler {
}
}
ctx.Repo.Owner = owner
ctx.Data["Username"] = ctx.Repo.Owner.Name

// Get repository.
repo, err := models.GetRepositoryByName(owner.ID, repoName)
Expand Down Expand Up @@ -221,6 +227,7 @@ func RepoAssignment(args ...bool) macaron.Handler {
}

ctx.Repo.Repository = repo
ctx.Data["RepoName"] = ctx.Repo.Repository.Name
ctx.Data["IsBareRepo"] = ctx.Repo.Repository.IsBare

gitRepo, err := git.OpenRepository(models.RepoPath(userName, repoName))
Expand Down Expand Up @@ -348,12 +355,11 @@ func RepoRef() macaron.Handler {
// For API calls.
if ctx.Repo.GitRepo == nil {
repoPath := models.RepoPath(ctx.Repo.Owner.Name, ctx.Repo.Repository.Name)
gitRepo, err := git.OpenRepository(repoPath)
ctx.Repo.GitRepo, err = git.OpenRepository(repoPath)
if err != nil {
ctx.Handle(500, "RepoRef Invalid repo "+repoPath, err)
return
}
ctx.Repo.GitRepo = gitRepo
}

// Get default branch.
Expand Down Expand Up @@ -431,6 +437,7 @@ func RepoRef() macaron.Handler {
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
Expand Down
6 changes: 2 additions & 4 deletions routers/repo/download.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,8 @@ func ServeData(ctx *context.Context, name string, reader io.Reader) error {
buf = buf[:n]
}

_, isTextFile := base.IsTextFile(buf)
if !isTextFile {
_, isImageFile := base.IsImageFile(buf)
if !isImageFile {
if !base.IsTextFile(buf) {
if !base.IsImageFile(buf) {
ctx.Resp.Header().Set("Content-Disposition", "attachment; filename=\""+path.Base(ctx.Repo.TreePath)+"\"")
ctx.Resp.Header().Set("Content-Transfer-Encoding", "binary")
}
Expand Down
3 changes: 1 addition & 2 deletions routers/repo/editor.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,7 @@ func editFile(ctx *context.Context, isNewFile bool) {
}

// Only text file are editable online.
_, isTextFile := base.IsTextFile(buf)
if !isTextFile {
if !base.IsTextFile(buf) {
ctx.Handle(404, "", nil)
return
}
Expand Down
6 changes: 3 additions & 3 deletions routers/repo/issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -795,7 +795,7 @@ func UpdateIssueAssignee(ctx *context.Context) {
func NewComment(ctx *context.Context, form auth.CreateCommentForm) {
issue, err := models.GetIssueByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
if err != nil {
ctx.HandleError("GetIssueByIndex", models.IsErrIssueNotExist, err, 404)
ctx.NotFoundOrServerError("GetIssueByIndex", models.IsErrIssueNotExist, err)
return
}

Expand Down Expand Up @@ -881,7 +881,7 @@ func NewComment(ctx *context.Context, form auth.CreateCommentForm) {
func UpdateCommentContent(ctx *context.Context) {
comment, err := models.GetCommentByID(ctx.ParamsInt64(":id"))
if err != nil {
ctx.HandleError("GetCommentByID", models.IsErrCommentNotExist, err, 404)
ctx.NotFoundOrServerError("GetCommentByID", models.IsErrCommentNotExist, err)
return
}

Expand Down Expand Up @@ -913,7 +913,7 @@ func UpdateCommentContent(ctx *context.Context) {
func DeleteComment(ctx *context.Context) {
comment, err := models.GetCommentByID(ctx.ParamsInt64(":id"))
if err != nil {
ctx.HandleError("GetCommentByID", models.IsErrCommentNotExist, err, 404)
ctx.NotFoundOrServerError("GetCommentByID", models.IsErrCommentNotExist, err)
return
}

Expand Down
Loading

0 comments on commit 780cc2d

Please sign in to comment.