Skip to content

Commit d13c236

Browse files
committed
fix(filesystems): make compression codec more robust to encoding
1 parent 6ffdc44 commit d13c236

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

connect-file-pulse-filesystems/filepulse-local-fs/src/main/java/io/streamthoughts/kafka/connect/filepulse/fs/codec/GZipCodec.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,17 @@
2626
import java.io.FileInputStream;
2727
import java.io.IOException;
2828
import java.nio.file.Files;
29+
import java.util.Arrays;
2930
import java.util.HashSet;
3031
import java.util.Map;
3132
import java.util.Objects;
33+
import java.util.Optional;
3234
import java.util.Set;
3335
import java.util.zip.GZIPInputStream;
3436

3537
public class GZipCodec implements CodecHandler {
3638

37-
private static Logger LOG = LoggerFactory.getLogger(GZipCodec.class);
39+
private static final Logger LOG = LoggerFactory.getLogger(GZipCodec.class);
3840

3941
private static final Set<String> MIME_TYPES = new HashSet<>();
4042

@@ -57,8 +59,11 @@ public void configure(final Map<String, ?> configs) {
5759
public boolean canRead(final File file) {
5860
Objects.requireNonNull(file, "file can't be null");
5961
try {
60-
final String type = Files.probeContentType(file.toPath());
61-
return MIME_TYPES.contains(type);
62+
final Optional<String> contentType = Optional.ofNullable(Files.probeContentType(file.toPath()));
63+
return contentType.map(s -> Arrays.stream(s.split(";"))
64+
.map(String::trim)
65+
.anyMatch(MIME_TYPES::contains))
66+
.orElse(false);
6267
} catch (IOException e) {
6368
LOG.warn("Unexpected error occurred while proving content-type for file : {}", file.getAbsolutePath());
6469
return false;

connect-file-pulse-filesystems/filepulse-local-fs/src/main/java/io/streamthoughts/kafka/connect/filepulse/fs/codec/TarballCodec.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737

3838
public class TarballCodec implements CodecHandler {
3939

40-
private static Logger LOG = LoggerFactory.getLogger(GZipCodec.class);
40+
private static final Logger LOG = LoggerFactory.getLogger(GZipCodec.class);
4141

4242
private static final String TAR_GZ_SUFFIX = ".tar.gz";
4343

connect-file-pulse-filesystems/filepulse-local-fs/src/main/java/io/streamthoughts/kafka/connect/filepulse/fs/codec/ZipCodec.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,11 @@
2727
import java.io.IOException;
2828
import java.nio.file.Files;
2929
import java.nio.file.Paths;
30+
import java.util.Arrays;
3031
import java.util.HashSet;
3132
import java.util.Map;
3233
import java.util.Objects;
34+
import java.util.Optional;
3335
import java.util.Set;
3436
import java.util.zip.ZipEntry;
3537
import java.util.zip.ZipInputStream;
@@ -60,8 +62,11 @@ public void configure(final Map<String, ?> configs) {
6062
public boolean canRead(final File file) {
6163
Objects.requireNonNull(file, "file can't be null");
6264
try {
63-
final String type = Files.probeContentType(file.toPath());
64-
return MIME_TYPES.contains(type);
65+
final Optional<String> contentType = Optional.ofNullable(Files.probeContentType(file.toPath()));
66+
return contentType.map(s -> Arrays.stream(s.split(";"))
67+
.map(String::trim)
68+
.anyMatch(MIME_TYPES::contains))
69+
.orElse(false);
6570
} catch (IOException e) {
6671
LOG.warn("Unexpected error occurred while proving content-type for file : {}", file.getAbsolutePath());
6772
return false;

0 commit comments

Comments
 (0)