|
- package obs
-
- import (
- awss3 "github.com/aws/aws-sdk-go-v2/service/s3"
- "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs"
- "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/s3"
- stgtypes "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/types"
- jcstypes "gitlink.org.cn/cloudream/jcs-pub/common/types"
- )
-
- type ShardStore struct {
- *s3.ShardStore
- stgType *jcstypes.OBSType
- cred *jcstypes.OBSCred
- }
-
- func NewShardStore(detail *jcstypes.UserSpaceDetail, stgType *jcstypes.OBSType, cred *jcstypes.OBSCred, s3Cli *awss3.Client, bkt string) (*ShardStore, error) {
- sd := ShardStore{
- stgType: stgType,
- cred: cred,
- }
-
- var err error
- sd.ShardStore, err = s3.NewShardStore(detail, s3Cli, bkt, s3.ShardStoreOption{
- UseAWSSha256: false,
- })
- if err != nil {
- return nil, err
- }
-
- return &sd, nil
- }
-
- func (s *ShardStore) MakeHTTPReadRequest(fileHash jcstypes.FileHash) (stgtypes.HTTPRequest, error) {
- cli, err := obs.New(s.cred.AK, s.cred.SK, s.stgType.Endpoint)
- if err != nil {
- return stgtypes.HTTPRequest{}, err
- }
-
- filePath := s.GetFilePathFromHash(fileHash)
- getSigned, err := cli.CreateSignedUrl(&obs.CreateSignedUrlInput{
- Method: "GET",
- Bucket: s.Bucket,
- Key: filePath.String(),
- Expires: 3600,
- })
- if err != nil {
- return stgtypes.HTTPRequest{}, err
- }
-
- return stgtypes.HTTPRequest{
- URL: getSigned.SignedUrl,
- Method: "GET",
- }, nil
- }
|