aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/thedevstack/conversationsplus/services/filetransfer/http/download/AutomaticFileDownload.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/thedevstack/conversationsplus/services/filetransfer/http/download/AutomaticFileDownload.java')
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/services/filetransfer/http/download/AutomaticFileDownload.java61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/main/java/de/thedevstack/conversationsplus/services/filetransfer/http/download/AutomaticFileDownload.java b/src/main/java/de/thedevstack/conversationsplus/services/filetransfer/http/download/AutomaticFileDownload.java
new file mode 100644
index 00000000..5885e2e1
--- /dev/null
+++ b/src/main/java/de/thedevstack/conversationsplus/services/filetransfer/http/download/AutomaticFileDownload.java
@@ -0,0 +1,61 @@
+package de.thedevstack.conversationsplus.services.filetransfer.http.download;
+
+import de.thedevstack.android.logcat.Logging;
+import de.thedevstack.conversationsplus.ConversationsPlusApplication;
+import de.thedevstack.conversationsplus.ConversationsPlusPreferences;
+import de.thedevstack.conversationsplus.entities.Message;
+import de.thedevstack.conversationsplus.http.HttpHeadRetrievedListener;
+import de.thedevstack.conversationsplus.services.filetransfer.FileTransferManager;
+import de.thedevstack.conversationsplus.utils.XmppConnectionServiceAccessor;
+
+/**
+ *
+ */
+public class AutomaticFileDownload implements HttpHeadRetrievedListener {
+ private boolean notify;
+
+ public AutomaticFileDownload(boolean notify) {
+ this.notify = notify;
+ }
+
+ @Override
+ public void onFileSizeRetrieved(long size, Message message) {
+ if (!this.transferFile(message)) {
+
+ }
+ if (this.notify) {
+ XmppConnectionServiceAccessor.xmppConnectionService.getNotificationService().push(message);
+ }
+ }
+
+ /**
+ * Transfers a file for the corresponding message.
+ *
+ * @param message the message containing the file to transfer
+ * @return <code>true</code> if the file transfer was successful, <code>false</code> otherwise
+ */
+ public boolean transferFile(Message message) {
+ if (this.accept(message)) {
+ Logging.d("http-download", "Starting automatic download");
+ FileTransferManager ftm = FileTransferManager.getInstance();
+ if (ftm.accept(message)) {
+ return ftm.transferFile(message);
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Checks whether a message can be sent using this service or not.
+ *
+ * @param message the message to be checked
+ * @return <code>true</code> if the message can be processed, <code>false</code> otherwise
+ */
+ public boolean accept(Message message) {
+ long size = message.getFileParams().getSize();
+ return ConversationsPlusApplication.hasStoragePermission()
+ && size > -1
+ && size <= ConversationsPlusPreferences.autoAcceptFileSize()
+ && XmppConnectionServiceAccessor.xmppConnectionService.isDownloadAllowedInConnection();
+ }
+}