Skip to content

Commit 836d618

Browse files
committed
s3 domains
1 parent 9fe7c57 commit 836d618

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-1
lines changed

storagev2/apis/query_bucket_v4/api.go

+45-1
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,44 @@ func (j *ApiDomains) validate() error {
229229
return nil
230230
}
231231

232+
// 主 API 域名列表
233+
type PreferedS3Domains = []string
234+
235+
// S3 域名
236+
type S3Domains struct {
237+
RegionAlias string // S3 Region
238+
PreferedApiDomains PreferedS3Domains // 主 S3 域名列表
239+
}
240+
type jsonS3Domains struct {
241+
RegionAlias string `json:"region_alias"` // S3 Region
242+
PreferedApiDomains PreferedS3Domains `json:"domains"` // 主 S3 域名列表
243+
}
244+
245+
func (j *S3Domains) MarshalJSON() ([]byte, error) {
246+
if err := j.validate(); err != nil {
247+
return nil, err
248+
}
249+
return json.Marshal(&jsonS3Domains{RegionAlias: j.RegionAlias, PreferedApiDomains: j.PreferedApiDomains})
250+
}
251+
func (j *S3Domains) UnmarshalJSON(data []byte) error {
252+
var nj jsonS3Domains
253+
if err := json.Unmarshal(data, &nj); err != nil {
254+
return err
255+
}
256+
j.RegionAlias = nj.RegionAlias
257+
j.PreferedApiDomains = nj.PreferedApiDomains
258+
return nil
259+
}
260+
func (j *S3Domains) validate() error {
261+
if j.RegionAlias == "" {
262+
return errors.MissingRequiredFieldError{Name: "RegionAlias"}
263+
}
264+
if len(j.PreferedApiDomains) == 0 {
265+
return errors.MissingRequiredFieldError{Name: "PreferedApiDomains"}
266+
}
267+
return nil
268+
}
269+
232270
// 存储空间服务域名
233271
type BucketQueryHost struct {
234272
RegionId string // 区域 ID
@@ -239,6 +277,7 @@ type BucketQueryHost struct {
239277
RsDomains RsDomains // 对象管理域名
240278
RsfDomains RsfDomains // 对象列举域名
241279
ApiDomains ApiDomains // API 域名
280+
S3Domains S3Domains // S3 域名
242281
}
243282
type jsonBucketQueryHost struct {
244283
RegionId string `json:"region"` // 区域 ID
@@ -249,13 +288,14 @@ type jsonBucketQueryHost struct {
249288
RsDomains RsDomains `json:"rs"` // 对象管理域名
250289
RsfDomains RsfDomains `json:"rsf"` // 对象列举域名
251290
ApiDomains ApiDomains `json:"api"` // API 域名
291+
S3Domains S3Domains `json:"s3"` // S3 域名
252292
}
253293

254294
func (j *BucketQueryHost) MarshalJSON() ([]byte, error) {
255295
if err := j.validate(); err != nil {
256296
return nil, err
257297
}
258-
return json.Marshal(&jsonBucketQueryHost{RegionId: j.RegionId, TimeToLive: j.TimeToLive, UpDomains: j.UpDomains, IoDomains: j.IoDomains, IoSrcDomains: j.IoSrcDomains, RsDomains: j.RsDomains, RsfDomains: j.RsfDomains, ApiDomains: j.ApiDomains})
298+
return json.Marshal(&jsonBucketQueryHost{RegionId: j.RegionId, TimeToLive: j.TimeToLive, UpDomains: j.UpDomains, IoDomains: j.IoDomains, IoSrcDomains: j.IoSrcDomains, RsDomains: j.RsDomains, RsfDomains: j.RsfDomains, ApiDomains: j.ApiDomains, S3Domains: j.S3Domains})
259299
}
260300
func (j *BucketQueryHost) UnmarshalJSON(data []byte) error {
261301
var nj jsonBucketQueryHost
@@ -270,6 +310,7 @@ func (j *BucketQueryHost) UnmarshalJSON(data []byte) error {
270310
j.RsDomains = nj.RsDomains
271311
j.RsfDomains = nj.RsfDomains
272312
j.ApiDomains = nj.ApiDomains
313+
j.S3Domains = nj.S3Domains
273314
return nil
274315
}
275316
func (j *BucketQueryHost) validate() error {
@@ -294,6 +335,9 @@ func (j *BucketQueryHost) validate() error {
294335
if err := j.ApiDomains.validate(); err != nil {
295336
return err
296337
}
338+
if err := j.S3Domains.validate(); err != nil {
339+
return err
340+
}
297341
return nil
298342
}
299343

storagev2/internal/api-specs/query_bucket_v4.yml

+20
Original file line numberDiff line numberDiff line change
@@ -154,3 +154,23 @@ response:
154154
name: PreferedApiDomains
155155
documentation: 主 API 域名列表
156156
type: string
157+
- field_name: s3_domains
158+
key: s3
159+
documentation: S3 域名
160+
type:
161+
struct:
162+
name: S3Domains
163+
documentation: S3 域名
164+
fields:
165+
- field_name: region_alias
166+
key: region_alias
167+
documentation: S3 Region
168+
type: string
169+
- field_name: prefered_api_domains
170+
key: domains
171+
documentation: 主 S3 域名列表
172+
type:
173+
array:
174+
name: PreferedS3Domains
175+
documentation: 主 API 域名列表
176+
type: string

0 commit comments

Comments
 (0)