From 11e2b1accd933eb9fcb4477a60dd0864d9f72a67 Mon Sep 17 00:00:00 2001 From: steckbrief Date: Mon, 31 Jul 2017 08:44:32 +0200 Subject: Implements FS#245: Implement FiletransferHttp (upload and delete), some minor bug fixes including to fail a JingleTransfer in case criterias are not met --- .../xmpp/filetransfer/http/FileTransferHttp.java | 3 +- .../http/delete/DeleteRequestPacket.java | 34 ++++++++++++++ .../http/delete/DeleteSlotPacketParser.java | 29 ------------ .../http/delete/DeleteSlotRequestPacket.java | 34 -------------- .../http/delete/DeletedPacketParser.java | 43 +++++++++++++++++ ...leTransferHttpDeleteRequestPacketGenerator.java | 39 ++++++++++++++++ ...ansferHttpDeleteSlotRequestPacketGenerator.java | 39 ---------------- .../FileTransferHttpUploadSlotRequestPacket.java | 53 +++++++++++++++++++++ .../HttpUploadRequestSlotPacketGenerator.java | 35 +++++++++++--- .../http/upload/HttpUploadSlotRequestPacket.java | 54 ++++++++++++++++++++++ .../filetransfer/http/upload/SlotPacketParser.java | 12 ++++- .../http/upload/SlotRequestPacket.java | 53 --------------------- 12 files changed, 265 insertions(+), 163 deletions(-) create mode 100644 src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeleteRequestPacket.java delete mode 100644 src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeleteSlotPacketParser.java delete mode 100644 src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeleteSlotRequestPacket.java create mode 100644 src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeletedPacketParser.java create mode 100644 src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/FileTransferHttpDeleteRequestPacketGenerator.java delete mode 100644 src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/FileTransferHttpDeleteSlotRequestPacketGenerator.java create mode 100644 src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/FileTransferHttpUploadSlotRequestPacket.java create mode 100644 src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/HttpUploadSlotRequestPacket.java delete mode 100644 src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/SlotRequestPacket.java (limited to 'src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer') diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/FileTransferHttp.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/FileTransferHttp.java index 28f4f870..1c6544b4 100644 --- a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/FileTransferHttp.java +++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/FileTransferHttp.java @@ -1,8 +1,9 @@ package de.thedevstack.conversationsplus.xmpp.filetransfer.http; /** - * Created by steckbrief on 21.08.2016. + * */ public interface FileTransferHttp { String NAMESPACE = "urn:xmpp:filetransfer:http"; + String DEFAULT_MIME_TYPE = "application/octet-stream"; } diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeleteRequestPacket.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeleteRequestPacket.java new file mode 100644 index 00000000..d358a266 --- /dev/null +++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeleteRequestPacket.java @@ -0,0 +1,34 @@ +package de.thedevstack.conversationsplus.xmpp.filetransfer.http.delete; + +import de.thedevstack.conversationsplus.xml.Element; +import de.thedevstack.conversationsplus.xmpp.filetransfer.http.FileTransferHttp; +import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; + +/** + * Created by steckbrief on 21.08.2016. + */ +public class DeleteRequestPacket extends IqPacket { + public static final String ELEMENT_NAME = "request"; + public static final String FILEURL_ELEMENT_NAME = "fileurl"; + private Element requestElement; + private String fileurl; + + private DeleteRequestPacket() { + super(TYPE.GET); + this.requestElement = super.addChild(DeleteRequestPacket.ELEMENT_NAME, FileTransferHttp.NAMESPACE); + this.requestElement.setAttribute("type", "delete"); + } + + public DeleteRequestPacket(String fileurl) { + this(); + this.setFileURL(fileurl); + } + + public void setFileURL(String fileurl) { + if (null == fileurl || fileurl.isEmpty()) { + throw new IllegalArgumentException("fileurl must not be null or empty."); + } + this.fileurl = fileurl; + this.requestElement.addChild(FILEURL_ELEMENT_NAME).setContent(fileurl); + } +} diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeleteSlotPacketParser.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeleteSlotPacketParser.java deleted file mode 100644 index 7c011449..00000000 --- a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeleteSlotPacketParser.java +++ /dev/null @@ -1,29 +0,0 @@ -package de.thedevstack.conversationsplus.xmpp.filetransfer.http.delete; - -import de.thedevstack.conversationsplus.xml.Element; -import de.thedevstack.conversationsplus.xmpp.IqPacketParser; -import de.thedevstack.conversationsplus.xmpp.exceptions.UnexpectedIqPacketTypeException; -import de.thedevstack.conversationsplus.xmpp.exceptions.XmppException; -import de.thedevstack.conversationsplus.xmpp.filetransfer.http.FileTransferHttp; -import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; -import de.thedevstack.conversationsplus.xmpp.utils.ErrorIqPacketExceptionHelper; - -/** - * Created by steckbrief on 21.08.2016. - */ -public class DeleteSlotPacketParser extends IqPacketParser { - public static String parseDeleteToken(IqPacket packet) throws XmppException { - String deletetoken = null; - if (packet.getType() == IqPacket.TYPE.RESULT) { - Element slot = findRequiredChild(packet, "slot", FileTransferHttp.NAMESPACE); - - deletetoken = findRequiredChildContent(slot, "deletetoken"); - } else if (packet.getType() == IqPacket.TYPE.ERROR) { - ErrorIqPacketExceptionHelper.throwIqErrorException(packet); - } else { - throw new UnexpectedIqPacketTypeException(packet, packet.getType(), IqPacket.TYPE.RESULT, IqPacket.TYPE.ERROR); - } - - return deletetoken; - } -} diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeleteSlotRequestPacket.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeleteSlotRequestPacket.java deleted file mode 100644 index e389d851..00000000 --- a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeleteSlotRequestPacket.java +++ /dev/null @@ -1,34 +0,0 @@ -package de.thedevstack.conversationsplus.xmpp.filetransfer.http.delete; - -import de.thedevstack.conversationsplus.xml.Element; -import de.thedevstack.conversationsplus.xmpp.filetransfer.http.FileTransferHttp; -import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; - -/** - * Created by steckbrief on 21.08.2016. - */ -public class DeleteSlotRequestPacket extends IqPacket { - public static final String ELEMENT_NAME = "request"; - public static final String FILEURL_ELEMENT_NAME = "fileurl"; - private Element requestElement; - private String fileurl; - - private DeleteSlotRequestPacket() { - super(TYPE.GET); - this.requestElement = super.addChild(DeleteSlotRequestPacket.ELEMENT_NAME, FileTransferHttp.NAMESPACE); - this.requestElement.setAttribute("type", "delete"); - } - - public DeleteSlotRequestPacket(String fileurl) { - this(); - this.setFileURL(fileurl); - } - - public void setFileURL(String fileurl) { - if (null == fileurl || fileurl.isEmpty()) { - throw new IllegalArgumentException("fileurl must not be null or empty."); - } - this.fileurl = fileurl; - this.requestElement.addChild(FILEURL_ELEMENT_NAME).setContent(fileurl); - } -} diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeletedPacketParser.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeletedPacketParser.java new file mode 100644 index 00000000..df17a997 --- /dev/null +++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/DeletedPacketParser.java @@ -0,0 +1,43 @@ +package de.thedevstack.conversationsplus.xmpp.filetransfer.http.delete; + +import de.thedevstack.conversationsplus.xml.Element; +import de.thedevstack.conversationsplus.xmpp.IqPacketParser; +import de.thedevstack.conversationsplus.xmpp.exceptions.UnexpectedIqPacketTypeException; +import de.thedevstack.conversationsplus.xmpp.exceptions.XmppException; +import de.thedevstack.conversationsplus.xmpp.filetransfer.http.FileTransferHttp; +import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; +import de.thedevstack.conversationsplus.xmpp.utils.ErrorIqPacketExceptionHelper; + +/** + * IqPacketParser to parse the response of a remote file delete request. + * This parser parses a IqPacket according to the specification 'filetransfer for XMPP over http". + */ +public class DeletedPacketParser extends IqPacketParser { + /** + * Parses an IqPacket. + *
+     * 
+     *   
+     * 
+     * 
+ * @param packet the packet to parse + * @return true if the result packet contains a deleted element of namespace urn:xmpp:filetransfer:http + * @throws XmppException in case of IqPacket type error or {@link UnexpectedIqPacketTypeException} in case of an unexpected IqPacket type. + */ + public static boolean parseDeleteToken(IqPacket packet) throws XmppException { + boolean successfullyDeleted = false; + if (packet.getType() == IqPacket.TYPE.RESULT) { + Element deletedElement = findRequiredChild(packet, "deleted", FileTransferHttp.NAMESPACE); + successfullyDeleted = null != deletedElement; + } else if (packet.getType() == IqPacket.TYPE.ERROR) { + ErrorIqPacketExceptionHelper.throwIqErrorException(packet); + } else { + throw new UnexpectedIqPacketTypeException(packet, packet.getType(), IqPacket.TYPE.RESULT, IqPacket.TYPE.ERROR); + } + + return successfullyDeleted; + } +} diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/FileTransferHttpDeleteRequestPacketGenerator.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/FileTransferHttpDeleteRequestPacketGenerator.java new file mode 100644 index 00000000..88ad5d5a --- /dev/null +++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/FileTransferHttpDeleteRequestPacketGenerator.java @@ -0,0 +1,39 @@ +package de.thedevstack.conversationsplus.xmpp.filetransfer.http.delete; + +import de.thedevstack.conversationsplus.xmpp.jid.Jid; +import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; + +/** + * Created by steckbrief on 21.08.2016. + */ +public final class FileTransferHttpDeleteRequestPacketGenerator { + /** + * Generates the IqPacket to request a slot to delete a file previously uploaded via http upload. + * The attributes from and id are not set in here - this is added while sending the packet. + *
+     * 
+     *   
+     *     http://upload.montague.tld/files/1e56ee17-ee4c-4a9c-aedd-cb09cb3984a7/my_juliet.png
+     *   
+     * 
+     * 
+ * @param host the jid of the host to request a slot from + * @param fileurl the URL of the file to be deleted + * @return the IqPacket + */ + public static IqPacket generate(Jid host, String fileurl) { + DeleteRequestPacket packet = new DeleteRequestPacket(fileurl); + packet.setTo(host); + return packet; + } + + /** + * Utility class - avoid instantiation + */ + private FileTransferHttpDeleteRequestPacketGenerator() { + // Helper class - avoid instantiation + } +} diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/FileTransferHttpDeleteSlotRequestPacketGenerator.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/FileTransferHttpDeleteSlotRequestPacketGenerator.java deleted file mode 100644 index ac7de74e..00000000 --- a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/delete/FileTransferHttpDeleteSlotRequestPacketGenerator.java +++ /dev/null @@ -1,39 +0,0 @@ -package de.thedevstack.conversationsplus.xmpp.filetransfer.http.delete; - -import de.thedevstack.conversationsplus.xmpp.jid.Jid; -import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; - -/** - * Created by steckbrief on 21.08.2016. - */ -public final class FileTransferHttpDeleteSlotRequestPacketGenerator { - /** - * Generates the IqPacket to request a slot to delete a file previously uploaded via http upload. - * The attributes from and id are not set in here - this is added while sending the packet. - *
-     * 
-     *   
-     *     http://upload.montague.tld/files/1e56ee17-ee4c-4a9c-aedd-cb09cb3984a7/my_juliet.png
-     *   
-     * 
-     * 
- * @param host the jid of the host to request a slot from - * @param fileurl the URL of the file to be deleted - * @return the IqPacket - */ - public static IqPacket generate(Jid host, String fileurl) { - DeleteSlotRequestPacket packet = new DeleteSlotRequestPacket(fileurl); - packet.setTo(host); - return packet; - } - - /** - * Utility class - avoid instantiation - */ - private FileTransferHttpDeleteSlotRequestPacketGenerator() { - // Helper class - avoid instantiation - } -} diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/FileTransferHttpUploadSlotRequestPacket.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/FileTransferHttpUploadSlotRequestPacket.java new file mode 100644 index 00000000..2d7ed1c7 --- /dev/null +++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/FileTransferHttpUploadSlotRequestPacket.java @@ -0,0 +1,53 @@ +package de.thedevstack.conversationsplus.xmpp.filetransfer.http.upload; + +import de.thedevstack.conversationsplus.xml.Element; +import de.thedevstack.conversationsplus.xmpp.filetransfer.http.FileTransferHttp; +import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; + +/** + * + */ +public class FileTransferHttpUploadSlotRequestPacket extends IqPacket { + public static final String ELEMENT_NAME = "request"; + public static final String FILENAME_ELEMENT_NAME = "filename"; + public static final String FILESIZE_ELEMENT_NAME = "size"; + public static final String MIME_ELEMENT_NAME = "content-type"; + private static final String RECIPIENT_ATTRIBUTE_NAME = "recipient"; + private Element requestElement; + private String filename; + private long filesize; + private String mime; + + public FileTransferHttpUploadSlotRequestPacket(String recipient, String filename, long filesize, String mime) { + super(TYPE.GET); + this.requestElement = super.addChild(FileTransferHttpUploadSlotRequestPacket.ELEMENT_NAME, FileTransferHttp.NAMESPACE); + this.requestElement.setAttribute(RECIPIENT_ATTRIBUTE_NAME, recipient); + this.setFilename(filename); + this.setFilesize(filesize); + this.setMime(mime); + } + + public void setFilename(String filename) { + if (null == filename || filename.isEmpty()) { + throw new IllegalArgumentException("filename must not be null or empty."); + } + this.filename = filename; + this.requestElement.addChild(FILENAME_ELEMENT_NAME).setContent(filename); + } + + public void setFilesize(long filesize) { + if (0 >= filesize) { + throw new IllegalArgumentException("filesize must not be null or empty."); + } + this.filesize = filesize; + this.requestElement.addChild(FILESIZE_ELEMENT_NAME).setContent(String.valueOf(filesize)); + } + + public void setMime(String mime) { + if (null == mime || mime.isEmpty()) { + mime = FileTransferHttp.DEFAULT_MIME_TYPE; + } + this.mime = mime; + this.requestElement.addChild(MIME_ELEMENT_NAME).setContent(mime); + } +} diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/HttpUploadRequestSlotPacketGenerator.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/HttpUploadRequestSlotPacketGenerator.java index 4b0a956c..db455b7a 100644 --- a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/HttpUploadRequestSlotPacketGenerator.java +++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/HttpUploadRequestSlotPacketGenerator.java @@ -1,5 +1,7 @@ package de.thedevstack.conversationsplus.xmpp.filetransfer.http.upload; +import de.thedevstack.conversationsplus.entities.Account; +import de.thedevstack.conversationsplus.xmpp.filetransfer.http.FileTransferHttp; import de.thedevstack.conversationsplus.xmpp.jid.Jid; import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; @@ -24,17 +26,38 @@ public final class HttpUploadRequestSlotPacketGenerator { * * * - * @param host the jid of the host to request a slot from + * @param account the account requesting a slot * @param filename the filename of the file which will be transferred * @param filesize the filesize of the file which will be transferred * @param mime the mime type of the file which will be transferred - optional and therefore nullable * @return the IqPacket */ - public static IqPacket generate(Jid host, String filename, long filesize, String mime) { - SlotRequestPacket packet = new SlotRequestPacket(filename, filesize); - packet.setTo(host); - packet.setMime((mime == null || mime.isEmpty()) ? HttpUpload.DEFAULT_MIME_TYPE : mime); - return packet; + public static IqPacket generate(Account account, Jid recipient, String filename, long filesize, String mime) { + String namespace = getNamespace(account); + Jid host = getHost(account, namespace); + IqPacket requestPacket; + switch (namespace) { + case HttpUpload.NAMESPACE: + requestPacket = new HttpUploadSlotRequestPacket(filename, filesize, mime); + break; + case FileTransferHttp.NAMESPACE: + default: + requestPacket = new FileTransferHttpUploadSlotRequestPacket(recipient.toString(), filename, filesize, mime); + } + requestPacket.setTo(host); + return requestPacket; + } + + private static String getNamespace(Account account) { + if (null != account.getXmppConnection().findDiscoItemByFeature(FileTransferHttp.NAMESPACE)) { + return FileTransferHttp.NAMESPACE; + } else { + return HttpUpload.NAMESPACE; + } + } + + private static Jid getHost(Account account, String namespace) { + return account.getXmppConnection().findDiscoItemByFeature(namespace); } /** diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/HttpUploadSlotRequestPacket.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/HttpUploadSlotRequestPacket.java new file mode 100644 index 00000000..93422d3f --- /dev/null +++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/HttpUploadSlotRequestPacket.java @@ -0,0 +1,54 @@ +package de.thedevstack.conversationsplus.xmpp.filetransfer.http.upload; + +import de.thedevstack.conversationsplus.xml.Element; +import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; + +/** + * + */ +public class HttpUploadSlotRequestPacket extends IqPacket { + public static final String ELEMENT_NAME = "request"; + public static final String FILENAME_ELEMENT_NAME = "filename"; + public static final String FILESIZE_ELEMENT_NAME = "size"; + public static final String MIME_ELEMENT_NAME = "content-type"; + private Element requestElement; + private String filename; + private long filesize; + private String mime; + + private HttpUploadSlotRequestPacket() { + super(TYPE.GET); + this.requestElement = super.addChild(HttpUploadSlotRequestPacket.ELEMENT_NAME, HttpUpload.NAMESPACE); + } + + public HttpUploadSlotRequestPacket(String filename, long filesize, String mime) { + this(); + this.setFilename(filename); + this.setFilesize(filesize); + this.setMime(mime); + } + + public void setFilename(String filename) { + if (null == filename || filename.isEmpty()) { + throw new IllegalArgumentException("filename must not be null or empty."); + } + this.filename = filename; + this.requestElement.addChild(FILENAME_ELEMENT_NAME).setContent(filename); + } + + public void setFilesize(long filesize) { + if (0 >= filesize) { + throw new IllegalArgumentException("filesize must not be null or empty."); + } + this.filesize = filesize; + this.requestElement.addChild(FILESIZE_ELEMENT_NAME).setContent(String.valueOf(filesize)); + } + + public void setMime(String mime) { + if (null == mime || mime.isEmpty()) { + mime = HttpUpload.DEFAULT_MIME_TYPE; + } + this.mime = mime; + this.requestElement.addChild(MIME_ELEMENT_NAME).setContent(mime); + } +} diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/SlotPacketParser.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/SlotPacketParser.java index 85d11b6b..e2d629e4 100644 --- a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/SlotPacketParser.java +++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/SlotPacketParser.java @@ -2,8 +2,10 @@ package de.thedevstack.conversationsplus.xmpp.filetransfer.http.upload; import de.thedevstack.conversationsplus.xml.Element; import de.thedevstack.conversationsplus.xmpp.IqPacketParser; +import de.thedevstack.conversationsplus.xmpp.exceptions.MissingRequiredElementException; import de.thedevstack.conversationsplus.xmpp.exceptions.UnexpectedIqPacketTypeException; import de.thedevstack.conversationsplus.xmpp.exceptions.XmppException; +import de.thedevstack.conversationsplus.xmpp.filetransfer.http.FileTransferHttp; import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; import de.thedevstack.conversationsplus.xmpp.utils.ErrorIqPacketExceptionHelper; @@ -11,10 +13,18 @@ import de.thedevstack.conversationsplus.xmpp.utils.ErrorIqPacketExceptionHelper; * */ public final class SlotPacketParser extends IqPacketParser { + private static final String SLOT_ELEMENT_NAME = "slot"; + public static HttpUploadSlot parseGetAndPutUrl(IqPacket packet) throws XmppException { HttpUploadSlot httpUploadSlot = null; if (packet.getType() == IqPacket.TYPE.RESULT) { - Element slot = findRequiredChild(packet, "slot", HttpUpload.NAMESPACE); + Element slot = findChild(packet, SLOT_ELEMENT_NAME, FileTransferHttp.NAMESPACE); + if (null == slot) { + slot = findChild(packet, SLOT_ELEMENT_NAME, HttpUpload.NAMESPACE); + } + if (null == slot) { + throw new MissingRequiredElementException(SLOT_ELEMENT_NAME, "neither " + FileTransferHttp.NAMESPACE + " nor " + HttpUpload.NAMESPACE, packet); + } String getUrl = findRequiredChildContent(slot, "get"); String putUrl = findRequiredChildContent(slot, "put"); diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/SlotRequestPacket.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/SlotRequestPacket.java deleted file mode 100644 index d0866508..00000000 --- a/src/main/java/de/thedevstack/conversationsplus/xmpp/filetransfer/http/upload/SlotRequestPacket.java +++ /dev/null @@ -1,53 +0,0 @@ -package de.thedevstack.conversationsplus.xmpp.filetransfer.http.upload; - -import de.thedevstack.conversationsplus.xml.Element; -import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; - -/** - * - */ -public class SlotRequestPacket extends IqPacket { - public static final String ELEMENT_NAME = "request"; - public static final String FILENAME_ELEMENT_NAME = "filename"; - public static final String FILESIZE_ELEMENT_NAME = "size"; - public static final String MIME_ELEMENT_NAME = "content-type"; - private Element requestElement; - private String filename; - private long filesize; - private String mime; - - private SlotRequestPacket() { - super(TYPE.GET); - this.requestElement = super.addChild(SlotRequestPacket.ELEMENT_NAME, HttpUpload.NAMESPACE); - } - - public SlotRequestPacket(String filename, long filesize) { - this(); - this.setFilename(filename); - this.setFilesize(filesize); - } - - public void setFilename(String filename) { - if (null == filename || filename.isEmpty()) { - throw new IllegalArgumentException("filename must not be null or empty."); - } - this.filename = filename; - this.requestElement.addChild(FILENAME_ELEMENT_NAME).setContent(filename); - } - - public void setFilesize(long filesize) { - if (0 >= filesize) { - throw new IllegalArgumentException("filesize must not be null or empty."); - } - this.filesize = filesize; - this.requestElement.addChild(FILESIZE_ELEMENT_NAME).setContent(String.valueOf(filesize)); - } - - public void setMime(String mime) { - if (null == mime || mime.isEmpty()) { - throw new IllegalArgumentException("mime type must not be null or empty."); - } - this.mime = mime; - this.requestElement.addChild(MIME_ELEMENT_NAME).setContent(mime); - } -} -- cgit v1.2.3