untested pgp support for http upload

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/crypto/PgpEngine.java          | 14 
src/main/java/eu/siacs/conversations/http/HttpUploadConnection.java | 23 
2 files changed, 31 insertions(+), 6 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/crypto/PgpEngine.java 🔗

@@ -143,11 +143,15 @@ public class PgpEngine {
 		params.putExtra(OpenPgpApi.EXTRA_ACCOUNT_NAME, message
 				.getConversation().getAccount().getJid().toBareJid().toString());
 
-		if (message.getType() == Message.TYPE_TEXT) {
+		if (!message.needsUploading()) {
 			params.putExtra(OpenPgpApi.EXTRA_REQUEST_ASCII_ARMOR, true);
-
-			InputStream is = new ByteArrayInputStream(message.getBody()
-					.getBytes());
+			String body;
+			if (message.hasFileOnRemoteHost()) {
+				body = message.getImageParams().url.toString();
+			} else {
+				body = message.getBody();
+			}
+			InputStream is = new ByteArrayInputStream(body.getBytes());
 			final OutputStream os = new ByteArrayOutputStream();
 			api.executeApiAsync(params, is, os, new IOpenPgpCallback() {
 
@@ -184,7 +188,7 @@ public class PgpEngine {
 					}
 				}
 			});
-		} else if (message.getType() == Message.TYPE_IMAGE || message.getType() == Message.TYPE_FILE) {
+		} else {
 			try {
 				DownloadableFile inputFile = this.mXmppConnectionService
 						.getFileBackend().getFile(message, true);

src/main/java/eu/siacs/conversations/http/HttpUploadConnection.java 🔗

@@ -1,5 +1,6 @@
 package eu.siacs.conversations.http;
 
+import android.app.PendingIntent;
 import android.util.Log;
 
 import java.io.IOException;
@@ -16,6 +17,7 @@ import eu.siacs.conversations.entities.DownloadableFile;
 import eu.siacs.conversations.entities.Message;
 import eu.siacs.conversations.persistance.FileBackend;
 import eu.siacs.conversations.services.XmppConnectionService;
+import eu.siacs.conversations.ui.UiCallback;
 import eu.siacs.conversations.utils.CryptoHelper;
 import eu.siacs.conversations.utils.Xmlns;
 import eu.siacs.conversations.xml.Element;
@@ -159,7 +161,26 @@ public class HttpUploadConnection implements Downloadable {
 					message.setBody(mGetUrl.toString()+"|"+String.valueOf(params.size)+"|"+String.valueOf(params.width)+"|"+String.valueOf(params.height));
 					message.setDownloadable(null);
 					message.setCounterpart(message.getConversation().getJid().toBareJid());
-					mXmppConnectionService.resendMessage(message);
+					if (message.getEncryption() == Message.ENCRYPTION_DECRYPTED) {
+						mXmppConnectionService.getPgpEngine().encrypt(message, new UiCallback<Message>() {
+							@Override
+							public void success(Message message) {
+								mXmppConnectionService.resendMessage(message);
+							}
+
+							@Override
+							public void error(int errorCode, Message object) {
+								fail();
+							}
+
+							@Override
+							public void userInputRequried(PendingIntent pi, Message object) {
+								fail();
+							}
+						});
+					} else {
+						mXmppConnectionService.resendMessage(message);
+					}
 				} else {
 					fail();
 				}