diff options
Diffstat (limited to 'src/main/java/de/pixart/messenger/entities')
-rw-r--r-- | src/main/java/de/pixart/messenger/entities/Message.java | 37 |
1 files changed, 5 insertions, 32 deletions
diff --git a/src/main/java/de/pixart/messenger/entities/Message.java b/src/main/java/de/pixart/messenger/entities/Message.java index 1e087b69b..9f4bcade6 100644 --- a/src/main/java/de/pixart/messenger/entities/Message.java +++ b/src/main/java/de/pixart/messenger/entities/Message.java @@ -684,46 +684,19 @@ public class Message extends AbstractEntity { this.oob = isOob; } - private static String extractRelevantExtension(URL url) { - String path = url.getPath(); - return extractRelevantExtension(path); - } - - private static String extractRelevantExtension(String path) { - if (path == null || path.isEmpty()) { - return null; - } - - String filename = path.substring(path.lastIndexOf('/') + 1).toLowerCase(); - int dotPosition = filename.lastIndexOf("."); - - if (dotPosition != -1) { - String extension = filename.substring(dotPosition + 1); - // we want the real file extension, not the crypto one - if (Transferable.VALID_CRYPTO_EXTENSIONS.contains(extension)) { - return extractRelevantExtension(filename.substring(0, dotPosition)); - } else { - return extension; - } - } - return null; - } - public String getMimeType() { + String extension; if (relativeFilePath != null) { - int start = relativeFilePath.lastIndexOf('.') + 1; - if (start < relativeFilePath.length()) { - return MimeUtils.guessMimeTypeFromExtension(relativeFilePath.substring(start)); - } else { - return null; - } + extension = MimeUtils.extractRelevantExtension(relativeFilePath); } else { try { - return MimeUtils.guessMimeTypeFromExtension(extractRelevantExtension(new URL(body.trim()))); + final URL url = new URL(body.split("\n")[0]); + extension = MimeUtils.extractRelevantExtension(url); } catch (MalformedURLException e) { return null; } } + return MimeUtils.guessMimeTypeFromExtension(extension); } public synchronized boolean treatAsDownloadable() { |