Resolve wkhtml and formatting
This commit is contained in:
parent
2fa68be36b
commit
75cf3ed0c1
3 changed files with 93 additions and 76 deletions
|
@ -2,6 +2,7 @@ package stirling.software.SPDF.controller.api.pipeline;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
@ -23,7 +24,7 @@ import jakarta.servlet.ServletContext;
|
||||||
import stirling.software.SPDF.SPdfApplication;
|
import stirling.software.SPDF.SPdfApplication;
|
||||||
import stirling.software.SPDF.model.ApiEndpoint;
|
import stirling.software.SPDF.model.ApiEndpoint;
|
||||||
import stirling.software.SPDF.model.Role;
|
import stirling.software.SPDF.model.Role;
|
||||||
import java.util.List;
|
|
||||||
@Service
|
@Service
|
||||||
public class ApiDocService {
|
public class ApiDocService {
|
||||||
|
|
||||||
|
@ -39,13 +40,20 @@ public class ApiDocService {
|
||||||
|
|
||||||
return "http://localhost:" + port + contextPath + "/v1/api-docs";
|
return "http://localhost:" + port + contextPath + "/v1/api-docs";
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, List<String>> outputToFileTypes = new HashMap<>();
|
Map<String, List<String>> outputToFileTypes = new HashMap<>();
|
||||||
|
|
||||||
public List getExtensionTypes(boolean output, String operationName) {
|
public List getExtensionTypes(boolean output, String operationName) {
|
||||||
if (outputToFileTypes.size() == 0) {
|
if (outputToFileTypes.size() == 0) {
|
||||||
outputToFileTypes.put("PDF", Arrays.asList("pdf"));
|
outputToFileTypes.put("PDF", Arrays.asList("pdf"));
|
||||||
outputToFileTypes.put("IMAGE", Arrays.asList("png", "jpg", "jpeg", "gif", "webp", "bmp", "tif", "tiff", "svg", "psd", "ai", "eps"));
|
outputToFileTypes.put(
|
||||||
outputToFileTypes.put("ZIP", Arrays.asList("zip", "rar", "7z", "tar", "gz", "bz2", "xz", "lz", "lzma", "z"));
|
"IMAGE",
|
||||||
|
Arrays.asList(
|
||||||
|
"png", "jpg", "jpeg", "gif", "webp", "bmp", "tif", "tiff", "svg", "psd",
|
||||||
|
"ai", "eps"));
|
||||||
|
outputToFileTypes.put(
|
||||||
|
"ZIP",
|
||||||
|
Arrays.asList("zip", "rar", "7z", "tar", "gz", "bz2", "xz", "lz", "lzma", "z"));
|
||||||
outputToFileTypes.put("WORD", Arrays.asList("doc", "docx", "odt", "rtf"));
|
outputToFileTypes.put("WORD", Arrays.asList("doc", "docx", "odt", "rtf"));
|
||||||
outputToFileTypes.put("CSV", Arrays.asList("csv"));
|
outputToFileTypes.put("CSV", Arrays.asList("csv"));
|
||||||
outputToFileTypes.put("JS", Arrays.asList("js", "jsx"));
|
outputToFileTypes.put("JS", Arrays.asList("js", "jsx"));
|
||||||
|
@ -54,7 +62,12 @@ public class ApiDocService {
|
||||||
outputToFileTypes.put("TXT", Arrays.asList("txt", "text", "md", "markdown"));
|
outputToFileTypes.put("TXT", Arrays.asList("txt", "text", "md", "markdown"));
|
||||||
outputToFileTypes.put("PPT", Arrays.asList("ppt", "pptx", "odp"));
|
outputToFileTypes.put("PPT", Arrays.asList("ppt", "pptx", "odp"));
|
||||||
outputToFileTypes.put("XML", Arrays.asList("xml", "xsd", "xsl"));
|
outputToFileTypes.put("XML", Arrays.asList("xml", "xsd", "xsl"));
|
||||||
outputToFileTypes.put("BOOK", Arrays.asList("epub", "mobi", "azw3", "fb2", "txt", "docx")); // As noted before, "Boolean" isn't a file type but a value type.
|
outputToFileTypes.put(
|
||||||
|
"BOOK",
|
||||||
|
Arrays.asList(
|
||||||
|
"epub", "mobi", "azw3", "fb2", "txt",
|
||||||
|
"docx")); // As noted before, "Boolean" isn't a file type but a value
|
||||||
|
// type.
|
||||||
}
|
}
|
||||||
|
|
||||||
if (apiDocsJsonRootNode == null || apiDocumentation.size() == 0) {
|
if (apiDocsJsonRootNode == null || apiDocumentation.size() == 0) {
|
||||||
|
|
|
@ -89,8 +89,6 @@ public class PipelineProcessor {
|
||||||
}
|
}
|
||||||
// List outputFileTypes = apiDocService.getExtensionTypes(true, operation);
|
// List outputFileTypes = apiDocService.getExtensionTypes(true, operation);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
String url = getBaseUrl() + operation;
|
String url = getBaseUrl() + operation;
|
||||||
|
|
||||||
List<Resource> newOutputFiles = new ArrayList<>();
|
List<Resource> newOutputFiles = new ArrayList<>();
|
||||||
|
@ -109,11 +107,13 @@ public class PipelineProcessor {
|
||||||
|
|
||||||
ResponseEntity<byte[]> response = sendWebRequest(url, body);
|
ResponseEntity<byte[]> response = sendWebRequest(url, body);
|
||||||
|
|
||||||
// If the operation is filter and the response body is null or empty, skip
|
// If the operation is filter and the response body is null or empty,
|
||||||
|
// skip
|
||||||
// this
|
// this
|
||||||
// file
|
// file
|
||||||
if (operation.startsWith("filter-")
|
if (operation.startsWith("filter-")
|
||||||
&& (response.getBody() == null || response.getBody().length == 0)) {
|
&& (response.getBody() == null
|
||||||
|
|| response.getBody().length == 0)) {
|
||||||
logger.info("Skipping file due to failing {}", operation);
|
logger.info("Skipping file due to failing {}", operation);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -146,7 +146,10 @@ public class PipelineProcessor {
|
||||||
final List<String> finalinputFileTypes = inputFileTypes;
|
final List<String> finalinputFileTypes = inputFileTypes;
|
||||||
matchingFiles =
|
matchingFiles =
|
||||||
outputFiles.stream()
|
outputFiles.stream()
|
||||||
.filter(file -> finalinputFileTypes.stream().anyMatch(file.getFilename()::endsWith))
|
.filter(
|
||||||
|
file ->
|
||||||
|
finalinputFileTypes.stream()
|
||||||
|
.anyMatch(file.getFilename()::endsWith))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,10 +171,7 @@ public class PipelineProcessor {
|
||||||
|
|
||||||
// Handle the response
|
// Handle the response
|
||||||
if (response.getStatusCode().equals(HttpStatus.OK)) {
|
if (response.getStatusCode().equals(HttpStatus.OK)) {
|
||||||
processOutputFiles(
|
processOutputFiles(operation, response, newOutputFiles);
|
||||||
operation,
|
|
||||||
response,
|
|
||||||
newOutputFiles);
|
|
||||||
} else {
|
} else {
|
||||||
// Log error if the response status is not OK
|
// Log error if the response status is not OK
|
||||||
logPrintStream.println(
|
logPrintStream.println(
|
||||||
|
@ -236,9 +236,7 @@ public class PipelineProcessor {
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Resource> processOutputFiles(
|
private List<Resource> processOutputFiles(
|
||||||
String operation,
|
String operation, ResponseEntity<byte[]> response, List<Resource> newOutputFiles)
|
||||||
ResponseEntity<byte[]> response,
|
|
||||||
List<Resource> newOutputFiles)
|
|
||||||
throws IOException {
|
throws IOException {
|
||||||
// Define filename
|
// Define filename
|
||||||
String newFilename;
|
String newFilename;
|
||||||
|
|
|
@ -63,7 +63,13 @@ public class FileToPdf {
|
||||||
}
|
}
|
||||||
|
|
||||||
pdfBytes = Files.readAllBytes(tempOutputFile);
|
pdfBytes = Files.readAllBytes(tempOutputFile);
|
||||||
|
} catch (IOException e) {
|
||||||
|
pdfBytes = Files.readAllBytes(tempOutputFile);
|
||||||
|
if (pdfBytes.length < 1) {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
|
||||||
// Clean up temporary files
|
// Clean up temporary files
|
||||||
Files.delete(tempOutputFile);
|
Files.delete(tempOutputFile);
|
||||||
Files.delete(tempInputFile);
|
Files.delete(tempInputFile);
|
||||||
|
|
Loading…
Reference in a new issue