mirror of
https://gitee.com/sjqzhang/go-fastdfs.git
synced 2024-11-29 17:57:41 +08:00
95 lines
2.9 KiB
Go
95 lines
2.9 KiB
Go
package server
|
|
|
|
import (
|
|
//"context"
|
|
"errors"
|
|
"fmt"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/astaxie/beego/httplib"
|
|
log "github.com/sjqzhang/seelog"
|
|
"github.com/sjqzhang/tusd"
|
|
)
|
|
|
|
type hookDataStore struct {
|
|
tusd.DataStore
|
|
}
|
|
|
|
//func (store hookDataStore) NewUpload(ctx context.Context, info handler.FileInfo) (upload handler.Upload, err error) {
|
|
// var (
|
|
// jsonResult JsonResult
|
|
// )
|
|
// if Config().AuthUrl != "" {
|
|
// if auth_token, ok := info.MetaData["auth_token"]; !ok {
|
|
// msg := "token auth fail,auth_token is not in http header Upload-Metadata," +
|
|
// "in uppy uppy.setMeta({ auth_token: '9ee60e59-cb0f-4578-aaba-29b9fc2919ca' })"
|
|
// log.Error(msg, fmt.Sprintf("current header:%v", info.MetaData))
|
|
// return nil, httpError{error: errors.New(msg), statusCode: 401}
|
|
// } else {
|
|
// req := httplib.Post(Config().AuthUrl)
|
|
// req.Param("auth_token", auth_token)
|
|
// req.SetTimeout(time.Second*5, time.Second*10)
|
|
// content, err := req.String()
|
|
// content = strings.TrimSpace(content)
|
|
// if strings.HasPrefix(content, "{") && strings.HasSuffix(content, "}") {
|
|
// if err = json.Unmarshal([]byte(content), &jsonResult); err != nil {
|
|
// log.Error(err)
|
|
// return nil, httpError{error: errors.New(err.Error() + content), statusCode: 401}
|
|
// }
|
|
// if jsonResult.Data != "ok" {
|
|
// return nil, httpError{error: errors.New(content), statusCode: 401}
|
|
// }
|
|
// } else {
|
|
// if err != nil {
|
|
// log.Error(err)
|
|
// return nil, err
|
|
// }
|
|
// if strings.TrimSpace(content) != "ok" {
|
|
// return nil, httpError{error: errors.New(content), statusCode: 401}
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
// return store.DataStore.NewUpload(ctx, info)
|
|
//}
|
|
|
|
|
|
func (store hookDataStore) NewUpload(info tusd.FileInfo) (id string, err error) {
|
|
var (
|
|
jsonResult JsonResult
|
|
)
|
|
if Config().AuthUrl != "" {
|
|
if auth_token, ok := info.MetaData["auth_token"]; !ok {
|
|
msg := "token auth fail,auth_token is not in http header Upload-Metadata," +
|
|
"in uppy uppy.setMeta({ auth_token: '9ee60e59-cb0f-4578-aaba-29b9fc2919ca' })"
|
|
log.Error(msg, fmt.Sprintf("current header:%v", info.MetaData))
|
|
return "", httpError{error: errors.New(msg), statusCode: 401}
|
|
} else {
|
|
req := httplib.Post(Config().AuthUrl)
|
|
req.Param("auth_token", auth_token)
|
|
req.SetTimeout(time.Second*5, time.Second*10)
|
|
content, err := req.String()
|
|
content = strings.TrimSpace(content)
|
|
if strings.HasPrefix(content, "{") && strings.HasSuffix(content, "}") {
|
|
if err = json.Unmarshal([]byte(content), &jsonResult); err != nil {
|
|
log.Error(err)
|
|
return "", httpError{error: errors.New(err.Error() + content), statusCode: 401}
|
|
}
|
|
if jsonResult.Data != "ok" {
|
|
return "", httpError{error: errors.New(content), statusCode: 401}
|
|
}
|
|
} else {
|
|
if err != nil {
|
|
log.Error(err)
|
|
return "", err
|
|
}
|
|
if strings.TrimSpace(content) != "ok" {
|
|
return "", httpError{error: errors.New(content), statusCode: 401}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return store.DataStore.NewUpload(info)
|
|
}
|