Browse Source

Add Go error handlings

HEAD
Yang Luo 2 years ago
parent
commit
8d717a8b93
9 changed files with 111 additions and 41 deletions
  1. +6
    -1
      controllers/store.go
  2. +6
    -1
      controllers/util_record.go
  3. +12
    -2
      controllers/video.go
  4. +24
    -5
      object/file.go
  5. +13
    -5
      object/store_provider.go
  6. +14
    -3
      object/store_test.go
  7. +8
    -2
      object/video.go
  8. +24
    -21
      storage/aliyun.go
  9. +4
    -1
      storage/storage_test.go

+ 6
- 1
controllers/store.go View File

@@ -41,7 +41,12 @@ func (c *ApiController) GetStore() {
return
}

store.Populate()
err = store.Populate()
if err != nil {
c.ResponseError(err.Error())
return
}

c.ResponseOk(store)
}



+ 6
- 1
controllers/util_record.go View File

@@ -37,7 +37,12 @@ func addRecord(c *ApiController, userName string, requestUri string) {
record.RequestUri = requestUri
}

util.SafeGoroutine(func() { casdoorsdk.AddRecord(record) })
util.SafeGoroutine(func() {
_, err := casdoorsdk.AddRecord(record)
if err != nil {
panic(err)
}
})
}

