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 }