@@ -201,9 +201,12 @@ func Generate(spec *openapi3.T, opts Configuration) (string, error) {
201201
202202 var strictServerOut string
203203 if opts .Generate .Strict {
204- responses , err := GenerateResponseDefinitions ("" , spec .Components .Responses )
205- if err != nil {
206- return "" , fmt .Errorf ("error generation response definitions for schema: %w" , err )
204+ var responses []ResponseDefinition
205+ if spec .Components != nil {
206+ responses , err = GenerateResponseDefinitions ("" , spec .Components .Responses )
207+ if err != nil {
208+ return "" , fmt .Errorf ("error generation response definitions for schema: %w" , err )
209+ }
207210 }
208211 strictServerResponses , err := GenerateStrictResponses (t , responses )
209212 if err != nil {
@@ -339,28 +342,31 @@ func Generate(spec *openapi3.T, opts Configuration) (string, error) {
339342}
340343
341344func GenerateTypeDefinitions (t * template.Template , swagger * openapi3.T , ops []OperationDefinition , excludeSchemas []string ) (string , error ) {
342- schemaTypes , err := GenerateTypesForSchemas (t , swagger .Components .Schemas , excludeSchemas )
343- if err != nil {
344- return "" , fmt .Errorf ("error generating Go types for component schemas: %w" , err )
345- }
345+ var allTypes []TypeDefinition
346+ if swagger .Components != nil {
347+ schemaTypes , err := GenerateTypesForSchemas (t , swagger .Components .Schemas , excludeSchemas )
348+ if err != nil {
349+ return "" , fmt .Errorf ("error generating Go types for component schemas: %w" , err )
350+ }
346351
347- paramTypes , err := GenerateTypesForParameters (t , swagger .Components .Parameters )
348- if err != nil {
349- return "" , fmt .Errorf ("error generating Go types for component parameters: %w" , err )
350- }
351- allTypes : = append (schemaTypes , paramTypes ... )
352+ paramTypes , err := GenerateTypesForParameters (t , swagger .Components .Parameters )
353+ if err != nil {
354+ return "" , fmt .Errorf ("error generating Go types for component parameters: %w" , err )
355+ }
356+ allTypes = append (schemaTypes , paramTypes ... )
352357
353- responseTypes , err := GenerateTypesForResponses (t , swagger .Components .Responses )
354- if err != nil {
355- return "" , fmt .Errorf ("error generating Go types for component responses: %w" , err )
356- }
357- allTypes = append (allTypes , responseTypes ... )
358+ responseTypes , err := GenerateTypesForResponses (t , swagger .Components .Responses )
359+ if err != nil {
360+ return "" , fmt .Errorf ("error generating Go types for component responses: %w" , err )
361+ }
362+ allTypes = append (allTypes , responseTypes ... )
358363
359- bodyTypes , err := GenerateTypesForRequestBodies (t , swagger .Components .RequestBodies )
360- if err != nil {
361- return "" , fmt .Errorf ("error generating Go types for component request bodies: %w" , err )
364+ bodyTypes , err := GenerateTypesForRequestBodies (t , swagger .Components .RequestBodies )
365+ if err != nil {
366+ return "" , fmt .Errorf ("error generating Go types for component request bodies: %w" , err )
367+ }
368+ allTypes = append (allTypes , bodyTypes ... )
362369 }
363- allTypes = append (allTypes , bodyTypes ... )
364370
365371 // Go through all operations, and add their types to allTypes, so that we can
366372 // scan all of them for enums. Operation definitions are handled differently
@@ -893,6 +899,10 @@ func OperationImports(ops []OperationDefinition) (map[string]goImport, error) {
893899
894900func GetTypeDefinitionsImports (swagger * openapi3.T , excludeSchemas []string ) (map [string ]goImport , error ) {
895901 res := map [string ]goImport {}
902+ if swagger .Components == nil {
903+ return res , nil
904+ }
905+
896906 schemaImports , err := GetSchemaImports (swagger .Components .Schemas , excludeSchemas )
897907 if err != nil {
898908 return nil , err
0 commit comments