aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/generator/MessageGenerator.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main/java/de/pixart/messenger/generator/MessageGenerator.java29
1 files changed, 24 insertions, 5 deletions
diff --git a/src/main/java/de/pixart/messenger/generator/MessageGenerator.java b/src/main/java/de/pixart/messenger/generator/MessageGenerator.java
index 57867bc2f..369a1963e 100644
--- a/src/main/java/de/pixart/messenger/generator/MessageGenerator.java
+++ b/src/main/java/de/pixart/messenger/generator/MessageGenerator.java
@@ -3,6 +3,7 @@ package de.pixart.messenger.generator;
import net.java.otr4j.OtrException;
import net.java.otr4j.session.Session;
+import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
@@ -16,6 +17,7 @@ import de.pixart.messenger.entities.Account;
import de.pixart.messenger.entities.Contact;
import de.pixart.messenger.entities.Conversation;
import de.pixart.messenger.entities.Message;
+import de.pixart.messenger.http.P1S3UrlStreamHandler;
import de.pixart.messenger.services.XmppConnectionService;
import de.pixart.messenger.utils.Namespace;
import de.pixart.messenger.xml.Element;
@@ -136,8 +138,17 @@ public class MessageGenerator extends AbstractGenerator {
String content;
if (message.hasFileOnRemoteHost()) {
Message.FileParams fileParams = message.getFileParams();
- content = fileParams.url.toString();
- packet.addChild("x", Namespace.OOB).addChild("url").setContent(content);
+ final URL url = fileParams.url;
+ if (P1S3UrlStreamHandler.PROTOCOL_NAME.equals(url.getProtocol())) {
+ Element x = packet.addChild("x", Namespace.P1_S3_FILE_TRANSFER);
+ final String file = url.getFile();
+ x.setAttribute("name", file.charAt(0) == '/' ? file.substring(1) : file);
+ x.setAttribute("fileid", url.getHost());
+ return packet;
+ } else {
+ content = url.toString();
+ packet.addChild("x", Namespace.OOB).addChild("url").setContent(content);
+ }
} else {
content = message.getBody();
}
@@ -148,9 +159,17 @@ public class MessageGenerator extends AbstractGenerator {
public MessagePacket generatePgpChat(Message message) {
MessagePacket packet = preparePacket(message);
if (message.hasFileOnRemoteHost()) {
- final String url = message.getFileParams().url.toString();
- packet.setBody(url);
- packet.addChild("x", Namespace.OOB).addChild("url").setContent(url);
+ Message.FileParams fileParams = message.getFileParams();
+ final URL url = fileParams.url;
+ if (P1S3UrlStreamHandler.PROTOCOL_NAME.equals(url.getProtocol())) {
+ Element x = packet.addChild("x", Namespace.P1_S3_FILE_TRANSFER);
+ final String file = url.getFile();
+ x.setAttribute("name", file.charAt(0) == '/' ? file.substring(1) : file);
+ x.setAttribute("fileid", url.getHost());
+ } else {
+ packet.setBody(url.toString());
+ packet.addChild("x", Namespace.OOB).addChild("url").setContent(url.toString());
+ }
} else {
if (Config.supportUnencrypted()) {
packet.setBody(PGP_FALLBACK_MESSAGE);