From 41837a67f8490c465d62e0399a5bedac9e7de770 Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Tue, 20 Apr 2021 12:39:21 +0300 Subject: [PATCH] register: drop verbose values export Signed-off-by: Vasiliy Tolstov --- register/extractor.go | 67 +++++--------------------------------- register/extractor_test.go | 21 ++++-------- register/memory.go | 13 ++------ register/register.go | 11 ++----- 4 files changed, 20 insertions(+), 92 deletions(-) diff --git a/register/extractor.go b/register/extractor.go index e1395684..1b0d6954 100644 --- a/register/extractor.go +++ b/register/extractor.go @@ -3,7 +3,6 @@ package register import ( "fmt" "reflect" - "strings" "unicode" "unicode/utf8" @@ -11,12 +10,12 @@ import ( ) // ExtractValue from reflect.Type from specified depth -func ExtractValue(v reflect.Type, d int) *Value { +func ExtractValue(v reflect.Type, d int) string { if d == 3 { - return nil + return "" } if v == nil { - return nil + return "" } if v.Kind() == reflect.Ptr { @@ -25,7 +24,7 @@ func ExtractValue(v reflect.Type, d int) *Value { // slices and maps don't have a defined name if (v.Kind() == reflect.Slice || v.Kind() == reflect.Map) || len(v.Name()) == 0 { - return nil + return "" } // get the rune character @@ -33,58 +32,10 @@ func ExtractValue(v reflect.Type, d int) *Value { // crude check for is unexported field if unicode.IsLower(a) { - return nil + return "" } - arg := &Value{ - Name: v.Name(), - Type: v.Name(), - } - - switch v.Kind() { - case reflect.Struct: - for i := 0; i < v.NumField(); i++ { - f := v.Field(i) - val := ExtractValue(f.Type, d+1) - if val == nil { - continue - } - - // if we can find a json tag use it - if tags := f.Tag.Get("json"); len(tags) > 0 { - parts := strings.Split(tags, ",") - if parts[0] == "-" || parts[0] == "omitempty" { - continue - } - val.Name = parts[0] - } - - // if there's no name default it - if len(val.Name) == 0 { - val.Name = v.Field(i).Name - } - - arg.Values = append(arg.Values, val) - } - case reflect.Slice: - p := v.Elem() - if p.Kind() == reflect.Ptr { - p = p.Elem() - } - arg.Type = "[]" + p.Name() - case reflect.Map: - p := v.Elem() - if p.Kind() == reflect.Ptr { - p = p.Elem() - } - key := v.Key() - if key.Kind() == reflect.Ptr { - key = key.Elem() - } - arg.Type = fmt.Sprintf("map[%s]%s", key.Name(), p.Name()) - } - - return arg + return v.Name() } // ExtractEndpoint extract *Endpoint from reflect.Method @@ -116,7 +67,7 @@ func ExtractEndpoint(method reflect.Method) *Endpoint { request := ExtractValue(reqType, 0) response := ExtractValue(rspType, 0) - if request == nil || response == nil { + if request == "" || response == "" { return nil } @@ -135,7 +86,7 @@ func ExtractEndpoint(method reflect.Method) *Endpoint { } // ExtractSubValue exctact *Value from reflect.Type -func ExtractSubValue(typ reflect.Type) *Value { +func ExtractSubValue(typ reflect.Type) string { var reqType reflect.Type switch typ.NumIn() { case 1: @@ -145,7 +96,7 @@ func ExtractSubValue(typ reflect.Type) *Value { case 3: reqType = typ.In(2) default: - return nil + return "" } return ExtractValue(reqType, 0) } diff --git a/register/extractor_test.go b/register/extractor_test.go index 901cda2c..9bb6c895 100644 --- a/register/extractor_test.go +++ b/register/extractor_test.go @@ -36,28 +36,21 @@ func TestExtractEndpoint(t *testing.T) { t.Fatalf("Expected handler Test, got %s", endpoints[0].Name) } - if endpoints[0].Request == nil { + if endpoints[0].Request == "" { t.Fatal("Expected non nil Request") } - if endpoints[0].Response == nil { + if endpoints[0].Response == "" { t.Fatal("Expected non nil Request") } - if endpoints[0].Request.Name != "TestRequest" { - t.Fatalf("Expected TestRequest got %s", endpoints[0].Request.Name) + if endpoints[0].Request != "TestRequest" { + t.Fatalf("Expected TestRequest got %s", endpoints[0].Request) } - if endpoints[0].Response.Name != "TestResponse" { - t.Fatalf("Expected TestResponse got %s", endpoints[0].Response.Name) - } - - if endpoints[0].Request.Type != "TestRequest" { - t.Fatalf("Expected TestRequest type got %s", endpoints[0].Request.Type) - } - - if endpoints[0].Response.Type != "TestResponse" { - t.Fatalf("Expected TestResponse type got %s", endpoints[0].Response.Type) + if endpoints[0].Response != "TestResponse" { + t.Fatalf("Expected TestResponse got %s", endpoints[0].Response) } + t.Logf("XXX %#+v\n", endpoints[0]) } diff --git a/register/memory.go b/register/memory.go index 8ac17bb6..953c4177 100644 --- a/register/memory.go +++ b/register/memory.go @@ -490,15 +490,6 @@ func recordToService(r *record, domain string) *Service { endpoints := make([]*Endpoint, len(r.Endpoints)) for i, e := range r.Endpoints { - request := new(Value) - if e.Request != nil { - *request = *e.Request - } - response := new(Value) - if e.Response != nil { - *response = *e.Response - } - metadata := make(map[string]string, len(e.Metadata)) for k, v := range e.Metadata { metadata[k] = v @@ -506,8 +497,8 @@ func recordToService(r *record, domain string) *Service { endpoints[i] = &Endpoint{ Name: e.Name, - Request: request, - Response: response, + Request: e.Request, + Response: e.Response, Metadata: metadata, } } diff --git a/register/register.go b/register/register.go index 17119960..4f336725 100644 --- a/register/register.go +++ b/register/register.go @@ -59,19 +59,12 @@ type Node struct { // Endpoint holds endpoint register info type Endpoint struct { - Request *Value `json:"request"` - Response *Value `json:"response"` + Request string `json:"request"` + Response string `json:"response"` Metadata metadata.Metadata `json:"metadata"` Name string `json:"name"` } -// Value holds additional kv stuff -type Value struct { - Name string `json:"name"` - Type string `json:"type"` - Values []*Value `json:"values"` -} - // Option func signature type Option func(*Options)