github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/courier/metadata.go (about) 1 package courier 2 3 type IMeta interface { 4 Meta() Metadata 5 } 6 7 func MetadataMerge(metas ...Metadata) Metadata { 8 m := Metadata{} 9 for _, meta := range metas { 10 m.Merge(meta) 11 } 12 return m 13 } 14 15 type Metadata map[string][]string 16 17 func (m Metadata) Merge(metadata Metadata) { 18 for key, values := range metadata { 19 m.Set(key, values...) 20 } 21 } 22 23 func (m Metadata) Add(key, value string) { 24 if values, ok := m[key]; ok { 25 m[key] = append(values, value) 26 } else { 27 m.Set(key, value) 28 } 29 } 30 31 func (m Metadata) Set(key string, values ...string) { 32 m[key] = values 33 } 34 35 func (m Metadata) Has(key string) bool { 36 _, ok := m[key] 37 return ok 38 } 39 40 func (m Metadata) Get(key string) string { 41 if v := m[key]; len(v) > 0 { 42 return v[0] 43 } 44 return "" 45 }