| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package providers
- import (
- "context"
- "fmt"
- "github.com/qiniu/go-sdk/v7/auth/qbox"
- "github.com/qiniu/go-sdk/v7/storage"
- "io"
- "one.com/kettle/oss"
- )
- const (
- QINIU_REGION_HUANAN = storage.RIDHuanan
- )
- func NewQiniuOss(accessKey, secretKey, bucket string, region storage.RegionID) oss.IOss {
- return &qiniuOss{
- accessKey: accessKey,
- secretKey: secretKey,
- bucket: bucket,
- region: region,
- }
- }
- type qiniuOss struct {
- accessKey, secretKey string
- bucket string
- region storage.RegionID
- }
- type qiniuUploadReturn struct {
- Key, Hash string
- Fsize int
- Bucket, Name string
- }
- func (self *qiniuOss) UploadFile(absPath string, key string, conf *oss.UploadConf) (string, error) {
- scope := self.bucket
- if conf != nil && conf.Overwrite {
- scope = fmt.Sprintf("%s:%s", self.bucket, key)
- }
- putPolicy := storage.PutPolicy{
- Scope: scope,
- ReturnBody: `{"key":"$(key)", "hash":"$(etag)", "fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)"}`,
- }
- mac := qbox.NewMac(self.accessKey, self.secretKey)
- upToken := putPolicy.UploadToken(mac)
- zone, found := storage.GetRegionByID(self.region)
- if !found {
- }
- cfg := storage.Config{
- Zone: &zone,
- UseHTTPS: false,
- UseCdnDomains: false,
- }
- formUploader := storage.NewFormUploader(&cfg)
- putExtra := storage.PutExtra{}
- ret := qiniuUploadReturn{}
- err := formUploader.PutFile(context.Background(), &ret, upToken, key, absPath, &putExtra)
- return ret.Name, err
- }
- func (self *qiniuOss) Upload(reader io.Reader, len int64, key string, conf *oss.UploadConf) (string, error) {
- scope := self.bucket
- if conf != nil && conf.Overwrite {
- scope = fmt.Sprintf("%s:%s", self.bucket, key)
- }
- putPolicy := storage.PutPolicy{
- Scope: scope,
- ReturnBody: `{"key":"$(key)", "hash":"$(etag)", "fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)"}`,
- }
- mac := qbox.NewMac(self.accessKey, self.secretKey)
- upToken := putPolicy.UploadToken(mac)
- zone, found := storage.GetRegionByID(self.region)
- if !found {
- }
- cfg := storage.Config{
- Zone: &zone,
- UseHTTPS: false,
- UseCdnDomains: false,
- }
- formUploader := storage.NewFormUploader(&cfg)
- putExtra := storage.PutExtra{}
- ret := qiniuUploadReturn{}
- err := formUploader.Put(context.Background(), &ret, upToken, key, reader, len, &putExtra)
- return ret.Name, err
- }
- func (self *qiniuOss) Delete(key string) error {
- mac := qbox.NewMac(self.accessKey, self.secretKey)
- cfg := storage.Config{
- UseHTTPS: false,
- }
- bucketManager := storage.NewBucketManager(mac, &cfg)
- return bucketManager.Delete(self.bucket, key)
- }
- func (self *qiniuOss) Exists(key string) (bool, error) {
- mac := qbox.NewMac(self.accessKey, self.secretKey)
- cfg := storage.Config{
- UseHTTPS: false,
- }
- bucketManager := storage.NewBucketManager(mac, &cfg)
- fileInfo, err := bucketManager.Stat(self.bucket, key)
- return len(fileInfo.Hash) > 0, err
- }
|