@@ -3,19 +3,38 @@ package cos
33import (
44 "context"
55 "encoding/xml"
6+ "errors"
67 "net/http"
78)
89
10+ type BucketIntelligentTieringFilterAnd struct {
11+ Prefix string `xml:"Prefix,omitempty" header:"-"`
12+ Tag []* BucketTaggingTag `xml:"Tag,omitempty" header:"-"`
13+ }
14+
15+ type BucketIntelligentTieringFilter struct {
16+ And * BucketIntelligentTieringFilterAnd `xml:"And,omitempty" header:"-"`
17+ Prefix string `xml:"Prefix,omitempty" header:"-"`
18+ Tag []* BucketTaggingTag `xml:"Tag,omitempty" header:"-"`
19+ }
20+
921type BucketIntelligentTieringTransition struct {
10- Days int `xml:"Days,omitempty" header:"-"`
11- RequestFrequent int `xml:"RequestFrequent,omitempty" header:"-"`
22+ AccessTier string `xml:"AccessTier,omitempty" header:"-"`
23+ Days int `xml:"Days,omitempty" header:"-"`
24+ RequestFrequent int `xml:"RequestFrequent,omitempty" header:"-"`
1225}
1326
1427type BucketPutIntelligentTieringOptions struct {
15- XMLName xml.Name `xml:"IntelligentTieringConfiguration" header:"-"`
16- Status string `xml:"Status,omitempty" header:"-"`
17- Transition * BucketIntelligentTieringTransition `xml:"Transition,omitempty" header:"-"`
18- XOptionHeader * http.Header `header:"-,omitempty" url:"-" xml:"-"`
28+ XMLName xml.Name `xml:"IntelligentTieringConfiguration" header:"-"`
29+ Status string `xml:"Status,omitempty" header:"-"`
30+ Transition * BucketIntelligentTieringTransition `xml:"Transition,omitempty" header:"-"`
31+
32+ // V2
33+ Id string `xml:"Id,omitempty" header:"-"`
34+ Tiering []* BucketIntelligentTieringTransition `xml:"Tiering,omitempty" header:"-"`
35+ Filter * BucketIntelligentTieringFilter `xml:"Filter,omitempty" header:"-"`
36+
37+ XOptionHeader * http.Header `header:"-,omitempty" url:"-" xml:"-"`
1938}
2039
2140type BucketGetIntelligentTieringResult BucketPutIntelligentTieringOptions
@@ -24,6 +43,18 @@ type BucketGetIntelligentTieringOptions struct {
2443 XOptionHeader * http.Header `header:"-,omitempty" url:"-" xml:"-"`
2544}
2645
46+ type IntelligentTieringConfiguration struct {
47+ Id string `xml:"Id"`
48+ Status string `xml:"Status"`
49+ Tiering []* BucketIntelligentTieringTransition `xml:"Tiering"`
50+ Filter * BucketIntelligentTieringFilter `xml:"Filter,omitempty"`
51+ }
52+
53+ type ListIntelligentTieringConfigurations struct {
54+ XMLName xml.Name `xml:"ListBucketIntelligentTieringConfigurationsOutput"`
55+ Configurations []* IntelligentTieringConfiguration `xml:"IntelligentTieringConfiguration,omitempty"`
56+ }
57+
2758func (s * BucketService ) PutIntelligentTiering (ctx context.Context , opt * BucketPutIntelligentTieringOptions ) (* Response , error ) {
2859 if opt != nil && opt .Transition != nil {
2960 opt .Transition .RequestFrequent = 1
@@ -54,5 +85,58 @@ func (s *BucketService) GetIntelligentTiering(ctx context.Context, opt ...*Bucke
5485 }
5586 resp , err := s .client .doRetry (ctx , & sendOpt )
5687 return & res , resp , err
88+ }
89+
90+ func (s * BucketService ) PutIntelligentTieringV2 (ctx context.Context , opt * BucketPutIntelligentTieringOptions ) (* Response , error ) {
91+ if opt == nil || opt .Id == "" {
92+ return nil , errors .New ("id is empty" )
93+ }
94+ sendOpt := sendOptions {
95+ baseURL : s .client .BaseURL .BucketURL ,
96+ uri : "/?intelligent-tiering&id=" + opt .Id ,
97+ method : http .MethodPut ,
98+ optHeader : opt ,
99+ body : opt ,
100+ }
101+ resp , err := s .client .doRetry (ctx , & sendOpt )
102+ return resp , err
103+ }
104+
105+ func (s * BucketService ) GetIntelligentTieringV2 (ctx context.Context , id string , opt ... * BucketGetIntelligentTieringOptions ) (* BucketGetIntelligentTieringResult , * Response , error ) {
106+ var optHeader * BucketGetIntelligentTieringOptions
107+ if len (opt ) > 0 {
108+ optHeader = opt [0 ]
109+ }
110+ var res BucketGetIntelligentTieringResult
111+ sendOpt := sendOptions {
112+ baseURL : s .client .BaseURL .BucketURL ,
113+ uri : "/?intelligent-tiering&id=" + id ,
114+ method : http .MethodGet ,
115+ optHeader : optHeader ,
116+ result : & res ,
117+ }
118+ resp , err := s .client .doRetry (ctx , & sendOpt )
119+ return & res , resp , err
120+ }
121+
122+ func (s * BucketService ) ListIntelligentTiering (ctx context.Context ) (* ListIntelligentTieringConfigurations , * Response , error ) {
123+ var res ListIntelligentTieringConfigurations
124+ sendOpt := sendOptions {
125+ baseURL : s .client .BaseURL .BucketURL ,
126+ uri : "/?intelligent-tiering" ,
127+ method : http .MethodGet ,
128+ result : & res ,
129+ }
130+ resp , err := s .client .doRetry (ctx , & sendOpt )
131+ return & res , resp , err
132+ }
57133
134+ func (s * BucketService ) DeleteIntelligentTiering (ctx context.Context , id string ) (* Response , error ) {
135+ sendOpt := sendOptions {
136+ baseURL : s .client .BaseURL .BucketURL ,
137+ uri : "/?intelligent-tiering&id=" + id ,
138+ method : http .MethodDelete ,
139+ }
140+ resp , err := s .client .doRetry (ctx , & sendOpt )
141+ return resp , err
58142}
0 commit comments