@@ -3,19 +3,38 @@ package cos
3
3
import (
4
4
"context"
5
5
"encoding/xml"
6
+ "errors"
6
7
"net/http"
7
8
)
8
9
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
+
9
21
type 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:"-"`
12
25
}
13
26
14
27
type 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:"-"`
19
38
}
20
39
21
40
type BucketGetIntelligentTieringResult BucketPutIntelligentTieringOptions
@@ -24,6 +43,18 @@ type BucketGetIntelligentTieringOptions struct {
24
43
XOptionHeader * http.Header `header:"-,omitempty" url:"-" xml:"-"`
25
44
}
26
45
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
+
27
58
func (s * BucketService ) PutIntelligentTiering (ctx context.Context , opt * BucketPutIntelligentTieringOptions ) (* Response , error ) {
28
59
if opt != nil && opt .Transition != nil {
29
60
opt .Transition .RequestFrequent = 1
@@ -54,5 +85,58 @@ func (s *BucketService) GetIntelligentTiering(ctx context.Context, opt ...*Bucke
54
85
}
55
86
resp , err := s .client .doRetry (ctx , & sendOpt )
56
87
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
+ }
57
133
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
58
142
}
0 commit comments