32 lines
842 B
Go
32 lines
842 B
Go
package avatars
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/mayswind/ezbookkeeping/pkg/models"
|
|
"github.com/mayswind/ezbookkeeping/pkg/utils"
|
|
)
|
|
|
|
// Reference: https://en.gravatar.com/site/implement/hash/
|
|
const gravatarUrlFormat = "https://www.gravatar.com/avatar/%s"
|
|
|
|
// GravatarAvatarProvider represents the gravatar avatar provider
|
|
type GravatarAvatarProvider struct {
|
|
}
|
|
|
|
// NewGravatarAvatarProvider returns a new gravatar avatar provider
|
|
func NewGravatarAvatarProvider() *GravatarAvatarProvider {
|
|
return &GravatarAvatarProvider{}
|
|
}
|
|
|
|
// GetAvatarUrl returns the gravatar url
|
|
func (p *GravatarAvatarProvider) GetAvatarUrl(user *models.User) string {
|
|
email := user.Email
|
|
email = strings.TrimSpace(email)
|
|
email = strings.ToLower(email)
|
|
emailMd5 := utils.MD5EncodeToString([]byte(email))
|
|
|
|
return fmt.Sprintf(gravatarUrlFormat, emailMd5)
|
|
}
|