forked from loafle/openapi-generator-original
Improve online gen resolution of host for the download link (#1580)
Fix #1517
This commit is contained in:
parent
cf2ddb8b8c
commit
54b5093381
@ -19,11 +19,11 @@ package org.openapitools.codegen.online.service;
|
|||||||
|
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openapitools.codegen.online.api.GenApiDelegate;
|
|
||||||
import org.openapitools.codegen.CliOption;
|
import org.openapitools.codegen.CliOption;
|
||||||
import org.openapitools.codegen.CodegenConfig;
|
import org.openapitools.codegen.CodegenConfig;
|
||||||
import org.openapitools.codegen.CodegenConfigLoader;
|
import org.openapitools.codegen.CodegenConfigLoader;
|
||||||
import org.openapitools.codegen.CodegenType;
|
import org.openapitools.codegen.CodegenType;
|
||||||
|
import org.openapitools.codegen.online.api.GenApiDelegate;
|
||||||
import org.openapitools.codegen.online.model.Generated;
|
import org.openapitools.codegen.online.model.Generated;
|
||||||
import org.openapitools.codegen.online.model.GeneratorInput;
|
import org.openapitools.codegen.online.model.GeneratorInput;
|
||||||
import org.openapitools.codegen.online.model.ResponseCode;
|
import org.openapitools.codegen.online.model.ResponseCode;
|
||||||
@ -36,8 +36,9 @@ import org.springframework.http.ResponseEntity;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.context.request.NativeWebRequest;
|
import org.springframework.web.context.request.NativeWebRequest;
|
||||||
import org.springframework.web.server.ResponseStatusException;
|
import org.springframework.web.server.ResponseStatusException;
|
||||||
|
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
|
||||||
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -114,33 +115,7 @@ public class GenApiService implements GenApiDelegate {
|
|||||||
@Override
|
@Override
|
||||||
public ResponseEntity<ResponseCode> generateClient(String language, GeneratorInput generatorInput) {
|
public ResponseEntity<ResponseCode> generateClient(String language, GeneratorInput generatorInput) {
|
||||||
String filename = Generator.generateClient(language, generatorInput);
|
String filename = Generator.generateClient(language, generatorInput);
|
||||||
String host = System.getenv("GENERATOR_HOST");
|
return getResponse(filename, language + "-client");
|
||||||
HttpServletRequest servletRequest = request.getNativeRequest(HttpServletRequest.class);
|
|
||||||
|
|
||||||
if (StringUtils.isBlank(host)) {
|
|
||||||
String scheme = servletRequest.getHeader("X-SSL");
|
|
||||||
String port = "";
|
|
||||||
if ("1".equals(scheme)) {
|
|
||||||
scheme = "https";
|
|
||||||
} else {
|
|
||||||
scheme = servletRequest.getScheme();
|
|
||||||
port = ":" + servletRequest.getServerPort();
|
|
||||||
}
|
|
||||||
host = scheme + "://" + servletRequest.getServerName() + port;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (filename != null) {
|
|
||||||
String code = String.valueOf(UUID.randomUUID().toString());
|
|
||||||
Generated g = new Generated();
|
|
||||||
g.setFilename(filename);
|
|
||||||
g.setFriendlyName(language + "-client");
|
|
||||||
fileMap.put(code, g);
|
|
||||||
System.out.println(code + ", " + filename);
|
|
||||||
String link = host + "/api/gen/download/" + code;
|
|
||||||
return ResponseEntity.ok().body(new ResponseCode(code, link));
|
|
||||||
} else {
|
|
||||||
return ResponseEntity.status(500).build();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -183,20 +158,27 @@ public class GenApiService implements GenApiDelegate {
|
|||||||
String filename = Generator.generateServer(framework, generatorInput);
|
String filename = Generator.generateServer(framework, generatorInput);
|
||||||
System.out.println("generated name: " + filename);
|
System.out.println("generated name: " + filename);
|
||||||
|
|
||||||
HttpServletRequest servletRequest = request.getNativeRequest(HttpServletRequest.class);
|
return getResponse(filename, framework + "-server");
|
||||||
|
}
|
||||||
|
|
||||||
String host =
|
private ResponseEntity<ResponseCode> getResponse(String filename, String friendlyName) {
|
||||||
servletRequest.getScheme() + "://" + servletRequest.getServerName() + ":"
|
String host = System.getenv("GENERATOR_HOST");
|
||||||
+ servletRequest.getServerPort();
|
|
||||||
|
UriComponentsBuilder uriBuilder;
|
||||||
|
if (!StringUtils.isBlank(host)) {
|
||||||
|
uriBuilder = UriComponentsBuilder.fromUriString(host);
|
||||||
|
} else {
|
||||||
|
uriBuilder = ServletUriComponentsBuilder.fromCurrentContextPath();
|
||||||
|
}
|
||||||
|
|
||||||
if (filename != null) {
|
if (filename != null) {
|
||||||
String code = String.valueOf(UUID.randomUUID().toString());
|
String code = UUID.randomUUID().toString();
|
||||||
Generated g = new Generated();
|
Generated g = new Generated();
|
||||||
g.setFilename(filename);
|
g.setFilename(filename);
|
||||||
g.setFriendlyName(framework + "-server");
|
g.setFriendlyName(friendlyName);
|
||||||
fileMap.put(code, g);
|
fileMap.put(code, g);
|
||||||
System.out.println(code + ", " + filename);
|
System.out.println(code + ", " + filename);
|
||||||
String link = host + "/api/gen/download/" + code;
|
String link = uriBuilder.path("/api/gen/download/").path(code).toUriString();
|
||||||
return ResponseEntity.ok().body(new ResponseCode(code, link));
|
return ResponseEntity.ok().body(new ResponseCode(code, link));
|
||||||
} else {
|
} else {
|
||||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user