|
|
@ -81,7 +81,7 @@ func LibravatarURL(email string) (*url.URL, error) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// HashedAvatarLink returns an avatar link for a provided email
|
|
|
|
// 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)) |
|
|
|
lowerEmail := strings.ToLower(strings.TrimSpace(email)) |
|
|
|
sum := fmt.Sprintf("%x", md5.Sum([]byte(lowerEmail))) |
|
|
|
sum := fmt.Sprintf("%x", md5.Sum([]byte(lowerEmail))) |
|
|
|
_, _ = cache.GetString("Avatar:"+sum, func() (string, error) { |
|
|
|
_, _ = cache.GetString("Avatar:"+sum, func() (string, error) { |
|
|
@ -108,6 +108,9 @@ func HashedAvatarLink(email string) string { |
|
|
|
} |
|
|
|
} |
|
|
|
return lowerEmail, nil |
|
|
|
return lowerEmail, nil |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
if size > 0 { |
|
|
|
|
|
|
|
return setting.AppSubURL + "/avatar/" + url.PathEscape(sum) + "?size=" + strconv.Itoa(size) |
|
|
|
|
|
|
|
} |
|
|
|
return setting.AppSubURL + "/avatar/" + url.PathEscape(sum) |
|
|
|
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
|
|
|
|
// 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
|
|
|
|
// does DNS lookups. Avoid it by issuing a redirect so we don't block
|
|
|
|
// the template render with network requests.
|
|
|
|
// the template render with network requests.
|
|
|
|
return HashedAvatarLink(email) |
|
|
|
return HashedAvatarLink(email, size) |
|
|
|
} else if !setting.DisableGravatar { |
|
|
|
} else if !setting.DisableGravatar { |
|
|
|
// copy GravatarSourceURL, because we will modify its Path.
|
|
|
|
// copy GravatarSourceURL, because we will modify its Path.
|
|
|
|
copyOfGravatarSourceURL := *setting.GravatarSourceURL |
|
|
|
copyOfGravatarSourceURL := *setting.GravatarSourceURL |
|
|
|