aboutsummaryrefslogtreecommitdiff
path: root/generated.go.in
blob: 034a8e445077bbf9b48adacc06bc3da4f1c06cbf (plain)
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
117
118
119
120
121
122
123
124
{
	"Account": {
		"Fields": [
			{ "Header": "X-Account-Bytes-Used", "Attribute": "BytesUsed", "Type": "headers.Uint64Readonly" },
			{ "Header": "X-Account-Container-Count", "Attribute": "ContainerCount", "Type": "headers.Uint64Readonly" },
			{ "Header": "X-Account-Meta-", "Attribute": "Metadata", "Type": "headers.Metadata" },
			{ "Header": "X-Account-Meta-Quota-Bytes", "Attribute": "QuotaBytes", "Type": "headers.Uint64" },
			{ "Header": "X-Account-Meta-Temp-URL-Key-2", "Attribute": "TempURLKey2", "Type": "headers.String" },
			{ "Header": "X-Account-Meta-Temp-URL-Key", "Attribute": "TempURLKey", "Type": "headers.String" },
			{ "Header": "X-Account-Object-Count", "Attribute": "ObjectCount", "Type": "headers.Uint64Readonly" },
			{ "Header": "X-Timestamp", "Attribute": "Timestamp", "Type": "headers.UnixTimeReadonly" }
		]
	},
	"Container": {
		"Fields": [
			{ "Header": "X-Container-Bytes-Used", "Attribute": "BytesUsed", "Type": "headers.Uint64Readonly" },
			{ "Header": "X-Container-Meta-", "Attribute": "Metadata", "Type": "headers.Metadata" },
			{ "Header": "X-Container-Meta-Quota-Bytes", "Attribute": "BytesUsedQuota", "Type": "headers.Uint64" },
			{ "Header": "X-Container-Meta-Quota-Count", "Attribute": "ObjectCountQuota", "Type": "headers.Uint64" },
			{ "Header": "X-Container-Meta-Temp-URL-Key-2", "Attribute": "TempURLKey2", "Type": "headers.String" },
			{ "Header": "X-Container-Meta-Temp-URL-Key", "Attribute": "TempURLKey", "Type": "headers.String" },
			{ "Header": "X-Container-Object-Count", "Attribute": "ObjectCount", "Type": "headers.Uint64Readonly" },
			{ "Header": "X-Container-Read", "Attribute": "ReadACL", "Type": "headers.String" },
			{ "Header": "X-Container-Sync-Key", "Attribute": "SyncKey", "Type": "headers.String" },
			{ "Header": "X-Container-Sync-To", "Attribute": "SyncTo", "Type": "headers.String" },
			{ "Header": "X-Container-Write", "Attribute": "WriteACL", "Type": "headers.String" },
			{ "Header": "X-History-Location", "Attribute": "HistoryLocation", "Type": "headers.String" },
			{ "Header": "X-Storage-Policy", "Attribute": "StoragePolicy", "Type": "headers.String" },
			{ "Header": "X-Timestamp", "Attribute": "Timestamp", "Type": "headers.UnixTimeReadonly" },
			{ "Header": "X-Versions-Location", "Attribute": "VersionsLocation", "Type": "headers.String" }
		]
	}
}
---
/*******************************************************************************
*
* THIS FILE IS AUTOGENERATED.
*
* Edit `generated.go.in` instead and run `make generate` to produce this file.
*
*******************************************************************************/

package schwift

import (
	"net/textproto"

	"github.com/majewsky/schwift/headers"
)

{{- 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 methods on type Headers.
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 headers.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 not (eq $field.Type "headers.String" "headers.Metadata")}}
	if err := h.{{$field.Attribute}}().Validate(); err != nil {
		return err
	}
{{- end }}{{ end }}
	return evadeGolintComplaint1()
}

{{- range $field := $hmeta.Fields }}

//{{$field.Attribute}} provides type-safe access to {{$field.Header}} headers.
func (h {{$htype}}Headers) {{$field.Attribute}}() {{$field.Type}} {
	return {{$field.Type}}{
		Base: headers.Base{
			H: h,
			K: "{{$field.Header}}",
		},
	}
}
{{- end }}
{{- end }}

func evadeGolintComplaint1() error {
	return nil
}