aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/utils/MessageUtils.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2018-05-03 21:18:42 +0200
committerChristian Schneppe <christian@pix-art.de>2018-05-03 21:34:39 +0200
commit70e50a27921e2250920c2143c13ccbb0b425377a (patch)
tree385654f5c3c98d3224a282492cd3391d4dae8010 /src/main/java/de/pixart/messenger/utils/MessageUtils.java
parent24cbd299ff1aa49850afec80a7e204c5651c02d7 (diff)
hide treatAsDownloadable in search results
Diffstat (limited to '')
-rw-r--r--src/main/java/de/pixart/messenger/utils/MessageUtils.java28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/main/java/de/pixart/messenger/utils/MessageUtils.java b/src/main/java/de/pixart/messenger/utils/MessageUtils.java
index 1cf692f4d..8a3cdb707 100644
--- a/src/main/java/de/pixart/messenger/utils/MessageUtils.java
+++ b/src/main/java/de/pixart/messenger/utils/MessageUtils.java
@@ -29,7 +29,11 @@
package de.pixart.messenger.utils;
+import java.net.MalformedURLException;
+import java.net.URL;
+
import de.pixart.messenger.entities.Message;
+import de.pixart.messenger.http.AesGcmURLStreamHandler;
public class MessageUtils {
public static String prepareQuote(Message message) {
@@ -51,4 +55,28 @@ public class MessageUtils {
}
return builder.toString();
}
+
+ public static boolean treatAsDownloadable(final String body, final boolean oob) {
+ try {
+ final String[] lines = body.split("\n");
+ if (lines.length == 0) {
+ return false;
+ }
+ for (String line : lines) {
+ if (line.contains("\\s+")) {
+ return false;
+ }
+ }
+ final URL url = new URL(lines[0]);
+ final String ref = url.getRef();
+ final String protocol = url.getProtocol();
+ final boolean encrypted = ref != null && AesGcmURLStreamHandler.IV_KEY.matcher(ref).matches();
+ final boolean followedByDataUri = lines.length == 2 && lines[1].startsWith("data:");
+ final boolean validAesGcm = AesGcmURLStreamHandler.PROTOCOL_NAME.equalsIgnoreCase(protocol) && encrypted && (lines.length == 1 || followedByDataUri);
+ final boolean validOob = ("http".equalsIgnoreCase(protocol) || "https".equalsIgnoreCase(protocol)) && (oob || encrypted) && lines.length == 1;
+ return validAesGcm || validOob;
+ } catch (MalformedURLException e) {
+ return false;
+ }
+ }
} \ No newline at end of file