This is an automated email from the ASF dual-hosted git repository.

riemer pushed a commit to branch 
3285-extend-allowed-file-extensions-for-upload-with-environment-variable
in repository https://gitbox.apache.org/repos/asf/streampipes.git


The following commit(s) were added to 
refs/heads/3285-extend-allowed-file-extensions-for-upload-with-environment-variable
 by this push:
     new 6586df6f82 feat(#3285): Introduce environment variable to define 
allowed extensions for file upload
6586df6f82 is described below

commit 6586df6f82a6b2c289aafdaaf49daa27812315d4
Author: Dominik Riemer <[email protected]>
AuthorDate: Fri Oct 4 13:11:48 2024 +0200

    feat(#3285): Introduce environment variable to define allowed extensions 
for file upload
---
 .../apache/streampipes/commons/constants/Envs.java |  3 ++-
 .../commons/environment/DefaultEnvironment.java    |  5 +++++
 .../commons/environment/Environment.java           |  2 ++
 .../apache/streampipes/sdk/helpers/Filetypes.java  | 24 +++++++++++++++++++---
 4 files changed, 30 insertions(+), 4 deletions(-)

diff --git 
a/streampipes-commons/src/main/java/org/apache/streampipes/commons/constants/Envs.java
 
b/streampipes-commons/src/main/java/org/apache/streampipes/commons/constants/Envs.java
index 00765b76b5..7ad56fe402 100644
--- 
a/streampipes-commons/src/main/java/org/apache/streampipes/commons/constants/Envs.java
+++ 
b/streampipes-commons/src/main/java/org/apache/streampipes/commons/constants/Envs.java
@@ -107,7 +107,8 @@ public enum Envs {
   SP_PULSAR_URL("SP_PULSAR_URL", "pulsar://localhost:6650"),
 
   // expects a comma separated string of service names
-  SP_SERVICE_TAGS("SP_SERVICE_TAGS", "");
+  SP_SERVICE_TAGS("SP_SERVICE_TAGS", ""),
+  SP_ALLOWED_UPLOAD_FILETYPES("SP_ALLOWED_UPLOAD_FILETYPES", "", "");
 
   private final String envVariableName;
   private String defaultValue;
diff --git 
a/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/DefaultEnvironment.java
 
b/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/DefaultEnvironment.java
index 5b6d5428d6..36ed402360 100644
--- 
a/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/DefaultEnvironment.java
+++ 
b/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/DefaultEnvironment.java
@@ -323,4 +323,9 @@ public class DefaultEnvironment implements Environment {
     return new StringEnvironmentVariable(Envs.SP_SERVICE_TAGS);
   }
 
+  @Override
+  public StringEnvironmentVariable getAllowedUploadFiletypes() {
+    return new StringEnvironmentVariable(Envs.SP_ALLOWED_UPLOAD_FILETYPES);
+  }
+
 }
diff --git 
a/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/Environment.java
 
b/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/Environment.java
index 1a72910522..d1d6efab67 100644
--- 
a/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/Environment.java
+++ 
b/streampipes-commons/src/main/java/org/apache/streampipes/commons/environment/Environment.java
@@ -156,4 +156,6 @@ public interface Environment {
 
   StringEnvironmentVariable getCustomServiceTags();
 
+  StringEnvironmentVariable getAllowedUploadFiletypes();
+
 }
diff --git 
a/streampipes-sdk/src/main/java/org/apache/streampipes/sdk/helpers/Filetypes.java
 
b/streampipes-sdk/src/main/java/org/apache/streampipes/sdk/helpers/Filetypes.java
index b8895a9b1f..167518917a 100644
--- 
a/streampipes-sdk/src/main/java/org/apache/streampipes/sdk/helpers/Filetypes.java
+++ 
b/streampipes-sdk/src/main/java/org/apache/streampipes/sdk/helpers/Filetypes.java
@@ -17,8 +17,13 @@
  */
 package org.apache.streampipes.sdk.helpers;
 
+import org.apache.streampipes.commons.environment.Environments;
+
 import java.util.Arrays;
 import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 public enum Filetypes {
@@ -42,9 +47,22 @@ public enum Filetypes {
     return fileExtensions;
   }
 
-  public static List<String> getAllFileExtensions() {
-    return Stream.of(Filetypes.values())
+  public static Set<String> getAllFileExtensions() {
+    var filetypes = Stream.of(Filetypes.values())
         .flatMap(filetype -> filetype.getFileExtensions().stream())
-        .toList();
+        .collect(Collectors.toSet());
+    filetypes.addAll(getSupportedFiletypesFromEnv());
+    return filetypes;
+  }
+
+  private static Set<String> getSupportedFiletypesFromEnv() {
+    return Optional.ofNullable(Environments.getEnvironment()
+            .getAllowedUploadFiletypes()
+            .getValueOrDefault())
+        .stream()
+        .flatMap(allowedFiletypes -> 
Arrays.stream(allowedFiletypes.split(",")))
+        .map(String::trim)
+        .filter(s -> !s.isEmpty())
+        .collect(Collectors.toSet());
   }
 }

Reply via email to