aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2014-03-28 10:51:42 +0800
committerLunny Xiao <xiaolunwen@gmail.com>2014-03-28 10:51:42 +0800
commit89258e868b070ff3046de912e1d9a3009f923b62 (patch)
tree96d582c68daf862d0328e0734ede3da88e308fb8 /modules
parent922a189f4061796b0d4afeeb45e508c36cc5e7fc (diff)
parent5344a0300383c4921e4a5810dff58c7686412f0c (diff)
Merge branch 'master' of github.com:gogits/gogs
Diffstat (limited to 'modules')
-rw-r--r--modules/avatar/avatar.go19
-rw-r--r--modules/base/markdown.go8
-rw-r--r--modules/base/tool.go17
-rw-r--r--modules/middleware/repo.go4
4 files changed, 28 insertions, 20 deletions
diff --git a/modules/avatar/avatar.go b/modules/avatar/avatar.go
index 06e2c138..edeb256f 100644
--- a/modules/avatar/avatar.go
+++ b/modules/avatar/avatar.go
@@ -47,6 +47,7 @@ func HashEmail(email string) string {
return hex.EncodeToString(h.Sum(nil))
}
+// Avatar represents the avatar object.
type Avatar struct {
Hash string
AlterImage string // image path
@@ -96,8 +97,8 @@ func (this *Avatar) Encode(wr io.Writer, size int) (err error) {
return
}
defer fd.Close()
- img, err = jpeg.Decode(fd)
- if err != nil {
+
+ if img, err = jpeg.Decode(fd); err != nil {
fd.Seek(0, os.SEEK_SET)
img, err = png.Decode(fd)
}
@@ -110,8 +111,8 @@ func (this *Avatar) Encode(wr io.Writer, size int) (err error) {
}
imgPath = this.AlterImage
}
- img, err = decodeImageFile(imgPath)
- if err != nil {
+
+ if img, err = decodeImageFile(imgPath); err != nil {
return
}
m := resize.Resize(uint(size), 0, img, resize.Lanczos3)
@@ -124,8 +125,7 @@ func (this *Avatar) Update() {
this.imagePath)
}
-func (this *Avatar) UpdateTimeout(timeout time.Duration) error {
- var err error
+func (this *Avatar) UpdateTimeout(timeout time.Duration) (err error) {
select {
case <-time.After(timeout):
err = fmt.Errorf("get gravatar image %s timeout", this.Hash)
@@ -140,8 +140,7 @@ type service struct {
altImage string
}
-func (this *service) mustInt(r *http.Request, defaultValue int, keys ...string) int {
- var v int
+func (this *service) mustInt(r *http.Request, defaultValue int, keys ...string) (v int) {
for _, k := range keys {
if _, err := fmt.Sscanf(r.FormValue(k), "%d", &v); err == nil {
defaultValue = v
@@ -176,8 +175,8 @@ func (this *service) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.Header().Set("ETag", etag)
}
w.Header().Set("Content-Type", "image/jpeg")
- err := avatar.Encode(w, size)
- if err != nil {
+
+ if err := avatar.Encode(w, size); err != nil {
log.Warn("avatar encode error: %v", err)
w.WriteHeader(500)
}
diff --git a/modules/base/markdown.go b/modules/base/markdown.go
index c722f04b..962e1ae1 100644
--- a/modules/base/markdown.go
+++ b/modules/base/markdown.go
@@ -51,6 +51,14 @@ func IsTextFile(data []byte) (string, bool) {
return contentType, false
}
+func IsImageFile(data []byte) (string, bool) {
+ contentType := http.DetectContentType(data)
+ if strings.Index(contentType, "image/") != -1 {
+ return contentType, true
+ }
+ return contentType, false
+}
+
func IsReadmeFile(name string) bool {
name = strings.ToLower(name)
if len(name) < 6 {
diff --git a/modules/base/tool.go b/modules/base/tool.go
index 6f4fbe83..9ddb90f7 100644
--- a/modules/base/tool.go
+++ b/modules/base/tool.go
@@ -412,6 +412,11 @@ func (f StrTo) Int() (int, error) {
return int(v), err
}
+func (f StrTo) Int64() (int64, error) {
+ v, err := strconv.ParseInt(f.String(), 10, 64)
+ return int64(v), err
+}
+
func (f StrTo) String() string {
if f.Exist() {
return string(f)
@@ -541,16 +546,10 @@ func ActionDesc(act Actioner, avatarLink string) string {
}
func DiffTypeToStr(diffType int) string {
- switch diffType {
- case 1:
- return "add"
- case 2:
- return "modify"
- case 3:
- return "del"
- default:
- return "unknown"
+ diffTypes := map[int]string{
+ 1: "add", 2: "modify", 3: "del",
}
+ return diffTypes[diffType]
}
func DiffLineTypeToStr(diffType int) string {
diff --git a/modules/middleware/repo.go b/modules/middleware/repo.go
index bc90c05c..cb4a8632 100644
--- a/modules/middleware/repo.go
+++ b/modules/middleware/repo.go
@@ -56,7 +56,9 @@ func RepoAssignment(redirect bool) martini.Handler {
// get repository
repo, err := models.GetRepositoryByName(user.Id, params["reponame"])
if err != nil {
- if redirect {
+ if err == models.ErrRepoNotExist {
+ ctx.Handle(404, "RepoAssignment", err)
+ } else if redirect {
ctx.Redirect("/")
return
}