add default avatar

This commit is contained in:
Umputun
2018-02-14 15:42:40 -06:00
parent b9253cbde9
commit 6c9dee03a6
2 changed files with 20 additions and 5 deletions
+8 -3
View File
@@ -43,8 +43,9 @@ var opts struct {
FacebookCID string `long:"facebook-cid" env:"REMARK_FACEBOOK_CID" description:"Facebook OAuth client ID"`
FacebookCSEC string `long:"facebook-csec" env:"REMARK_FACEBOOK_CSEC" description:"Facebook OAuth client secret"`
AvatarStore string `long:"avatars" env:"AVATAR_STORE" default:"./var/avatars" description:"path to avatars directory"`
Port int `long:"port" env:"REMARK_PORT" default:"8080" description:"port"`
AvatarStore string `long:"avatars" env:"AVATAR_STORE" default:"./var/avatars" description:"path to avatars directory"`
DefaultAvatar string `long:"avatar-def" env:"AVATAR_DEF" default:"./var/avatars/remark.image" description:"default avatar"`
Port int `long:"port" env:"REMARK_PORT" default:"8080" description:"port"`
} `command:"server" description:"run server"`
ImportCommand struct {
@@ -106,7 +107,11 @@ func main() {
Exporter: &exporter,
AuthProviders: makeAuthProviders(sessionStore),
Cache: common.NewLoadingCache(4*time.Hour, 15*time.Minute, postFlushFn),
AvatarProxy: avatar.Proxy{StorePath: opts.ServerCommand.AvatarStore, RoutePath: "/api/v1/avatar"},
AvatarProxy: avatar.Proxy{
StorePath: opts.ServerCommand.AvatarStore,
RoutePath: "/api/v1/avatar",
DefaultAvatar: opts.ServerCommand.DefaultAvatar,
},
}
if opts.DevMode {
+12 -2
View File
@@ -34,7 +34,11 @@ type Proxy struct {
// Put gets original avatar url from user info and returns proxied
func (p *Proxy) Put(u store.User) (avatarURL string, err error) {
if u.Picture == "" {
if p.DefaultAvatar != "" {
return p.RoutePath + "/" + p.DefaultAvatar, nil
}
return "", errors.Errorf("no picture for %s", u.ID)
}
@@ -82,8 +86,14 @@ func (p *Proxy) Routes() chi.Router {
avFile := path.Join(location, avatar)
fh, err := os.Open(avFile)
if err != nil {
common.SendErrorJSON(w, r, http.StatusBadRequest, err, "can't load avatar")
return
if p.DefaultAvatar == "" {
common.SendErrorJSON(w, r, http.StatusBadRequest, err, "can't load avatar")
return
}
if fh, err = os.Open(path.Join(p.StorePath, p.DefaultAvatar)); err != nil {
common.SendErrorJSON(w, r, http.StatusBadRequest, err, "can't load default avatar")
return
}
}
defer func() {