You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.1 KiB
53 lines
1.1 KiB
package v1 |
|
|
|
import ( |
|
"context" |
|
"time" |
|
|
|
v1pb "go-common/app/admin/live/live-admin/api/http/v1" |
|
"go-common/app/admin/live/live-admin/conf" |
|
"go-common/app/admin/live/live-admin/dao" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
) |
|
|
|
// TokenService struct |
|
type TokenService struct { |
|
conf *conf.Config |
|
// optionally add other properties here, such as dao |
|
dao *dao.Dao |
|
} |
|
|
|
//NewTokenService init |
|
func NewTokenService(c *conf.Config, d *dao.Dao) (s *TokenService) { |
|
s = &TokenService{ |
|
conf: c, |
|
dao: d, |
|
} |
|
return s |
|
} |
|
|
|
// New implementation |
|
// Request for a token for upload. |
|
// `method:"POST" internal:"true"` |
|
func (s *TokenService) New(ctx context.Context, req *v1pb.NewTokenReq) (resp *v1pb.NewTokenResp, err error) { |
|
// Must be live's bucket. |
|
_, ok := s.conf.Bucket[req.Bucket] |
|
if !ok { |
|
err = ecode.UploadBucketErr |
|
return |
|
} |
|
|
|
var token string |
|
if token, err = s.dao.RequestUploadToken(ctx, req.Bucket, req.Operator, time.Now().Unix()); err != nil { |
|
log.Error("New a upload token failure: %v", err) |
|
err = ecode.UploadTokenGenErr |
|
return |
|
} |
|
|
|
resp = &v1pb.NewTokenResp{ |
|
Token: token, |
|
} |
|
|
|
return |
|
}
|
|
|