Update parser.go

Support interface type
This commit is contained in:
MaxToby 2021-10-13 13:29:36 +08:00 committed by GitHub
parent cb37f89d87
commit 29d6aecb33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -58,9 +58,9 @@ func applyGenerate(p *plugin2.Plugin, host string, basePath string) (*swaggerObj
newSecDefValue.Type = "apiKey"
newSecDefValue.In = "header"
s.SecurityDefinitions["apiKey"] = newSecDefValue
s.Security = append(s.Security, swaggerSecurityRequirementObject{"apiKey": []string{}})
requestResponseRefs := refMap{}
renderServiceRoutes(p.Api.Service, p.Api.Service.Groups, s.Paths, requestResponseRefs)
m := messageMap{}
@ -98,6 +98,7 @@ func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swagge
continue
}
tempKind := swaggerMapTypes[strings.Replace(member.Type.Name(), "[]", "", -1)]
ftype, format, ok := primitiveSchema(tempKind, member.Type.Name())
if !ok {
ftype = tempKind.String()
@ -163,9 +164,11 @@ func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swagge
if value := group.GetAnnotation("group"); len(value) > 0 {
tags = value
}
if value := group.GetAnnotation("swtags"); len(value) > 0 {
tags = value
}
operationObject := &swaggerOperationObject{
Tags: []string{tags},
Parameters: parameters,
@ -263,7 +266,7 @@ func schemaOfField(member spec.Member) swaggerSchemaObject {
ret := swaggerSchemaObject{}
var core schemaCore
// spew.Dump(member)
kind := swaggerMapTypes[member.Type.Name()]
var props *swaggerSchemaObjectProperties
@ -277,8 +280,18 @@ func schemaOfField(member spec.Member) swaggerSchemaObject {
refTypeName := strings.Replace(member.Type.Name(), "[", "", 1)
refTypeName = strings.Replace(refTypeName, "]", "", 1)
refTypeName = strings.Replace(refTypeName, "*", "", 1)
core = schemaCore{
Ref: "#/definitions/" + refTypeName,
refTypeName = strings.Replace(refTypeName, "{", "", 1)
refTypeName = strings.Replace(refTypeName, "}", "", 1)
// interface
if refTypeName == "interface" {
core = schemaCore{Type: "object"}
} else if refTypeName == "mapstringstring" {
core = schemaCore{Type: "object"}
} else {
core = schemaCore{
Ref: "#/definitions/" + refTypeName,
}
}
case reflect.Slice:
tempKind := swaggerMapTypes[strings.Replace(member.Type.Name(), "[]", "", -1)]
@ -321,6 +334,9 @@ func schemaOfField(member spec.Member) swaggerSchemaObject {
Properties: props,
}
}
if strings.HasPrefix(member.Type.Name(), "map") {
fmt.Println("暂不支持map类型")
}
default:
ret = swaggerSchemaObject{
schemaCore: core,