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.enums.MessageStatus; import de.thedevstack.conversationsplus.http.HttpHeadRetrievedListener; import de.thedevstack.conversationsplus.services.filetransfer.FileTransferManager; import de.thedevstack.conversationsplus.utils.MessageUtil; import de.thedevstack.conversationsplus.utils.XmppConnectionServiceAccessor; /** * */ public class AutomaticFileDownload implements HttpHeadRetrievedListener { @Override public void onFileSizeRetrieved(long size, Message message) { if (!this.transferFile(message)) { // file cannot be auto downloaded - but message is successfully received Logging.d("http-download", "No automatic download started - but message was transmitted"); MessageUtil.setAndSaveMessageStatus(message, MessageStatus.TRANSMITTED); } } /** * Transfers a file for the corresponding message. * * @param message the message containing the file to transfer * @return true if the file transfer was successful, false otherwise */ public boolean transferFile(Message message) { if (this.accept(message)) { // link or attached file can be auto downloaded 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 true if the message can be processed, false otherwise */ public boolean accept(Message message) { long size = message.getFileParams().getSize(); return ConversationsPlusApplication.hasStoragePermission() && size > -1 && size <= ConversationsPlusPreferences.autoAcceptFileSize() && XmppConnectionServiceAccessor.xmppConnectionService.isDownloadAllowedInConnection(); } }