/
metadata_types.go
102 lines (84 loc) · 2.28 KB
/
metadata_types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package types
import (
"encoding/base64"
"encoding/xml"
)
func (m GfSpListObjectsByBucketNameResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
type Alias GfSpListObjectsByBucketNameResponse
// Create a new struct with Base64-encoded Checksums field
responseAlias := Alias(m)
for _, o := range responseAlias.Objects {
for i, c := range o.ObjectInfo.Checksums {
o.ObjectInfo.Checksums[i] = []byte(base64.StdEncoding.EncodeToString(c))
}
}
return e.EncodeElement(responseAlias, start)
}
func (m GfSpGetObjectMetaResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
type Alias GfSpGetObjectMetaResponse
// Create a new struct with Base64-encoded Checksums field
responseAlias := Alias(m)
o := responseAlias.Object
if o != nil && o.ObjectInfo != nil && o.ObjectInfo.Checksums != nil {
for i, c := range o.ObjectInfo.Checksums {
o.ObjectInfo.Checksums[i] = []byte(base64.StdEncoding.EncodeToString(c))
}
}
return e.EncodeElement(responseAlias, start)
}
type GroupEntry struct {
Id uint64
Value *Group
}
func (m GfSpListGroupsByIDsResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
if len(m.Groups) == 0 {
return nil
}
err := e.EncodeToken(start)
if err != nil {
return err
}
for k, v := range m.Groups {
e.Encode(GroupEntry{Id: k, Value: v})
}
return e.EncodeToken(start.End())
}
type ObjectEntry struct {
Id uint64
Value *Object
}
func (m GfSpListObjectsByIDsResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
if len(m.Objects) == 0 {
return nil
}
err := e.EncodeToken(start)
if err != nil {
return err
}
for k, o := range m.Objects {
if o != nil && o.ObjectInfo != nil && o.ObjectInfo.Checksums != nil {
for i, c := range o.ObjectInfo.Checksums {
o.ObjectInfo.Checksums[i] = []byte(base64.StdEncoding.EncodeToString(c))
}
}
e.Encode(ObjectEntry{Id: k, Value: o})
}
return e.EncodeToken(start.End())
}
type BucketEntry struct {
Id uint64
Value *Bucket
}
func (m GfSpListBucketsByIDsResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
if len(m.Buckets) == 0 {
return nil
}
err := e.EncodeToken(start)
if err != nil {
return err
}
for k, v := range m.Buckets {
e.Encode(BucketEntry{Id: k, Value: v})
}
return e.EncodeToken(start.End())
}