diff --git a/app/rest/avatar/avatar.go b/app/rest/avatar/avatar.go index 62b5424c..f28828df 100644 --- a/app/rest/avatar/avatar.go +++ b/app/rest/avatar/avatar.go @@ -48,8 +48,9 @@ func (p *Proxy) Put(u store.User) (avatarURL string, err error) { return "", errors.Wrapf(err, "failed to get avatar for user %s from %s", u.ID, u.Picture) } defer func() { - e := resp.Body.Close() - log.Printf("[WARN] can't close response body, %s", e) + if e := resp.Body.Close(); e != nil { + log.Printf("[WARN] can't close response body, %s", e) + } }() pngWr := &bytes.Buffer{} @@ -58,7 +59,7 @@ func (p *Proxy) Put(u store.User) (avatarURL string, err error) { } location := p.location(u.ID) - if err = os.Mkdir(location, 0600); err != nil { + if err = os.Mkdir(location, 0600); err != nil && !strings.Contains(err.Error(), "file exists") { return "", errors.Wrapf(err, "failed to make avatar location %s", location) } @@ -68,8 +69,9 @@ func (p *Proxy) Put(u store.User) (avatarURL string, err error) { return "", errors.Wrapf(err, "can't create file %s", avFile) } defer func() { - e := fh.Close() - log.Printf("[WARN] can't close avatar file %s, %s", avFile, e) + if e := fh.Close(); e != nil { + log.Printf("[WARN] can't close avatar file %s, %s", avFile, e) + } }() if _, err = io.Copy(fh, pngWr); err != nil { @@ -92,8 +94,9 @@ func (p *Proxy) Routes() chi.Router { } defer func() { - e := fh.Close() - log.Printf("[WARN] can't close avatar file %s, %s", avFile, e) + if e := fh.Close(); e != nil { + log.Printf("[WARN] can't close avatar file %s, %s", avFile, e) + } }() w.Header().Set("Content-Type", "image/png")