Redesign UserMenu, now with support for Gravatar
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
package gravatar
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/deluan/navidrome/utils"
|
||||
)
|
||||
|
||||
const baseUrl = "https://www.gravatar.com/avatar"
|
||||
const defaultSize = 80
|
||||
const maxSize = 2048
|
||||
|
||||
func Url(email string, size int) string {
|
||||
email = strings.ToLower(email)
|
||||
email = strings.TrimSpace(email)
|
||||
hash := md5.Sum([]byte(email))
|
||||
if size < 1 {
|
||||
size = defaultSize
|
||||
}
|
||||
size = utils.MinInt(maxSize, size)
|
||||
|
||||
return fmt.Sprintf("%s/%x?s=%d", baseUrl, hash, size)
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package gravatar_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/deluan/navidrome/core/gravatar"
|
||||
"github.com/deluan/navidrome/log"
|
||||
"github.com/deluan/navidrome/tests"
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
func TestGravatar(t *testing.T) {
|
||||
tests.Init(t, false)
|
||||
log.SetLevel(log.LevelCritical)
|
||||
RegisterFailHandler(Fail)
|
||||
RunSpecs(t, "Gravatar Test Suite")
|
||||
}
|
||||
|
||||
var _ = Describe("Gravatar", func() {
|
||||
It("returns a well formatted gravatar URL", func() {
|
||||
Expect(gravatar.Url("my@email.com", 100)).To(Equal("https://www.gravatar.com/avatar/4f384e9f3e8e625aae72b52658323d70?s=100"))
|
||||
})
|
||||
It("sets the default size", func() {
|
||||
Expect(gravatar.Url("my@email.com", 0)).To(Equal("https://www.gravatar.com/avatar/4f384e9f3e8e625aae72b52658323d70?s=80"))
|
||||
})
|
||||
It("caps maximum size", func() {
|
||||
Expect(gravatar.Url("my@email.com", 3000)).To(Equal("https://www.gravatar.com/avatar/4f384e9f3e8e625aae72b52658323d70?s=2048"))
|
||||
})
|
||||
It("ignores case", func() {
|
||||
Expect(gravatar.Url("MY@email.com", 0)).To(Equal(gravatar.Url("my@email.com", 0)))
|
||||
})
|
||||
It("ignores spaces", func() {
|
||||
Expect(gravatar.Url(" my@email.com ", 0)).To(Equal(gravatar.Url("my@email.com", 0)))
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user