]> source.dussan.org Git - gitea.git/commitdiff
Send size to /avatars if requested (#15459)
authorzeripath <art27@cantab.net>
Fri, 16 Apr 2021 22:22:25 +0000 (23:22 +0100)
committerGitHub <noreply@github.com>
Fri, 16 Apr 2021 22:22:25 +0000 (00:22 +0200)
If an avatar is requested in a particular size ensure that /avatars also gets the size request

Fix #15453

Signed-off-by: Andrew Thornton <art27@cantab.net>
models/avatar.go
models/user_avatar.go

index ad1e19d0d7cd06bade12cb749e2a29f46d6149c3..de416a1dbadd9c55d24fc2b7212fb65cbe7a3980 100644 (file)
@@ -81,7 +81,7 @@ func LibravatarURL(email string) (*url.URL, error) {
 }
 
 // HashedAvatarLink returns an avatar link for a provided email
-func HashedAvatarLink(email string) string {
+func HashedAvatarLink(email string, size int) string {
        lowerEmail := strings.ToLower(strings.TrimSpace(email))
        sum := fmt.Sprintf("%x", md5.Sum([]byte(lowerEmail)))
        _, _ = cache.GetString("Avatar:"+sum, func() (string, error) {
@@ -108,6 +108,9 @@ func HashedAvatarLink(email string) string {
                }
                return lowerEmail, nil
        })
+       if size > 0 {
+               return setting.AppSubURL + "/avatar/" + url.PathEscape(sum) + "?size=" + strconv.Itoa(size)
+       }
        return setting.AppSubURL + "/avatar/" + url.PathEscape(sum)
 }
 
@@ -129,7 +132,7 @@ func SizedAvatarLink(email string, size int) string {
                // This is the slow path that would need to call LibravatarURL() which
                // does DNS lookups. Avoid it by issuing a redirect so we don't block
                // the template render with network requests.
-               return HashedAvatarLink(email)
+               return HashedAvatarLink(email, size)
        } else if !setting.DisableGravatar {
                // copy GravatarSourceURL, because we will modify its Path.
                copyOfGravatarSourceURL := *setting.GravatarSourceURL
index 871e176599cf8937b890b12cd79ba88b8a64b991..d336684a27d7018fa32a7b816547ef48752bdadc 100644 (file)
@@ -82,6 +82,9 @@ func (u *User) RealSizedAvatarLink(size int) string {
                if u.Avatar == "" {
                        return DefaultAvatarLink()
                }
+               if size > 0 {
+                       return setting.AppSubURL + "/avatars/" + u.Avatar + "?size=" + strconv.Itoa(size)
+               }
                return setting.AppSubURL + "/avatars/" + u.Avatar
        case setting.DisableGravatar, setting.OfflineMode:
                if u.Avatar == "" {
@@ -89,7 +92,9 @@ func (u *User) RealSizedAvatarLink(size int) string {
                                log.Error("GenerateRandomAvatar: %v", err)
                        }
                }
-
+               if size > 0 {
+                       return setting.AppSubURL + "/avatars/" + u.Avatar + "?size=" + strconv.Itoa(size)
+               }
                return setting.AppSubURL + "/avatars/" + u.Avatar
        }
        return SizedAvatarLink(u.AvatarEmail, size)