Class HttpFileUploadManager


  • public final class HttpFileUploadManager
    extends org.jivesoftware.smack.Manager
    A manager for XEP-0363: HTTP File Upload.
    See Also:
    XEP-0363: HTTP File Upload
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String NAMESPACE
      Namespace of XEP-0363 v0.4 or higher.
      static java.lang.String NAMESPACE_0_2
      Namespace of XEP-0363 v0.2 or lower.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean discoverUploadService()
      Discover upload service.
      UploadService getDefaultUploadService()
      Get default upload service if it was discovered.
      static HttpFileUploadManager getInstanceFor​(org.jivesoftware.smack.XMPPConnection connection)
      Obtain the HttpFileUploadManager responsible for a connection.
      boolean isUploadServiceDiscovered()
      Check if upload service was discovered.
      static UploadService.Version namespaceToVersion​(java.lang.String namespace)  
      Slot requestSlot​(java.lang.String filename, long fileSize)
      Request a new upload slot from default upload service (if discovered).
      Slot requestSlot​(java.lang.String filename, long fileSize, java.lang.String contentType)
      Request a new upload slot with optional content type from default upload service (if discovered).
      Slot requestSlot​(java.lang.String filename, long fileSize, java.lang.String contentType, org.jxmpp.jid.DomainBareJid uploadServiceAddress)
      Request a new upload slot with optional content type from custom upload service.
      void setTlsContext​(javax.net.ssl.SSLContext tlsContext)  
      java.net.URL uploadFile​(java.io.File file)
      Request slot and uploaded file to HTTP file upload service.
      java.net.URL uploadFile​(java.io.File file, UploadProgressListener listener)
      Request slot and uploaded file to HTTP file upload service with progress callback.
      java.net.URL uploadFile​(java.io.InputStream inputStream, java.lang.String fileName, long fileSize)
      Request slot and uploaded stream to HTTP upload service.
      java.net.URL uploadFile​(java.io.InputStream inputStream, java.lang.String fileName, long fileSize, UploadProgressListener listener)
      Request slot and uploaded stream to HTTP upload service.
      • Methods inherited from class org.jivesoftware.smack.Manager

        connection, getAuthenticatedConnectionOrThrow, schedule, schedule, scheduleBlocking
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • NAMESPACE

        public static final java.lang.String NAMESPACE
        Namespace of XEP-0363 v0.4 or higher. Constant value "urn:xmpp:http:upload:0".
        See Also:
        XEP-0363 v0.4.0, Constant Field Values
      • NAMESPACE_0_2

        public static final java.lang.String NAMESPACE_0_2
        Namespace of XEP-0363 v0.2 or lower. Constant value "urn:xmpp:http:upload".
        See Also:
        XEP-0363 v0.2.5, Constant Field Values
    • Method Detail

      • getInstanceFor

        public static HttpFileUploadManager getInstanceFor​(org.jivesoftware.smack.XMPPConnection connection)
        Obtain the HttpFileUploadManager responsible for a connection.
        Parameters:
        connection - the connection object.
        Returns:
        a HttpFileUploadManager instance
      • discoverUploadService

        public boolean discoverUploadService()
                                      throws org.jivesoftware.smack.XMPPException.XMPPErrorException,
                                             org.jivesoftware.smack.SmackException.NotConnectedException,
                                             java.lang.InterruptedException,
                                             org.jivesoftware.smack.SmackException.NoResponseException
        Discover upload service. Called automatically when connection is authenticated. Note that this is a synchronous call -- Smack must wait for the server response.
        Returns:
        true if upload service was discovered
        Throws:
        org.jivesoftware.smack.XMPPException.XMPPErrorException - if there was an XMPP error returned.
        org.jivesoftware.smack.SmackException.NotConnectedException - if the XMPP connection is not connected.
        java.lang.InterruptedException - if the calling thread was interrupted.
        org.jivesoftware.smack.SmackException.NoResponseException - if there was no response from the remote entity.
      • isUploadServiceDiscovered

        public boolean isUploadServiceDiscovered()
        Check if upload service was discovered.
        Returns:
        true if upload service was discovered
      • getDefaultUploadService

        public UploadService getDefaultUploadService()
        Get default upload service if it was discovered.
        Returns:
        upload service JID or null if not available
      • uploadFile

        public java.net.URL uploadFile​(java.io.File file)
                                throws java.lang.InterruptedException,
                                       org.jivesoftware.smack.XMPPException.XMPPErrorException,
                                       org.jivesoftware.smack.SmackException,
                                       java.io.IOException
        Request slot and uploaded file to HTTP file upload service. You don't need to request slot and upload file separately, this method will do both. Note that this is a synchronous call -- Smack must wait for the server response.
        Parameters:
        file - file to be uploaded
        Returns:
        public URL for sharing uploaded file
        Throws:
        java.lang.InterruptedException - if the calling thread was interrupted.
        org.jivesoftware.smack.XMPPException.XMPPErrorException - if there was an XMPP error returned.
        org.jivesoftware.smack.SmackException - if Smack detected an exceptional situation.
        java.io.IOException - in case of HTTP upload errors
      • uploadFile

        public java.net.URL uploadFile​(java.io.File file,
                                       UploadProgressListener listener)
                                throws java.lang.InterruptedException,
                                       org.jivesoftware.smack.XMPPException.XMPPErrorException,
                                       org.jivesoftware.smack.SmackException,
                                       java.io.IOException
        Request slot and uploaded file to HTTP file upload service with progress callback. You don't need to request slot and upload file separately, this method will do both. Note that this is a synchronous call -- Smack must wait for the server response.
        Parameters:
        file - file to be uploaded
        listener - Upload progress listener or null
        Returns:
        public URL for sharing uploaded file
        Throws:
        java.lang.InterruptedException - if the calling thread was interrupted.
        org.jivesoftware.smack.XMPPException.XMPPErrorException - if there was an XMPP error returned.
        org.jivesoftware.smack.SmackException - if Smack detected an exceptional situation.
        java.io.IOException - if an I/O error occurred.
      • uploadFile

        public java.net.URL uploadFile​(java.io.InputStream inputStream,
                                       java.lang.String fileName,
                                       long fileSize)
                                throws org.jivesoftware.smack.XMPPException.XMPPErrorException,
                                       java.lang.InterruptedException,
                                       org.jivesoftware.smack.SmackException,
                                       java.io.IOException
        Request slot and uploaded stream to HTTP upload service. You don't need to request slot and upload input stream separately, this method will do both. Note that this is a synchronous call -- Smack must wait for the server response.
        Parameters:
        inputStream - Input stream used for the upload.
        fileName - Name of the file.
        fileSize - Size of the file.
        Returns:
        public URL for sharing uploaded file
        Throws:
        org.jivesoftware.smack.XMPPException.XMPPErrorException - XMPPErrorException if there was an XMPP error returned.
        java.lang.InterruptedException - If the calling thread was interrupted.
        org.jivesoftware.smack.SmackException - If Smack detected an exceptional situation.
        java.io.IOException - If an I/O error occurred.
      • uploadFile

        public java.net.URL uploadFile​(java.io.InputStream inputStream,
                                       java.lang.String fileName,
                                       long fileSize,
                                       UploadProgressListener listener)
                                throws org.jivesoftware.smack.XMPPException.XMPPErrorException,
                                       java.lang.InterruptedException,
                                       org.jivesoftware.smack.SmackException,
                                       java.io.IOException
        Request slot and uploaded stream to HTTP upload service. You don't need to request slot and upload input stream separately, this method will do both. Note that this is a synchronous call -- Smack must wait for the server response.
        Parameters:
        inputStream - Input stream used for the upload.
        fileName - Name of the file.
        fileSize - file size in bytes.
        listener - upload progress listener or null.
        Returns:
        public URL for sharing uploaded file
        Throws:
        org.jivesoftware.smack.XMPPException.XMPPErrorException - XMPPErrorException if there was an XMPP error returned.
        java.lang.InterruptedException - If the calling thread was interrupted.
        org.jivesoftware.smack.SmackException - If Smack detected an exceptional situation.
        java.io.IOException - If an I/O error occurred.
      • requestSlot

        public Slot requestSlot​(java.lang.String filename,
                                long fileSize)
                         throws java.lang.InterruptedException,
                                org.jivesoftware.smack.XMPPException.XMPPErrorException,
                                org.jivesoftware.smack.SmackException
        Request a new upload slot from default upload service (if discovered). When you get slot you should upload file to PUT URL and share GET URL. Note that this is a synchronous call -- Smack must wait for the server response.
        Parameters:
        filename - name of file to be uploaded
        fileSize - file size in bytes.
        Returns:
        file upload Slot in case of success
        Throws:
        java.lang.IllegalArgumentException - if fileSize is less than or equal to zero or greater than the maximum size supported by the service.
        java.lang.InterruptedException - if the calling thread was interrupted.
        org.jivesoftware.smack.XMPPException.XMPPErrorException - if there was an XMPP error returned.
        org.jivesoftware.smack.SmackException - if smack exception.
      • requestSlot

        public Slot requestSlot​(java.lang.String filename,
                                long fileSize,
                                java.lang.String contentType)
                         throws org.jivesoftware.smack.SmackException,
                                java.lang.InterruptedException,
                                org.jivesoftware.smack.XMPPException.XMPPErrorException
        Request a new upload slot with optional content type from default upload service (if discovered). When you get slot you should upload file to PUT URL and share GET URL. Note that this is a synchronous call -- Smack must wait for the server response.
        Parameters:
        filename - name of file to be uploaded
        fileSize - file size in bytes.
        contentType - file content-type or null
        Returns:
        file upload Slot in case of success
        Throws:
        java.lang.IllegalArgumentException - if fileSize is less than or equal to zero or greater than the maximum size supported by the service.
        org.jivesoftware.smack.SmackException.NotConnectedException - if the XMPP connection is not connected.
        java.lang.InterruptedException - if the calling thread was interrupted.
        org.jivesoftware.smack.XMPPException.XMPPErrorException - if there was an XMPP error returned.
        org.jivesoftware.smack.SmackException - if smack exception.
      • requestSlot

        public Slot requestSlot​(java.lang.String filename,
                                long fileSize,
                                java.lang.String contentType,
                                org.jxmpp.jid.DomainBareJid uploadServiceAddress)
                         throws org.jivesoftware.smack.SmackException,
                                java.lang.InterruptedException,
                                org.jivesoftware.smack.XMPPException.XMPPErrorException
        Request a new upload slot with optional content type from custom upload service. When you get slot you should upload file to PUT URL and share GET URL. Note that this is a synchronous call -- Smack must wait for the server response.
        Parameters:
        filename - name of file to be uploaded
        fileSize - file size in bytes.
        contentType - file content-type or null
        uploadServiceAddress - the address of the upload service to use or null for default one
        Returns:
        file upload Slot in case of success
        Throws:
        java.lang.IllegalArgumentException - if fileSize is less than or equal to zero or greater than the maximum size supported by the service.
        org.jivesoftware.smack.SmackException - if Smack detected an exceptional situation.
        java.lang.InterruptedException - if the calling thread was interrupted.
        org.jivesoftware.smack.XMPPException.XMPPErrorException - if there was an XMPP error returned.
      • setTlsContext

        public void setTlsContext​(javax.net.ssl.SSLContext tlsContext)
      • namespaceToVersion

        public static UploadService.Version namespaceToVersion​(java.lang.String namespace)