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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
{
"Account": {
"Fields": [
{ "Header": "X-Account-Bytes-Used", "Attribute": "BytesUsed", "Type": "Uint64Readonly" },
{ "Header": "X-Account-Container-Count", "Attribute": "ContainerCount", "Type": "Uint64Readonly" },
{ "Header": "X-Account-Meta-", "Attribute": "Metadata", "Type": "Metadata" },
{ "Header": "X-Account-Meta-Quota-Bytes", "Attribute": "BytesUsedQuota", "Type": "Uint64" },
{ "Header": "X-Account-Meta-Temp-URL-Key-2", "Attribute": "TempURLKey2", "Type": "String" },
{ "Header": "X-Account-Meta-Temp-URL-Key", "Attribute": "TempURLKey", "Type": "String" },
{ "Header": "X-Account-Object-Count", "Attribute": "ObjectCount", "Type": "Uint64Readonly" },
{ "Header": "X-Timestamp", "Attribute": "Timestamp", "Type": "UnixTimeReadonly" }
]
},
"Container": {
"Fields": [
{ "Header": "X-Container-Bytes-Used", "Attribute": "BytesUsed", "Type": "Uint64Readonly" },
{ "Header": "X-Container-Meta-", "Attribute": "Metadata", "Type": "Metadata" },
{ "Header": "X-Container-Meta-Quota-Bytes", "Attribute": "BytesUsedQuota", "Type": "Uint64" },
{ "Header": "X-Container-Meta-Quota-Count", "Attribute": "ObjectCountQuota", "Type": "Uint64" },
{ "Header": "X-Container-Meta-Temp-URL-Key-2", "Attribute": "TempURLKey2", "Type": "String" },
{ "Header": "X-Container-Meta-Temp-URL-Key", "Attribute": "TempURLKey", "Type": "String" },
{ "Header": "X-Container-Object-Count", "Attribute": "ObjectCount", "Type": "Uint64Readonly" },
{ "Header": "X-Container-Read", "Attribute": "ReadACL", "Type": "String" },
{ "Header": "X-Container-Sync-Key", "Attribute": "SyncKey", "Type": "String" },
{ "Header": "X-Container-Sync-To", "Attribute": "SyncTo", "Type": "String" },
{ "Header": "X-Container-Write", "Attribute": "WriteACL", "Type": "String" },
{ "Header": "X-History-Location", "Attribute": "HistoryLocation", "Type": "String" },
{ "Header": "X-Storage-Policy", "Attribute": "StoragePolicy", "Type": "String" },
{ "Header": "X-Timestamp", "Attribute": "Timestamp", "Type": "UnixTimeReadonly" },
{ "Header": "X-Versions-Location", "Attribute": "VersionsLocation", "Type": "String" }
]
}
}
---
/*******************************************************************************
*
* THIS FILE IS AUTOGENERATED.
*
* Edit `generated.go.in` instead and run `make generate` to produce this file.
*
*******************************************************************************/
package schwift
import "net/textproto"
{{- range $htype, $hmeta := . }}
//{{$htype}}Headers contains the headers for a schwift.{{$htype}} instance.
//
//To read and write well-known headers, use the methods on this type.
//To read and write arbitary headers, use the http.Header-like methods Get(),
//Set(), Clear(), Del().
type {{$htype}}Headers map[string]string
//Clear sets the value for the specified header to the empty string. When the
//Headers instance is then sent to the server with Update(), the server will
//delete the value for that header; cf. Del().
func (h {{$htype}}Headers) Clear(key string) {
h[textproto.CanonicalMIMEHeaderKey(key)] = ""
}
//Del deletes a key from the Headers instance. When the Headers instance
//is then sent to the server with Update(), Del() has different effects
//depending on context because of Swift's inconsistent API:
//
//For most writable attributes, a key which has been deleted with Del() will
//remain unchanged on the server. To remove the key on the server, use Clear()
//instead.
{{- if eq $htype "Object" }}
//
//For object metadata (but not other object attributes), deleting a key will
//cause that key to be deleted on the server. Del() is identical to Clear() in
//this case.
{{- end }}
func (h {{$htype}}Headers) Del(key string) {
delete(h, textproto.CanonicalMIMEHeaderKey(key))
}
//Get returns the value for the specified header.
func (h {{$htype}}Headers) Get(key string) string {
return h[textproto.CanonicalMIMEHeaderKey(key)]
}
//Set sets a new value for the specified header. Any existing value will be
//overwritten.
func (h {{$htype}}Headers) Set(key, value string) {
h[textproto.CanonicalMIMEHeaderKey(key)] = value
}
//Validate returns MalformedHeaderError if the value of any well-known header
//does not conform to its data type. This is called automatically by Schwift
//when preparing an {{$htype}}Headers instance from a GET/HEAD response, so you
//usually do not need to do it yourself. You will get the validation error from
//the {{$htype}} method doing the request, e.g. Headers().
func (h {{$htype}}Headers) Validate() error {
{{- range $field := $hmeta.Fields }}
if err := h.{{$field.Attribute}}().validate(); err != nil {
return err
}
{{- end }}
return evadeGolintComplaint1()
}
{{- range $field := $hmeta.Fields }}
//{{$field.Attribute}} provides type-safe access to {{$field.Header}} headers.
func (h {{$htype}}Headers) {{$field.Attribute}}() Field{{$field.Type}} {
return Field{{$field.Type}}{h, "{{$field.Header}}"}
}
{{- end }}
{{- end }}
func evadeGolintComplaint1() error {
return nil
}
|