diff --git a/controllers/store.go b/controllers/store.go index 8a8a799..98a7e75 100644 --- a/controllers/store.go +++ b/controllers/store.go @@ -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) } diff --git a/controllers/util_record.go b/controllers/util_record.go index c92fbd0..b72a0ec 100644 --- a/controllers/util_record.go +++ b/controllers/util_record.go @@ -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) { diff --git a/controllers/video.go b/controllers/video.go index 12b9816..8961ff1 100644 --- a/controllers/video.go +++ b/controllers/video.go @@ -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") diff --git a/object/file.go b/object/file.go index 9d205a4..3f26932 100644 --- a/object/file.go +++ b/object/file.go @@ -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 diff --git a/object/store_provider.go b/object/store_provider.go index f243b16..b8aadd7 100644 --- a/object/store_provider.go +++ b/object/store_provider.go @@ -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 } diff --git a/object/store_test.go b/object/store_test.go index 168adcc..fbbe19f 100644 --- a/object/store_test.go +++ b/object/store_test.go @@ -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) + } } diff --git a/object/video.go b/object/video.go index 689e857..e3fe256 100644 --- a/object/video.go +++ b/object/video.go @@ -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 } diff --git a/storage/aliyun.go b/storage/aliyun.go index a28d296..fa300c4 100644 --- a/storage/aliyun.go +++ b/storage/aliyun.go @@ -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 } + + err = bucket.PutObject(key, fileBuffer) + return err } -func DeleteObject(bucketName string, key string) { - bucket := getBucket(bucketName) - - 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 } diff --git a/storage/storage_test.go b/storage/storage_test.go index ca22f71..f1c6f12 100644 --- a/storage/storage_test.go +++ b/storage/storage_test.go @@ -3,5 +3,8 @@ package storage import "testing" func TestStorage(t *testing.T) { - ListObjects("casibase", "") + _, err := ListObjects("casibase", "") + if err != nil { + panic(err) + } }