diff options
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.java | 61 |
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(); + } +} |