From 9aa450eafd8d221e636feb887f358c10131bf55e Mon Sep 17 00:00:00 2001 From: Ziyi Zhang Date: Mon, 11 Apr 2022 14:25:08 +0800 Subject: [PATCH 1/3] feat: add pointer type Signed-off-by: Ziyi Zhang --- generate/entities.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/generate/entities.go b/generate/entities.go index 87d54e7..ec55c02 100644 --- a/generate/entities.go +++ b/generate/entities.go @@ -10,11 +10,17 @@ import ( var swaggerMapTypes = map[string]reflect.Kind{ "string": reflect.String, + "*string": reflect.String, "int": reflect.Int, + "*int": reflect.Int, "int32": reflect.Int, + "*int32": reflect.Int, "uint32": reflect.Int, + "*uint32": reflect.Int, "uint64": reflect.Int64, + "*uint64": reflect.Int64, "int64": reflect.Int64, + "*int64": reflect.Int64, "[]string": reflect.Slice, "[]int": reflect.Slice, "[]int64": reflect.Slice, @@ -22,9 +28,13 @@ var swaggerMapTypes = map[string]reflect.Kind{ "[]uint32": reflect.Slice, "[]uint64": reflect.Slice, "bool": reflect.Bool, + "*bool": reflect.Bool, "struct": reflect.Struct, + "*struct": reflect.Struct, "float32": reflect.Float32, + "*float32": reflect.Float32, "float64": reflect.Float64, + "*float64": reflect.Float64, } // http://swagger.io/specification/#infoObject From 10c670eac27af29a5f078431a06f2ed90ea69dd5 Mon Sep 17 00:00:00 2001 From: soasurs Date: Fri, 15 Apr 2022 12:39:39 +0800 Subject: [PATCH 2/3] fix: remove duplicated path params in request body Signed-off-by: soasurs --- generate/parser.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/generate/parser.go b/generate/parser.go index d6d3d78..359f68b 100644 --- a/generate/parser.go +++ b/generate/parser.go @@ -263,6 +263,10 @@ func renderReplyAsDefinition(d swaggerDefinitionsObject, m messageMap, p []spec. schema.Title = defineStruct.Name() for _, member := range defineStruct.Members { + if hasPathParameters(member) { + continue + } + kv := keyVal{Value: schemaOfField(member)} kv.Key = member.Name if tag, err := member.GetPropertyName(); err == nil { @@ -297,6 +301,15 @@ func renderReplyAsDefinition(d swaggerDefinitionsObject, m messageMap, p []spec. } } +func hasPathParameters(member spec.Member) bool { + for _, tag := range member.Tags() { + if tag.Key == "path" { + return true + } + } + + return false +} func schemaOfField(member spec.Member) swaggerSchemaObject { ret := swaggerSchemaObject{} From a0743019ac2a25d9b66a926b2d786b104549e663 Mon Sep 17 00:00:00 2001 From: soasurs Date: Fri, 15 Apr 2022 12:59:22 +0800 Subject: [PATCH 3/3] feat: apply separate security requirement object for each route Signed-off-by: soasurs --- generate/parser.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/generate/parser.go b/generate/parser.go index 359f68b..a82e357 100644 --- a/generate/parser.go +++ b/generate/parser.go @@ -59,7 +59,7 @@ func applyGenerate(p *plugin.Plugin, host string, basePath string) (*swaggerObje newSecDefValue.In = "header" s.SecurityDefinitions["apiKey"] = newSecDefValue - s.Security = append(s.Security, swaggerSecurityRequirementObject{"apiKey": []string{}}) + //s.Security = append(s.Security, swaggerSecurityRequirementObject{"apiKey": []string{}}) requestResponseRefs := refMap{} renderServiceRoutes(p.Api.Service, p.Api.Service.Groups, s.Paths, requestResponseRefs) @@ -233,6 +233,10 @@ func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swagge operationObject.Description = strings.ReplaceAll(operationObject.Description, "\"", "") + if group.Annotation.Properties["jwt"] != "" { + operationObject.Security = &[]swaggerSecurityRequirementObject{{"apiKey": []string{}}} + } + switch strings.ToUpper(route.Method) { case http.MethodGet: pathItemObject.Get = operationObject