prusa3d / Prusa-Link-Web

Prusa Web interface resources
GNU General Public License v3.0
114 stars 50 forks source link

Can't generate client from openapi.yaml #470

Open reinux opened 6 months ago

reinux commented 6 months ago

Using the standard OpenAPI generator tool, I get this error:

$ openapi-generator-cli generate -i openapi.yaml -g haskell-http-client -o openapi
Exception in thread "main" org.openapitools.codegen.SpecValidationException: There were issues with the specification. The option can be disabled via validateSpec (Maven/Gradle) or --skip-validate-spec (CLI).
 | Error count: 1, Warning count: 0
Errors: 
    -attribute paths.'/api/v1/files/{storage}/{path}'(post).requestBody.content with no media type is unsupported

    at org.openapitools.codegen.config.CodegenConfigurator.toContext(CodegenConfigurator.java:684)
    at org.openapitools.codegen.config.CodegenConfigurator.toClientOptInput(CodegenConfigurator.java:711)
    at org.openapitools.codegen.cmd.Generate.execute(Generate.java:511)
    at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
    at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)

This particular problem seems innocuous enough, given that it kind of makes sense that the content of the storage wouldn't be knowable statically. So I tried bypassing validation, and get this error:

  Exception: Cannot invoke "io.swagger.v3.oas.models.media.Schema.getAllOf()" because "schema" is null
    at org.openapitools.codegen.DefaultGenerator.processOperation(DefaultGenerator.java:1269)
    at org.openapitools.codegen.DefaultGenerator.processPaths(DefaultGenerator.java:1163)
    at org.openapitools.codegen.DefaultGenerator.generateApis(DefaultGenerator.java:609)
    at org.openapitools.codegen.DefaultGenerator.generate(DefaultGenerator.java:994)
    at org.openapitools.codegen.cmd.Generate.execute(Generate.java:519)
    at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
    at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
Caused by: java.lang.NullPointerException: Cannot invoke "io.swagger.v3.oas.models.media.Schema.getAllOf()" because "schema" is null
    at org.openapitools.codegen.utils.ModelUtils.hasAllOf(ModelUtils.java:1851)
    at org.openapitools.codegen.utils.ModelUtils.isAllOf(ModelUtils.java:1834)
    at org.openapitools.codegen.DefaultCodegen.fromRequestBody(DefaultCodegen.java:7601)
    at org.openapitools.codegen.DefaultCodegen.fromOperation(DefaultCodegen.java:4658)
    at org.openapitools.codegen.DefaultGenerator.processOperation(DefaultGenerator.java:1237)
    ... 6 more

This seems to happen with any language output, not just Haskell. I tried Java, C# and Python so far.

I get other errors using other generator tools.