commit
2c9cb292df
@ -141,6 +141,65 @@ func renderServiceRoutes(service spec.Service, groups []spec.Group, paths swagge
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if defineStruct, ok := route.RequestType.(spec.DefineStruct); ok {
|
if defineStruct, ok := route.RequestType.(spec.DefineStruct); ok {
|
||||||
|
for _, member := range defineStruct.Members {
|
||||||
|
if member.Name == "" {
|
||||||
|
memberDefineStruct, _ := member.Type.(spec.DefineStruct)
|
||||||
|
for _,m:=range memberDefineStruct.Members{
|
||||||
|
if strings.Contains(m.Tag, "header") {
|
||||||
|
tempKind := swaggerMapTypes[strings.Replace(m.Type.Name(), "[]", "", -1)]
|
||||||
|
|
||||||
|
ftype, format, ok := primitiveSchema(tempKind, m.Type.Name())
|
||||||
|
if !ok {
|
||||||
|
ftype = tempKind.String()
|
||||||
|
format = "UNKNOWN"
|
||||||
|
}
|
||||||
|
sp := swaggerParameterObject{In: "header", Type: ftype, Format: format}
|
||||||
|
|
||||||
|
for _, tag := range m.Tags() {
|
||||||
|
sp.Name = tag.Name
|
||||||
|
if len(tag.Options) == 0 {
|
||||||
|
sp.Required = true
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
required := true
|
||||||
|
for _, option := range tag.Options {
|
||||||
|
if strings.HasPrefix(option, optionsOption) {
|
||||||
|
segs := strings.SplitN(option, equalToken, 2)
|
||||||
|
if len(segs) == 2 {
|
||||||
|
sp.Enum = strings.Split(segs[1], optionSeparator)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.HasPrefix(option, rangeOption) {
|
||||||
|
segs := strings.SplitN(option, equalToken, 2)
|
||||||
|
if len(segs) == 2 {
|
||||||
|
min, max, ok := parseRangeOption(segs[1])
|
||||||
|
if ok {
|
||||||
|
sp.Schema.Minimum = min
|
||||||
|
sp.Schema.Maximum = max
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.HasPrefix(option, defaultOption) {
|
||||||
|
segs := strings.Split(option, equalToken)
|
||||||
|
if len(segs) == 2 {
|
||||||
|
sp.Default = segs[1]
|
||||||
|
}
|
||||||
|
} else if strings.HasPrefix(option, optionalOption) || strings.HasPrefix(option, omitemptyOption) {
|
||||||
|
required = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sp.Required = required
|
||||||
|
}
|
||||||
|
sp.Description = strings.TrimLeft(m.Comment, "//")
|
||||||
|
parameters = append(parameters, sp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
if strings.ToUpper(route.Method) == http.MethodGet {
|
if strings.ToUpper(route.Method) == http.MethodGet {
|
||||||
for _, member := range defineStruct.Members {
|
for _, member := range defineStruct.Members {
|
||||||
if strings.Contains(member.Tag, "path") {
|
if strings.Contains(member.Tag, "path") {
|
||||||
@ -316,12 +375,33 @@ func renderReplyAsDefinition(d swaggerDefinitionsObject, m messageMap, p []spec.
|
|||||||
if hasPathParameters(member) {
|
if hasPathParameters(member) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
kv := keyVal{Value: schemaOfField(member)}
|
kv := keyVal{Value: schemaOfField(member)}
|
||||||
kv.Key = member.Name
|
kv.Key = member.Name
|
||||||
if tag, err := member.GetPropertyName(); err == nil {
|
if tag, err := member.GetPropertyName(); err == nil {
|
||||||
kv.Key = tag
|
kv.Key = tag
|
||||||
}
|
}
|
||||||
|
if kv.Key == ""{
|
||||||
|
memberStruct ,_ := member.Type.(spec.DefineStruct)
|
||||||
|
for _, m:=range memberStruct.Members{
|
||||||
|
if strings.Contains(m.Tag, "header") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
mkv := keyVal{
|
||||||
|
Value:schemaOfField(m),
|
||||||
|
Key: m.Name,
|
||||||
|
}
|
||||||
|
|
||||||
|
if tag, err := m.GetPropertyName(); err == nil {
|
||||||
|
mkv.Key = tag
|
||||||
|
}
|
||||||
|
if schema.Properties == nil {
|
||||||
|
schema.Properties = &swaggerSchemaObjectProperties{}
|
||||||
|
}
|
||||||
|
*schema.Properties = append(*schema.Properties, mkv)
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
if schema.Properties == nil {
|
if schema.Properties == nil {
|
||||||
schema.Properties = &swaggerSchemaObjectProperties{}
|
schema.Properties = &swaggerSchemaObjectProperties{}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user