Skip to content

Commit 4f4a7af

Browse files
authored
Merge pull request #10886 from SlavchoArsovski/3.0.0
sanitize specification url, so it works for all types of OS. Fix for Wind…
2 parents bab2a95 + c7b3222 commit 4f4a7af

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/v3/config/CodegenConfigurator.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ public CodegenConfigurator setResolveFully(boolean resolveFully) {
431431
}
432432

433433
public String loadSpecContent(String location, List<AuthorizationValue> auths) throws Exception{
434-
location = location.replaceAll("\\\\","/");
434+
location = sanitizeSpecificationUrl(location);
435435
String data = "";
436436
if (location.toLowerCase().startsWith("http")) {
437437
data = RemoteUrl.urlToString(location, auths);
@@ -453,6 +453,10 @@ public String loadSpecContent(String location, List<AuthorizationValue> auths) t
453453
return data;
454454
}
455455

456+
private String sanitizeSpecificationUrl(String specificationUrl) {
457+
return specificationUrl.replaceAll("\\\\","/");
458+
}
459+
456460
public ClientOptInput toClientOptInput() {
457461

458462
Validate.notEmpty(lang, "language must be specified");
@@ -494,36 +498,37 @@ public ClientOptInput toClientOptInput() {
494498
LOGGER.debug("getClientOptInput - parsed inputSpec");
495499
} else {
496500
String specContent = null;
501+
String sanitizedSpecificationUrl = sanitizeSpecificationUrl(inputSpecURL);
497502
try {
498-
specContent = loadSpecContent(inputSpecURL, authorizationValues);
503+
specContent = loadSpecContent(sanitizedSpecificationUrl, authorizationValues);
499504
} catch (Exception e) {
500-
String msg = "Unable to read URL: " + inputSpecURL;
505+
String msg = "Unable to read URL: " + sanitizedSpecificationUrl;
501506
LOGGER.error(msg, e);
502507
throw new IllegalArgumentException(msg);
503508
}
504509

505510
if (StringUtils.isBlank(specContent)) {
506-
String msg = "Empty content found in URL: " + inputSpecURL;
511+
String msg = "Empty content found in URL: " + sanitizedSpecificationUrl;
507512
LOGGER.error(msg);
508513
throw new IllegalArgumentException(msg);
509514
}
510515
config.setInputSpec(specContent);
511-
config.setInputURL(inputSpecURL);
516+
config.setInputURL(sanitizedSpecificationUrl);
512517
ParseOptions options = new ParseOptions();
513518
options.setResolve(true);
514519
options.setResolveFully(resolveFully);
515520
options.setFlatten(true);
516521
options.setFlattenComposedSchemas(flattenInlineSchema);
517-
SwaggerParseResult result = new OpenAPIParser().readLocation(inputSpecURL, authorizationValues, options);
522+
SwaggerParseResult result = new OpenAPIParser().readLocation(sanitizedSpecificationUrl, authorizationValues, options);
518523
OpenAPI openAPI = result.getOpenAPI();
519-
LOGGER.debug("getClientOptInput - parsed inputSpecURL " + inputSpecURL);
524+
LOGGER.debug("getClientOptInput - parsed inputSpecURL " + sanitizedSpecificationUrl);
520525
input.opts(new ClientOpts())
521526
.openAPI(openAPI);
522527

523528
if (config.needsUnflattenedSpec()) {
524529
ParseOptions optionsUnflattened = new ParseOptions();
525530
optionsUnflattened.setResolve(true);
526-
SwaggerParseResult resultUnflattened = new OpenAPIParser().readLocation(inputSpecURL, authorizationValues, optionsUnflattened);
531+
SwaggerParseResult resultUnflattened = new OpenAPIParser().readLocation(sanitizedSpecificationUrl, authorizationValues, optionsUnflattened);
527532
OpenAPI openAPIUnflattened = resultUnflattened.getOpenAPI();
528533
config.setUnflattenedOpenAPI(openAPIUnflattened);
529534
}

0 commit comments

Comments
 (0)