case-insensitive metadata key

This commit is contained in:
ginuerzh
2023-01-11 22:25:58 +08:00
parent 3b245ec381
commit 9b128534a0
5 changed files with 19 additions and 87 deletions

View File

@ -1,27 +1,33 @@
package metadata
import (
"strings"
"github.com/go-gost/core/metadata"
)
type mapMetadata map[string]any
func NewMetadata(m map[string]any) metadata.Metadata {
return mapMetadata(m)
md := make(map[string]any)
for k, v := range m {
md[strings.ToLower(k)] = v
}
return mapMetadata(md)
}
func (m mapMetadata) IsExists(key string) bool {
_, ok := m[key]
_, ok := m[strings.ToLower(key)]
return ok
}
func (m mapMetadata) Set(key string, value any) {
m[key] = value
m[strings.ToLower(key)] = value
}
func (m mapMetadata) Get(key string) any {
if m != nil {
return m[key]
return m[strings.ToLower(key)]
}
return nil
}