From b4a37fd2d5c904d322827682da971aeea29fb35c Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com.> Date: Tue, 15 Apr 2025 15:10:22 +0100 Subject: [PATCH] fix pipelines via changing to service --- build.gradle | 2 +- .../software/SPDF/config/AppConfig.java | 27 --------- .../web/GlobalUploadLimitWebController.java | 30 ---------- .../controller/web/UploadLimitService.java | 55 +++++++++++++++++++ .../resources/templates/fragments/common.html | 12 ++-- 5 files changed, 62 insertions(+), 64 deletions(-) delete mode 100644 src/main/java/stirling/software/SPDF/controller/web/GlobalUploadLimitWebController.java create mode 100644 src/main/java/stirling/software/SPDF/controller/web/UploadLimitService.java diff --git a/build.gradle b/build.gradle index eef7c6de..b49b03c0 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,7 @@ ext { } group = "stirling.software" -version = "0.45.5" +version = "0.45.6" java { // 17 is lowest but we support and recommend 21 diff --git a/src/main/java/stirling/software/SPDF/config/AppConfig.java b/src/main/java/stirling/software/SPDF/config/AppConfig.java index 146f9762..1c850b2d 100644 --- a/src/main/java/stirling/software/SPDF/config/AppConfig.java +++ b/src/main/java/stirling/software/SPDF/config/AppConfig.java @@ -109,33 +109,6 @@ public class AppConfig { return (rateLimit != null) ? Boolean.valueOf(rateLimit) : false; } - @Bean(name = "uploadLimit") - public long uploadLimit() { - String maxUploadSize = - applicationProperties.getSystem().getFileUploadLimit() != null - ? applicationProperties.getSystem().getFileUploadLimit() - : ""; - - if (maxUploadSize.isEmpty()) { - return 0; - } else if (!new Regex("^[1-9][0-9]{0,2}[KMGkmg][Bb]$").matches(maxUploadSize)) { - log.error( - "Invalid maxUploadSize format. Expected format: [1-9][0-9]{0,2}[KMGkmg][Bb], but got: {}", - maxUploadSize); - return 0; - } else { - String unit = maxUploadSize.replaceAll("[1-9][0-9]{0,2}", "").toUpperCase(); - String number = maxUploadSize.replaceAll("[KMGkmg][Bb]", ""); - long size = Long.parseLong(number); - return switch (unit) { - case "KB" -> size * 1024; - case "MB" -> size * 1024 * 1024; - case "GB" -> size * 1024 * 1024 * 1024; - default -> 0; - }; - } - } - @Bean(name = "RunningInDocker") public boolean runningInDocker() { return Files.exists(Paths.get("/.dockerenv")); diff --git a/src/main/java/stirling/software/SPDF/controller/web/GlobalUploadLimitWebController.java b/src/main/java/stirling/software/SPDF/controller/web/GlobalUploadLimitWebController.java deleted file mode 100644 index 1c8b2b3a..00000000 --- a/src/main/java/stirling/software/SPDF/controller/web/GlobalUploadLimitWebController.java +++ /dev/null @@ -1,30 +0,0 @@ -package stirling.software.SPDF.controller.web; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ModelAttribute; - -@Component -@ControllerAdvice -public class GlobalUploadLimitWebController { - - @Autowired() private long uploadLimit; - - @ModelAttribute("uploadLimit") - public long populateUploadLimit() { - return uploadLimit; - } - - @ModelAttribute("uploadLimitReadable") - public String populateReadableLimit() { - return humanReadableByteCount(uploadLimit); - } - - private String humanReadableByteCount(long bytes) { - if (bytes < 1024) return bytes + " B"; - int exp = (int) (Math.log(bytes) / Math.log(1024)); - String pre = "KMGTPE".charAt(exp - 1) + "B"; - return String.format("%.1f %s", bytes / Math.pow(1024, exp), pre); - } -} diff --git a/src/main/java/stirling/software/SPDF/controller/web/UploadLimitService.java b/src/main/java/stirling/software/SPDF/controller/web/UploadLimitService.java new file mode 100644 index 00000000..c1c9aebc --- /dev/null +++ b/src/main/java/stirling/software/SPDF/controller/web/UploadLimitService.java @@ -0,0 +1,55 @@ +package stirling.software.SPDF.controller.web; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import lombok.extern.slf4j.Slf4j; +import stirling.software.SPDF.model.ApplicationProperties; + +import java.util.regex.Pattern; + +@Service +@Slf4j +public class UploadLimitService { + + @Autowired + private ApplicationProperties applicationProperties; + + public long getUploadLimit() { + String maxUploadSize = + applicationProperties.getSystem().getFileUploadLimit() != null + ? applicationProperties.getSystem().getFileUploadLimit() + : ""; + + if (maxUploadSize.isEmpty()) { + return 0; + } else if (!Pattern.compile("^[1-9][0-9]{0,2}[KMGkmg][Bb]$").matcher(maxUploadSize).matches()) { + log.error( + "Invalid maxUploadSize format. Expected format: [1-9][0-9]{0,2}[KMGkmg][Bb], but got: {}", + maxUploadSize); + return 0; + } else { + String unit = maxUploadSize.replaceAll("[1-9][0-9]{0,2}", "").toUpperCase(); + String number = maxUploadSize.replaceAll("[KMGkmg][Bb]", ""); + long size = Long.parseLong(number); + return switch (unit) { + case "KB" -> size * 1024; + case "MB" -> size * 1024 * 1024; + case "GB" -> size * 1024 * 1024 * 1024; + default -> 0; + }; + } + } + + //TODO: why do this server side not client? + public String getReadableUploadLimit() { + return humanReadableByteCount(getUploadLimit()); + } + + private String humanReadableByteCount(long bytes) { + if (bytes < 1024) return bytes + " B"; + int exp = (int) (Math.log(bytes) / Math.log(1024)); + String pre = "KMGTPE".charAt(exp - 1) + "B"; + return String.format("%.1f %s", bytes / Math.pow(1024, exp), pre); + } +} \ No newline at end of file diff --git a/src/main/resources/templates/fragments/common.html b/src/main/resources/templates/fragments/common.html index b8211481..7fd26c77 100644 --- a/src/main/resources/templates/fragments/common.html +++ b/src/main/resources/templates/fragments/common.html @@ -240,8 +240,8 @@ window.stirlingPDF.sessionExpired = /*[[#{session.expired}]]*/ ''; window.stirlingPDF.refreshPage = /*[[#{session.refreshPage}]]*/ 'Refresh Page'; window.stirlingPDF.error = /*[[#{error}]]*/ "Error"; - window.stirlingPDF.uploadLimit = /*[[${uploadLimit}]]*/ 0; - window.stirlingPDF.uploadLimitReadable = /*[[${uploadLimitReadable}]]*/ 'Unlimited'; + window.stirlingPDF.uploadLimitReadable = /*[[${@uploadLimitService.getReadableUploadLimit()}]]*/ 'Unlimited'; + window.stirlingPDF.uploadLimit = /*[[${@uploadLimitService.getUploadLimit()}]]*/ 0; window.stirlingPDF.uploadLimitExceededSingular = /*[[#{uploadLimitExceededSingular}]]*/ 'is too large. Maximum allowed size is'; window.stirlingPDF.uploadLimitExceededPlural = /*[[#{uploadLimitExceededPlural}]]*/ 'are too large. Maximum allowed size is'; })(); @@ -292,10 +292,10 @@
-
- Maximum file size: - -
+
+ Maximum file size: + +