@@ -44,6 +44,7 @@ const (
44
44
axml = "application/xml"
45
45
aplain = "text/plain"
46
46
ahtml = "text/html"
47
+ aform = "multipart/form-data"
47
48
)
48
49
49
50
var pkgCache map [string ]struct {} //pkg:controller:function:comments comments: key:value
@@ -52,7 +53,7 @@ var importlist map[string]string
52
53
var controllerList map [string ]map [string ]* swagger.Item //controllername Paths items
53
54
var modelsList map [string ]map [string ]swagger.Schema
54
55
var rootapi swagger.Swagger
55
- var astPkgs map [ string ]* ast.Package
56
+ var astPkgs [ ]* ast.Package
56
57
57
58
// refer to builtin.go
58
59
var basicTypes = map [string ]string {
@@ -89,7 +90,7 @@ func init() {
89
90
importlist = make (map [string ]string )
90
91
controllerList = make (map [string ]map [string ]* swagger.Item )
91
92
modelsList = make (map [string ]map [string ]swagger.Schema )
92
- astPkgs = map [ string ]* ast.Package {}
93
+ astPkgs = make ([ ]* ast.Package , 0 )
93
94
}
94
95
95
96
func ParsePackagesFromDir (dirpath string ) {
@@ -136,8 +137,8 @@ func parsePackageFromDir(path string) error {
136
137
return err
137
138
}
138
139
139
- for k , v := range folderPkgs {
140
- astPkgs [ k ] = v
140
+ for _ , v := range folderPkgs {
141
+ astPkgs = append ( astPkgs , v )
141
142
}
142
143
143
144
return nil
@@ -675,6 +676,8 @@ func parserComments(f *ast.FuncDecl, controllerName, pkgpath string) error {
675
676
case "html" :
676
677
opts .Consumes = append (opts .Consumes , ahtml )
677
678
opts .Produces = append (opts .Produces , ahtml )
679
+ case "form" :
680
+ opts .Consumes = append (opts .Consumes , aform )
678
681
}
679
682
}
680
683
} else if strings .HasPrefix (t , "@Security" ) {
@@ -860,14 +863,16 @@ func getModel(str string) (objectname string, m swagger.Schema, realTypes []stri
860
863
packageName := ""
861
864
m .Type = "object"
862
865
for _ , pkg := range astPkgs {
863
- for _ , fl := range pkg .Files {
864
- for k , d := range fl .Scope .Objects {
865
- if d .Kind == ast .Typ {
866
- if k != objectname {
867
- continue
866
+ if strs [0 ] == pkg .Name {
867
+ for _ , fl := range pkg .Files {
868
+ for k , d := range fl .Scope .Objects {
869
+ if d .Kind == ast .Typ {
870
+ if k != objectname {
871
+ continue
872
+ }
873
+ packageName = pkg .Name
874
+ parseObject (d , k , & m , & realTypes , astPkgs , pkg .Name )
868
875
}
869
- packageName = pkg .Name
870
- parseObject (d , k , & m , & realTypes , astPkgs , pkg .Name )
871
876
}
872
877
}
873
878
}
@@ -885,7 +890,7 @@ func getModel(str string) (objectname string, m swagger.Schema, realTypes []stri
885
890
return
886
891
}
887
892
888
- func parseObject (d * ast.Object , k string , m * swagger.Schema , realTypes * []string , astPkgs map [ string ]* ast.Package , packageName string ) {
893
+ func parseObject (d * ast.Object , k string , m * swagger.Schema , realTypes * []string , astPkgs [ ]* ast.Package , packageName string ) {
889
894
ts , ok := d .Decl .(* ast.TypeSpec )
890
895
if ! ok {
891
896
beeLogger .Log .Fatalf ("Unknown type without TypeSec: %v\n " , d )
0 commit comments