func addRecordForFile(c *ApiController, userName string, action string, storeId string, key string, filename string, isLeaf bool) {


+ 12
- 2
controllers/video.go View File

@@ -38,7 +38,12 @@ func (c *ApiController) GetVideo() {
id := c.Input().Get("id")

video, err := object.GetVideo(id)
video.Populate()
if err != nil {
c.ResponseError(err.Error())
return
}

err = video.Populate()
if err != nil {
c.ResponseError(err.Error())
return
@@ -161,7 +166,12 @@ func (c *ApiController) UploadVideo() {
Labels: []*object.Label{},
DataUrls: []string{},
}
object.AddVideo(video)
_, err = object.AddVideo(video)
if err != nil {
c.ResponseError(err.Error())
return
}

c.ResponseOk(fileId)
} else {
c.ResponseError("videoId is empty")


+ 24
- 5
object/file.go View File

@@ -33,15 +33,24 @@ func AddFile(storeId string, key string, isLeaf bool, filename string, file mult
if err != nil {
return false, nil, err
}

bs := fileBuffer.Bytes()
storage.PutObject(store.Bucket, objectKey, fileBuffer)
err = storage.PutObject(store.Bucket, objectKey, fileBuffer)
if err != nil {
return false, nil, err
}

return true, bs, nil
} else {
objectKey = fmt.Sprintf("%s/%s/_hidden.ini", key, filename)
objectKey = strings.TrimLeft(objectKey, "/")
fileBuffer = bytes.NewBuffer(nil)
bs := fileBuffer.Bytes()
storage.PutObject(store.Bucket, objectKey, fileBuffer)
err = storage.PutObject(store.Bucket, objectKey, fileBuffer)
if err != nil {
return false, nil, err
}

return true, bs, nil
}
}
@@ -56,11 +65,21 @@ func DeleteFile(storeId string, key string, isLeaf bool) (bool, error) {
}

if isLeaf {
storage.DeleteObject(store.Bucket, key)
err = storage.DeleteObject(store.Bucket, key)
if err != nil {
return false, err
}
} else {
objects := storage.ListObjects(store.Bucket, key)
objects, err := storage.ListObjects(store.Bucket, key)
if err != nil {
return false, err
}

for _, object := range objects {
storage.DeleteObject(store.Bucket, object.Key)
err = storage.DeleteObject(store.Bucket, object.Key)
if err != nil {
return false, err
}
}
}
return true, nil


+ 13
- 5
object/store_provider.go View File

@@ -66,8 +66,11 @@ func isObjectLeaf(object *oss.ObjectProperties) bool {
return isLeaf
}

func (store *Store) Populate() {
objects := storage.ListObjects(store.Bucket, "")
func (store *Store) Populate() error {
objects, err := storage.ListObjects(store.Bucket, "")
if err != nil {
return err
}

if store.FileTree == nil {
store.FileTree = &File{
@@ -102,10 +105,15 @@ func (store *Store) Populate() {

//fmt.Printf("%s, %d, %v\n", object.Key, object.Size, object.LastModified)
}

return nil
}

func (store *Store) GetVideoData() []string {
objects := storage.ListObjects(store.Bucket, "2023/视频附件")
func (store *Store) GetVideoData() ([]string, error) {
objects, err := storage.ListObjects(store.Bucket, "2023/视频附件")
if err != nil {
return nil, err
}

res := []string{}
for _, object := range objects {
@@ -117,5 +125,5 @@ func (store *Store) GetVideoData() []string {
res = append(res, url)
}

return res
return res, nil
}

+ 14
- 3
object/store_test.go View File

@@ -5,7 +5,18 @@ import "testing"
func TestUpdateStoreFolders(t *testing.T) {
InitConfig()

store, _ := getStore("admin", "default")
//store.Populate()
store.GetVideoData()
store, err := getStore("admin", "default")
if err != nil {
panic(err)
}

//err = store.Populate()
//if err != nil {
// panic(err)
//}

_, err = store.GetVideoData()
if err != nil {
panic(err)
}
}

+ 8
- 2
object/video.go View File

@@ -114,7 +114,13 @@ func (video *Video) GetId() string {
return fmt.Sprintf("%s/%s", video.Owner, video.Name)
}

func (video *Video) Populate() {
func (video *Video) Populate() error {
store, _ := getStore("admin", "default")
video.DataUrls = store.GetVideoData()
dataUrls, err := store.GetVideoData()
if err != nil {
return err
}

video.DataUrls = dataUrls
return nil
}

+ 24
- 21
storage/aliyun.go View File

@@ -7,7 +7,7 @@ import (
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func getBucket(bucketName string) *oss.Bucket {
func getBucket(bucketName string) (*oss.Bucket, error) {
client, err := oss.New(endpoint, clientId, clientSecret)
if err != nil {
panic(err)
@@ -15,28 +15,29 @@ func getBucket(bucketName string) *oss.Bucket {

bucket, err := client.Bucket(bucketName)
if err != nil {
panic(err)
return nil, err
}

return bucket
return bucket, nil
}

func ListObjects(bucketName string, prefix string) []oss.ObjectProperties {
res := []oss.ObjectProperties{}

func ListObjects(bucketName string, prefix string) ([]oss.ObjectProperties, error) {
if bucketName == "" {
return res
return nil, fmt.Errorf("bucket name is empty")
}

bucket := getBucket(bucketName)
bucket, err := getBucket(bucketName)
if err != nil {
return nil, err
}

res := []oss.ObjectProperties{}
marker := oss.Marker("")
i := 0
for {
resp, err := bucket.ListObjects(oss.Prefix(prefix), oss.MaxKeys(1000), marker)
if err != nil {
fmt.Println(err.Error())
return res
return nil, err
}

marker = oss.Marker(resp.NextMarker)
@@ -52,23 +53,25 @@ func ListObjects(bucketName string, prefix string) []oss.ObjectProperties {
}
}

return res
return res, nil
}

func PutObject(bucketName string, key string, fileBuffer *bytes.Buffer) {
bucket := getBucket(bucketName)

err := bucket.PutObject(key, fileBuffer)
func PutObject(bucketName string, key string, fileBuffer *bytes.Buffer) error {
bucket, err := getBucket(bucketName)
if err != nil {
panic(err)
return err
}
}

func DeleteObject(bucketName string, key string) {
bucket := getBucket(bucketName)
err = bucket.PutObject(key, fileBuffer)
return err
}

err := bucket.DeleteObject(key)
func DeleteObject(bucketName string, key string) error {
bucket, err := getBucket(bucketName)
if err != nil {
panic(err)
return err
}

err = bucket.DeleteObject(key)
return err
}

+ 4
- 1
storage/storage_test.go View File

@@ -3,5 +3,8 @@ package storage
import "testing"

func TestStorage(t *testing.T) {
ListObjects("casibase", "")
_, err := ListObjects("casibase", "")
if err != nil {
panic(err)
}
}

Loading…
Cancel
Save