@@ -23,13 +23,11 @@ func ToV3Swagger(swagger *openapi2.Swagger) (*openapi3.Swagger, error) {
2323 ExtensionProps : swagger .ExtensionProps ,
2424 ExternalDocs : swagger .ExternalDocs ,
2525 }
26- host := swagger . Host
27- if len (host ) > 0 {
26+
27+ if host := swagger . Host ; len (host ) > 0 {
2828 schemes := swagger .Schemes
2929 if len (schemes ) == 0 {
30- schemes = []string {
31- "https://" ,
32- }
30+ schemes = []string {"https://" }
3331 }
3432 basePath := swagger .BasePath
3533 for _ , scheme := range schemes {
@@ -38,11 +36,10 @@ func ToV3Swagger(swagger *openapi2.Swagger) (*openapi3.Swagger, error) {
3836 Host : host ,
3937 Path : basePath ,
4038 }
41- result .AddServer (& openapi3.Server {
42- URL : u .String (),
43- })
39+ result .AddServer (& openapi3.Server {URL : u .String ()})
4440 }
4541 }
42+
4643 if paths := swagger .Paths ; paths != nil {
4744 resultPaths := make (map [string ]* openapi3.PathItem , len (paths ))
4845 for path , pathItem := range paths {
@@ -54,6 +51,7 @@ func ToV3Swagger(swagger *openapi2.Swagger) (*openapi3.Swagger, error) {
5451 }
5552 result .Paths = resultPaths
5653 }
54+
5755 if parameters := swagger .Parameters ; parameters != nil {
5856 result .Components .Parameters = make (map [string ]* openapi3.ParameterRef )
5957 result .Components .RequestBodies = make (map [string ]* openapi3.RequestBodyRef )
@@ -70,6 +68,7 @@ func ToV3Swagger(swagger *openapi2.Swagger) (*openapi3.Swagger, error) {
7068 }
7169 }
7270 }
71+
7372 if responses := swagger .Responses ; responses != nil {
7473 result .Components .Responses = make (map [string ]* openapi3.ResponseRef , len (responses ))
7574 for k , response := range responses {
@@ -80,7 +79,9 @@ func ToV3Swagger(swagger *openapi2.Swagger) (*openapi3.Swagger, error) {
8079 result .Components .Responses [k ] = r
8180 }
8281 }
82+
8383 result .Components .Schemas = ToV3Schemas (swagger .Definitions )
84+
8485 if m := swagger .SecurityDefinitions ; m != nil {
8586 resultSecuritySchemes := make (map [string ]* openapi3.SecuritySchemeRef )
8687 for k , v := range m {
@@ -92,7 +93,15 @@ func ToV3Swagger(swagger *openapi2.Swagger) (*openapi3.Swagger, error) {
9293 }
9394 result .Components .SecuritySchemes = resultSecuritySchemes
9495 }
96+
9597 result .Security = ToV3SecurityRequirements (swagger .Security )
98+
99+ {
100+ sl := openapi3 .NewSwaggerLoader ()
101+ if err := sl .ResolveRefsIn (result , nil ); err != nil {
102+ return nil , err
103+ }
104+ }
96105 return result , nil
97106}
98107
@@ -508,7 +517,7 @@ func FromV3SchemaRef(schema *openapi3.SchemaRef) *openapi3.SchemaRef {
508517 return schema
509518 }
510519 if schema .Value .Items != nil {
511- schema .Value .Items = FromV3SchemaRef (( schema .Value .Items ) )
520+ schema .Value .Items = FromV3SchemaRef (schema .Value .Items )
512521 }
513522 for k , v := range schema .Value .Properties {
514523 schema .Value .Properties [k ] = FromV3SchemaRef (v )
@@ -814,7 +823,7 @@ var attemptedBodyParameterNames = []string{
814823}
815824
816825func stripNonCustomExtensions (extensions map [string ]interface {}) {
817- for extName , _ := range extensions {
826+ for extName := range extensions {
818827 if ! strings .HasPrefix (extName , "x-" ) {
819828 delete (extensions , extName )
820829 }
0 commit comments