Add PostObjectRestore interface
This commit is contained in:
@@ -334,6 +334,33 @@ func (s *CosTestSuite) TestPutGetObjectACL() {
|
|||||||
assert.Nil(s.T(), err, "DeleteObject Failed")
|
assert.Nil(s.T(), err, "DeleteObject Failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *CosTestSuite) TestPutObjectRestore() {
|
||||||
|
name := "archivetest"
|
||||||
|
putOpt := &cos.ObjectPutOptions{
|
||||||
|
ObjectPutHeaderOptions: &cos.ObjectPutHeaderOptions{
|
||||||
|
XCosStorageClass: "ARCHIVE",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
f := strings.NewReader("test")
|
||||||
|
_, err := s.Client.Object.Put(context.Background(), name, f, putOpt)
|
||||||
|
assert.Nil(s.T(), err, "PutObject Archive faild")
|
||||||
|
opt := &cos.ObjectRestoreOptions{
|
||||||
|
Days: 2,
|
||||||
|
Tier: &cos.CASJobParameters{
|
||||||
|
// Standard, Exepdited and Bulk
|
||||||
|
Tier: "Expedited",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
resp, _ := s.Client.Object.PutRestore(context.Background(), name, opt)
|
||||||
|
retCode := resp.StatusCode
|
||||||
|
if retCode != 200 && retCode != 202 && retCode != 409 {
|
||||||
|
right := false
|
||||||
|
fmt.Println("PutObjectRestore get code is:", retCode)
|
||||||
|
assert.Equal(s.T(), true, right, "PutObjectRestore Failed")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func (s *CosTestSuite) TestCopyObject() {
|
func (s *CosTestSuite) TestCopyObject() {
|
||||||
u := "http://gosdkcopytest-" + s.Appid + ".cos.ap-beijing-1.myqcloud.com"
|
u := "http://gosdkcopytest-" + s.Appid + ".cos.ap-beijing-1.myqcloud.com"
|
||||||
iu, _ := url.Parse(u)
|
iu, _ := url.Parse(u)
|
||||||
|
|||||||
43
example/object/restore.go
Normal file
43
example/object/restore.go
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"net/url"
|
||||||
|
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/tencentyun/cos-go-sdk-v5"
|
||||||
|
"github.com/tencentyun/cos-go-sdk-v5/debug"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com")
|
||||||
|
b := &cos.BaseURL{BucketURL: u}
|
||||||
|
c := cos.NewClient(b, &http.Client{
|
||||||
|
Transport: &cos.AuthorizationTransport{
|
||||||
|
SecretID: os.Getenv("COS_SECRETID"),
|
||||||
|
SecretKey: os.Getenv("COS_SECRETKEY"),
|
||||||
|
Transport: &debug.DebugRequestTransport{
|
||||||
|
RequestHeader: true,
|
||||||
|
RequestBody: true,
|
||||||
|
ResponseHeader: true,
|
||||||
|
ResponseBody: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
opt := &cos.ObjectRestoreOptions{
|
||||||
|
Days: 2,
|
||||||
|
Tier: &cos.CASJobParameters{
|
||||||
|
// Standard, Exepdited and Bulk
|
||||||
|
Tier: "Expedited",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
name := "archivetest"
|
||||||
|
_, err := c.Object.PutRestore(context.Background(), name, opt)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
28
object.go
28
object.go
@@ -232,6 +232,34 @@ func (s *ObjectService) Options(ctx context.Context, name string, opt *ObjectOpt
|
|||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CASJobParameters support three way: Standard(in 35 hours), Expedited(quick way, in 15 mins), Bulk(in 5-12 hours_
|
||||||
|
type CASJobParameters struct {
|
||||||
|
Tier string `xml:"Tier"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ObjectRestoreOptions is the option of object restore
|
||||||
|
type ObjectRestoreOptions struct {
|
||||||
|
XMLName xml.Name `xml:"RestoreRequest"`
|
||||||
|
Days int `xml:"Days"`
|
||||||
|
Tier *CASJobParameters `xml:"CASJobParameters"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PutRestore API can recover an object of type archived by COS archive.
|
||||||
|
//
|
||||||
|
// https://cloud.tencent.com/document/product/436/12633
|
||||||
|
func (s *ObjectService) PutRestore(ctx context.Context, name string, opt *ObjectRestoreOptions) (*Response, error) {
|
||||||
|
u := fmt.Sprintf("/%s?restore", encodeURIComponent(name))
|
||||||
|
sendOpt := sendOptions{
|
||||||
|
baseURL: s.client.BaseURL.BucketURL,
|
||||||
|
uri: u,
|
||||||
|
method: http.MethodPost,
|
||||||
|
body: opt,
|
||||||
|
}
|
||||||
|
resp, err := s.client.send(ctx, &sendOpt)
|
||||||
|
|
||||||
|
return resp, err
|
||||||
|
}
|
||||||
|
|
||||||
// TODO Append 接口在优化未开放使用
|
// TODO Append 接口在优化未开放使用
|
||||||
//
|
//
|
||||||
// Append请求可以将一个文件(Object)以分块追加的方式上传至 Bucket 中。使用Append Upload的文件必须事前被设定为Appendable。
|
// Append请求可以将一个文件(Object)以分块追加的方式上传至 Bucket 中。使用Append Upload的文件必须事前被设定为Appendable。
|
||||||
|
|||||||
Reference in New Issue
Block a user