forked from loafle/openapi-generator-original
fix: authorization values in Java modules (#20644)
This commit is contained in:
parent
85ab65c4ca
commit
70df1170cc
@ -22,9 +22,11 @@ import io.airlift.airline.Option;
|
|||||||
|
|
||||||
import io.swagger.parser.OpenAPIParser;
|
import io.swagger.parser.OpenAPIParser;
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
|
import io.swagger.v3.parser.core.models.AuthorizationValue;
|
||||||
import io.swagger.v3.parser.core.models.ParseOptions;
|
import io.swagger.v3.parser.core.models.ParseOptions;
|
||||||
import io.swagger.v3.parser.core.models.SwaggerParseResult;
|
import io.swagger.v3.parser.core.models.SwaggerParseResult;
|
||||||
import org.apache.commons.text.WordUtils;
|
import org.apache.commons.text.WordUtils;
|
||||||
|
import org.openapitools.codegen.auth.AuthParser;
|
||||||
import org.openapitools.codegen.validation.ValidationResult;
|
import org.openapitools.codegen.validation.ValidationResult;
|
||||||
import org.openapitools.codegen.validations.oas.OpenApiEvaluator;
|
import org.openapitools.codegen.validations.oas.OpenApiEvaluator;
|
||||||
import org.openapitools.codegen.validations.oas.RuleConfiguration;
|
import org.openapitools.codegen.validations.oas.RuleConfiguration;
|
||||||
@ -44,12 +46,20 @@ public class Validate extends OpenApiGeneratorCommand {
|
|||||||
@Option(name = { "--recommend"}, title = "recommend spec improvements")
|
@Option(name = { "--recommend"}, title = "recommend spec improvements")
|
||||||
private Boolean recommend;
|
private Boolean recommend;
|
||||||
|
|
||||||
|
@Option(
|
||||||
|
name = {"-a", "--auth"},
|
||||||
|
title = "authorization",
|
||||||
|
description = "adds authorization headers when fetching the OpenAPI definitions remotely. "
|
||||||
|
+ "Pass in a URL-encoded string of name:header with a comma separating multiple values")
|
||||||
|
private String auth;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
System.out.println("Validating spec (" + spec + ")");
|
System.out.println("Validating spec (" + spec + ")");
|
||||||
ParseOptions options = new ParseOptions();
|
ParseOptions options = new ParseOptions();
|
||||||
options.setResolve(true);
|
options.setResolve(true);
|
||||||
SwaggerParseResult result = new OpenAPIParser().readLocation(spec, null, options);
|
final List<AuthorizationValue> authorizationValues = AuthParser.parse(this.auth);
|
||||||
|
SwaggerParseResult result = new OpenAPIParser().readLocation(spec, authorizationValues, options);
|
||||||
List<String> messageList = result.getMessages();
|
List<String> messageList = result.getMessages();
|
||||||
Set<String> errors = new HashSet<>(messageList);
|
Set<String> errors = new HashSet<>(messageList);
|
||||||
Set<String> warnings = new HashSet<>();
|
Set<String> warnings = new HashSet<>();
|
||||||
|
@ -24,6 +24,7 @@ import io.swagger.v3.core.util.Json;
|
|||||||
import io.swagger.v3.core.util.Yaml;
|
import io.swagger.v3.core.util.Yaml;
|
||||||
import io.swagger.v3.parser.OpenAPIResolver;
|
import io.swagger.v3.parser.OpenAPIResolver;
|
||||||
import io.swagger.v3.parser.OpenAPIV3Parser;
|
import io.swagger.v3.parser.OpenAPIV3Parser;
|
||||||
|
import io.swagger.v3.parser.core.models.AuthorizationValue;
|
||||||
import io.swagger.v3.parser.core.models.ParseOptions;
|
import io.swagger.v3.parser.core.models.ParseOptions;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
@ -37,6 +38,7 @@ import org.apache.maven.plugins.annotations.*;
|
|||||||
import org.apache.maven.project.MavenProject;
|
import org.apache.maven.project.MavenProject;
|
||||||
import org.apache.maven.project.MavenProjectHelper;
|
import org.apache.maven.project.MavenProjectHelper;
|
||||||
import org.openapitools.codegen.*;
|
import org.openapitools.codegen.*;
|
||||||
|
import org.openapitools.codegen.auth.AuthParser;
|
||||||
import org.openapitools.codegen.config.CodegenConfigurator;
|
import org.openapitools.codegen.config.CodegenConfigurator;
|
||||||
import org.openapitools.codegen.config.GlobalSettings;
|
import org.openapitools.codegen.config.GlobalSettings;
|
||||||
import org.openapitools.codegen.config.MergedSpecBuilder;
|
import org.openapitools.codegen.config.MergedSpecBuilder;
|
||||||
@ -1002,8 +1004,10 @@ public class CodeGenMojo extends AbstractMojo {
|
|||||||
parseOptions.setResolve(true);
|
parseOptions.setResolve(true);
|
||||||
|
|
||||||
final URL remoteUrl = inputSpecRemoteUrl();
|
final URL remoteUrl = inputSpecRemoteUrl();
|
||||||
|
final List<AuthorizationValue> authorizationValues = AuthParser.parse(this.auth);
|
||||||
|
|
||||||
return Hashing.sha256().hashBytes(
|
return Hashing.sha256().hashBytes(
|
||||||
new OpenAPIParser().readLocation(remoteUrl == null ? inputSpec : remoteUrl.toString(), null, parseOptions)
|
new OpenAPIParser().readLocation(remoteUrl == null ? inputSpec : remoteUrl.toString(), authorizationValues, parseOptions)
|
||||||
.getOpenAPI().toString().getBytes(StandardCharsets.UTF_8)
|
.getOpenAPI().toString().getBytes(StandardCharsets.UTF_8)
|
||||||
).toString();
|
).toString();
|
||||||
}
|
}
|
||||||
@ -1089,7 +1093,9 @@ public class CodeGenMojo extends AbstractMojo {
|
|||||||
// Merge the OpenAPI spec file.
|
// Merge the OpenAPI spec file.
|
||||||
final var parseOptions = new ParseOptions();
|
final var parseOptions = new ParseOptions();
|
||||||
parseOptions.setResolve(true);
|
parseOptions.setResolve(true);
|
||||||
final var openApiMerged = new OpenAPIResolver(new OpenAPIV3Parser().readLocation(inputSpec, null, parseOptions).getOpenAPI()).resolve();
|
final List<AuthorizationValue> authorizationValues = AuthParser.parse(this.auth);
|
||||||
|
|
||||||
|
final var openApiMerged = new OpenAPIResolver(new OpenAPIV3Parser().readLocation(inputSpec, authorizationValues, parseOptions).getOpenAPI()).resolve();
|
||||||
|
|
||||||
// Switch based on JSON or YAML.
|
// Switch based on JSON or YAML.
|
||||||
final var extension = inputSpec.toLowerCase(Locale.ROOT).endsWith(".json") ? ".json" : ".yaml";
|
final var extension = inputSpec.toLowerCase(Locale.ROOT).endsWith(".json") ? ".json" : ".yaml";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user