diff options
| author | Stefan Majewsky <majewsky@gmx.net> | 2018-02-05 21:30:33 +0100 |
|---|---|---|
| committer | Stefan Majewsky <majewsky@gmx.net> | 2018-02-05 21:44:35 +0100 |
| commit | 3a24741929cd12ffee5e54d0e9a9afb83c5069b3 (patch) | |
| tree | 6a91b159d25814e873fcfae08cd40cba9b1dcc14 /metadata.go | |
| parent | 7de32502590995ee8d7cc8b681b0f723ca35ccb0 (diff) | |
| download | go-schwift-3a24741929cd12ffee5e54d0e9a9afb83c5069b3.tar.gz | |
redesign the header API
I'm quite satisfied with this right now (though this doesn't say
anything about how I feel about it tomorrow), but it's ugly that some
guts (headers.Base) are exposed in the public API.
Diffstat (limited to 'metadata.go')
| -rw-r--r-- | metadata.go | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/metadata.go b/metadata.go deleted file mode 100644 index 5f5f63f..0000000 --- a/metadata.go +++ /dev/null @@ -1,89 +0,0 @@ -/****************************************************************************** -* -* Copyright 2018 Stefan Majewsky <majewsky@gmx.net> -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -* -******************************************************************************/ - -package schwift - -import "net/textproto" - -//Metadata works like http.Header, but does not allow multiple values per key. -type Metadata map[string]string - -//NewMetadata constructs a Metadata instance from a list of key-value pairs -//with compact syntax. It is recommended over a map literal since it correctly -//formats keys with textproto.CanonicalMIMEHeaderKey(). For example: -// -// m = NewMetadata( -// "color", "blue", -// "size", "large", -// ) -// -// //...is equivalent to... -// -// m = make(Metadata) -// m.Set("color", "blue") -// m.Set("size", "large") -// -//NewMetadata panics if it is called with an odd number of arguments. -func NewMetadata(args ...string) Metadata { - if len(args)%2 == 1 { - panic("NewMetadata called with an odd number of arguments") - } - m := make(Metadata) - for idx := 0; idx < len(args); idx += 2 { - m.Set(args[idx], args[idx+1]) - } - return m -} - -//Clear sets the value to this key to the empty string, such that a Post() with -//this Metadata will remove the existing value from this metadata key on the server. -func (m Metadata) Clear(key string) { - m.Set(key, "") -} - -//Del works just like http.Header.Del(). -// -//Del deletes a key from the Metadata instance. When the Metadata instance -//is then sent to the server with Post(), Del() has different effects depending -//on context because of Swift's inconsistent API: -// -//For account or container metadata, a key which has been deleted with Del() will -//remain unchanged on the server. To remove the key on the server, use Clear() -//instead. -// -//For object metadata, deleting a key will cause that key to be deleted on the -//server. Del() is identical to Clear() in this case. -func (m Metadata) Del(key string) { - k := textproto.CanonicalMIMEHeaderKey(key) - delete(m, k) -} - -//Get works just like http.Header.Get(). -func (m Metadata) Get(key string) string { - if m == nil { - return "" - } - k := textproto.CanonicalMIMEHeaderKey(key) - return m[k] -} - -//Set works just like http.Header.Set(). -func (m Metadata) Set(key, value string) { - k := textproto.CanonicalMIMEHeaderKey(key) - m[k] = value -} |
