From 60ea537bbc28de24004c8d316d173343b6882b14 Mon Sep 17 00:00:00 2001 From: Asim Aslam Date: Tue, 31 Dec 2019 13:37:29 +0000 Subject: [PATCH] upper case the metadata --- metadata/metadata.go | 22 ++++++++++++++++++++-- metadata/metadata_test.go | 20 ++++++++++---------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/metadata/metadata.go b/metadata/metadata.go index 74b0aa3c..3d6357ec 100644 --- a/metadata/metadata.go +++ b/metadata/metadata.go @@ -3,6 +3,7 @@ package metadata import ( "context" + "strings" ) type metaKey struct{} @@ -27,14 +28,32 @@ func Get(ctx context.Context, key string) (string, bool) { if !ok { return "", ok } + // attempt to get as is val, ok := md[key] + if ok { + return val, ok + } + + // attempt to get lower case + val, ok = md[strings.Title(key)] + return val, ok } // FromContext returns metadata from the given context func FromContext(ctx context.Context) (Metadata, bool) { md, ok := ctx.Value(metaKey{}).(Metadata) - return md, ok + if !ok { + return nil, ok + } + + // capitalise all values + newMD := make(map[string]string) + for k, v := range md { + newMD[strings.Title(k)] = v + } + + return newMD, ok } // NewContext creates a new context with the given metadata @@ -57,5 +76,4 @@ func MergeContext(ctx context.Context, patchMd Metadata, overwrite bool) context } } return context.WithValue(ctx, metaKey{}, cmd) - } diff --git a/metadata/metadata_test.go b/metadata/metadata_test.go index 3706d14c..764cc680 100644 --- a/metadata/metadata_test.go +++ b/metadata/metadata_test.go @@ -8,7 +8,7 @@ import ( func TestMetadataCopy(t *testing.T) { md := Metadata{ - "foo": "bar", + "Foo": "bar", "bar": "baz", } @@ -23,7 +23,7 @@ func TestMetadataCopy(t *testing.T) { func TestMetadataContext(t *testing.T) { md := Metadata{ - "foo": "bar", + "Foo": "bar", } ctx := NewContext(context.TODO(), md) @@ -33,8 +33,8 @@ func TestMetadataContext(t *testing.T) { t.Errorf("Unexpected error retrieving metadata, got %t", ok) } - if emd["foo"] != md["foo"] { - t.Errorf("Expected key: %s val: %s, got key: %s val: %s", "foo", md["foo"], "foo", emd["foo"]) + if emd["Foo"] != md["Foo"] { + t.Errorf("Expected key: %s val: %s, got key: %s val: %s", "Foo", md["Foo"], "Foo", emd["Foo"]) } if i := len(emd); i != 1 { @@ -56,20 +56,20 @@ func TestMergeContext(t *testing.T) { { name: "matching key, overwrite false", args: args{ - existing: Metadata{"foo": "bar", "sumo": "demo"}, - append: Metadata{"sumo": "demo2"}, + existing: Metadata{"Foo": "bar", "Sumo": "demo"}, + append: Metadata{"Sumo": "demo2"}, overwrite: false, }, - want: Metadata{"foo": "bar", "sumo": "demo"}, + want: Metadata{"Foo": "bar", "Sumo": "demo"}, }, { name: "matching key, overwrite true", args: args{ - existing: Metadata{"foo": "bar", "sumo": "demo"}, - append: Metadata{"sumo": "demo2"}, + existing: Metadata{"Foo": "bar", "Sumo": "demo"}, + append: Metadata{"Sumo": "demo2"}, overwrite: true, }, - want: Metadata{"foo": "bar", "sumo": "demo2"}, + want: Metadata{"Foo": "bar", "Sumo": "demo2"}, }, } for _, tt := range tests {