Add Go error handlings

This commit is contained in:
Yang Luo 2023-07-08 11:42:56 +08:00
parent b3f5d9ea06
commit 8d717a8b93
9 changed files with 111 additions and 41 deletions

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)
}

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) {

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")

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

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
}

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)
}
}

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
}

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
}

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)
}
}