mirror of
https://github.com/eiblog/eiblog.git
synced 2026-02-23 06:32:28 +08:00
使用github的七牛SDK,配置名称Kodo->Qiniu
This commit is contained in:
73
vendor/github.com/qiniu/api.v7/storage/token.go
generated
vendored
Normal file
73
vendor/github.com/qiniu/api.v7/storage/token.go
generated
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/qiniu/api.v7/auth/qbox"
|
||||
)
|
||||
|
||||
// PutPolicy 表示文件上传的上传策略
|
||||
type PutPolicy struct {
|
||||
Scope string `json:"scope"`
|
||||
Expires uint32 `json:"deadline"` // 截止时间(以秒为单位)
|
||||
IsPrefixalScope int `json:"isPrefixalScope,omitempty"`
|
||||
InsertOnly uint16 `json:"insertOnly,omitempty"` // 若非0, 即使Scope为 Bucket:Key 的形式也是insert only
|
||||
DetectMime uint8 `json:"detectMime,omitempty"` // 若非0, 则服务端根据内容自动确定 MimeType
|
||||
FsizeLimit int64 `json:"fsizeLimit,omitempty"`
|
||||
MimeLimit string `json:"mimeLimit,omitempty"`
|
||||
SaveKey string `json:"saveKey,omitempty"`
|
||||
CallbackFetchKey uint8 `json:"callbackFetchKey,omitempty"`
|
||||
CallbackURL string `json:"callbackUrl,omitempty"`
|
||||
CallbackHost string `json:"callbackHost,omitempty"`
|
||||
CallbackBody string `json:"callbackBody,omitempty"`
|
||||
CallbackBodyType string `json:"callbackBodyType,omitempty"`
|
||||
ReturnURL string `json:"returnUrl,omitempty"`
|
||||
ReturnBody string `json:"returnBody,omitempty"`
|
||||
PersistentOps string `json:"persistentOps,omitempty"`
|
||||
PersistentNotifyURL string `json:"persistentNotifyUrl,omitempty"`
|
||||
PersistentPipeline string `json:"persistentPipeline,omitempty"`
|
||||
EndUser string `json:"endUser,omitempty"`
|
||||
DeleteAfterDays int `json:"deleteAfterDays,omitempty"`
|
||||
FileType int `json:"fileType,omitempty"`
|
||||
}
|
||||
|
||||
// UploadToken 方法用来进行上传凭证的生成
|
||||
func (p *PutPolicy) UploadToken(mac *qbox.Mac) (token string) {
|
||||
if p.Expires == 0 {
|
||||
p.Expires = 3600 // 1 hour
|
||||
}
|
||||
p.Expires += uint32(time.Now().Unix())
|
||||
|
||||
putPolicyJSON, _ := json.Marshal(p)
|
||||
token = mac.SignWithData(putPolicyJSON)
|
||||
return
|
||||
}
|
||||
|
||||
func getAkBucketFromUploadToken(token string) (ak, bucket string, err error) {
|
||||
items := strings.Split(token, ":")
|
||||
if len(items) != 3 {
|
||||
err = errors.New("invalid upload token, format error")
|
||||
return
|
||||
}
|
||||
|
||||
ak = items[0]
|
||||
policyBytes, dErr := base64.URLEncoding.DecodeString(items[2])
|
||||
if dErr != nil {
|
||||
err = errors.New("invalid upload token, invalid put policy")
|
||||
return
|
||||
}
|
||||
|
||||
putPolicy := PutPolicy{}
|
||||
uErr := json.Unmarshal(policyBytes, &putPolicy)
|
||||
if uErr != nil {
|
||||
err = errors.New("invalid upload token, invalid put policy")
|
||||
return
|
||||
}
|
||||
|
||||
bucket = strings.Split(putPolicy.Scope, ":")[0]
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user