Skip to content

Commit 4d0a95c

Browse files
Refactor uploadAvatar
1 parent 1875a78 commit 4d0a95c

File tree

2 files changed

+8
-41
lines changed

2 files changed

+8
-41
lines changed

models/repo.go

Lines changed: 2 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,9 @@ import (
1212
"errors"
1313
"fmt"
1414
"html/template"
15-
"image"
1615

1716
// Needed for jpeg support
1817
_ "image/jpeg"
19-
"image/png"
2018
"io/ioutil"
2119
"net/url"
2220
"os"
@@ -2544,7 +2542,7 @@ func (repo *Repository) generateRandomAvatar(e Engine) error {
25442542
}
25452543

25462544
repo.Avatar = idToString
2547-
if err := repo.uploadAvatarToBucket(img); err != nil {
2545+
if err := uploadImage(setting.RepositoryAvatarUploadPath, repo.Avatar, img); err != nil {
25482546
return err
25492547
}
25502548

@@ -2608,37 +2606,6 @@ func (repo *Repository) avatarLink(e Engine) string {
26082606
return link
26092607
}
26102608

2611-
// uploadAvatarToBucket uploads repo avatar to bucket
2612-
func (repo *Repository) uploadAvatarToBucket(img image.Image) error {
2613-
ctx := context.Background()
2614-
bucket, err := blob.OpenBucket(ctx, setting.FileStorage.BucketURL)
2615-
if err != nil {
2616-
return fmt.Errorf("could not open bucket: %v", err)
2617-
}
2618-
bucket = blob.PrefixedBucket(bucket, setting.RepositoryAvatarUploadPath)
2619-
defer bucket.Close()
2620-
2621-
buf := new(bytes.Buffer)
2622-
if err = png.Encode(buf, img); err != nil {
2623-
return fmt.Errorf("failed to encode: %v", err)
2624-
}
2625-
imgData := buf.Bytes()
2626-
2627-
bw, err := bucket.NewWriter(ctx, repo.Avatar, nil)
2628-
if err != nil {
2629-
return fmt.Errorf("failed to obtain writer: %v", err)
2630-
}
2631-
2632-
if _, err = bw.Write(imgData); err != nil {
2633-
return fmt.Errorf("failed to write: %v", err)
2634-
}
2635-
if err = bw.Close(); err != nil {
2636-
return fmt.Errorf("failed to close: %v", err)
2637-
}
2638-
2639-
return nil
2640-
}
2641-
26422609
// UploadAvatar saves custom avatar for repository.
26432610
// FIXME: split uploads to different subdirs in case we have massive number of repos.
26442611
func (repo *Repository) UploadAvatar(data []byte) error {
@@ -2664,7 +2631,7 @@ func (repo *Repository) UploadAvatar(data []byte) error {
26642631
return fmt.Errorf("UploadAvatar: Update repository avatar: %v", err)
26652632
}
26662633

2667-
if err := repo.uploadAvatarToBucket(m); err != nil {
2634+
if err := uploadImage(setting.RepositoryAvatarUploadPath, repo.Avatar, m); err != nil {
26682635
return err
26692636
}
26702637

models/user.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ func (u *User) generateRandomAvatar(e Engine) error {
350350
u.Avatar = fmt.Sprintf("%d", u.ID)
351351
}
352352

353-
if err := u.uploadAvatarToBucket(img); err != nil {
353+
if err := uploadImage(setting.AvatarUploadPath, u.Avatar, img); err != nil {
354354
return err
355355
}
356356

@@ -500,14 +500,14 @@ func (u *User) IsPasswordSet() bool {
500500
return len(u.Passwd) > 0
501501
}
502502

503-
// uploadAvatarToBucket uploads avatar to bucket
504-
func (u *User) uploadAvatarToBucket(img image.Image) error {
503+
// uploadImage uploads avatar to bucket
504+
func uploadImage(bucketPrefix, objKey string, img image.Image) error {
505505
ctx := context.Background()
506506
bucket, err := blob.OpenBucket(ctx, setting.FileStorage.BucketURL)
507507
if err != nil {
508508
return fmt.Errorf("could not open bucket: %v", err)
509509
}
510-
bucket = blob.PrefixedBucket(bucket, setting.AvatarUploadPath)
510+
bucket = blob.PrefixedBucket(bucket, bucketPrefix)
511511
defer bucket.Close()
512512

513513
buf := new(bytes.Buffer)
@@ -516,7 +516,7 @@ func (u *User) uploadAvatarToBucket(img image.Image) error {
516516
}
517517
imgData := buf.Bytes()
518518

519-
bw, err := bucket.NewWriter(ctx, u.Avatar, nil)
519+
bw, err := bucket.NewWriter(ctx, objKey, nil)
520520
if err != nil {
521521
return fmt.Errorf("failed to obtain writer: %v", err)
522522
}
@@ -550,7 +550,7 @@ func (u *User) UploadAvatar(data []byte) error {
550550
return fmt.Errorf("updateUser: %v", err)
551551
}
552552

553-
if err := u.uploadAvatarToBucket(m); err != nil {
553+
if err := uploadImage(setting.AvatarUploadPath, u.Avatar, m); err != nil {
554554
return err
555555
}
556556
return sess.Commit()

0 commit comments

Comments
 (0)