40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
package avatars
|
|
|
|
import (
|
|
"github.com/mayswind/ezbookkeeping/pkg/core"
|
|
"github.com/mayswind/ezbookkeeping/pkg/errs"
|
|
"github.com/mayswind/ezbookkeeping/pkg/models"
|
|
"github.com/mayswind/ezbookkeeping/pkg/settings"
|
|
)
|
|
|
|
// AvatarProviderContainer contains the current user avatar provider
|
|
type AvatarProviderContainer struct {
|
|
Current AvatarProvider
|
|
}
|
|
|
|
// Initialize a user avatar provider container singleton instance
|
|
var (
|
|
Container = &AvatarProviderContainer{}
|
|
)
|
|
|
|
// InitializeAvatarProvider initializes the current user avatar provider according to the config
|
|
func InitializeAvatarProvider(config *settings.Config) error {
|
|
if config.AvatarProvider == core.USER_AVATAR_PROVIDER_INTERNAL {
|
|
Container.Current = NewInternalStorageAvatarProvider(config)
|
|
return nil
|
|
} else if config.AvatarProvider == core.USER_AVATAR_PROVIDER_GRAVATAR {
|
|
Container.Current = NewGravatarAvatarProvider()
|
|
return nil
|
|
} else if config.AvatarProvider == "" {
|
|
Container.Current = NewNullAvatarProvider()
|
|
return nil
|
|
}
|
|
|
|
return errs.ErrInvalidAvatarProvider
|
|
}
|
|
|
|
// GetAvatarUrl returns the avatar url by the current user avatar provider
|
|
func (p *AvatarProviderContainer) GetAvatarUrl(user *models.User) string {
|
|
return p.Current.GetAvatarUrl(user)
|
|
}
|