QXmpp Version: 1.15.1
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Member Functions | Properties | Friends | List of all members
QXmppHttpUploadManager Class Reference
Inheritance diagram for QXmppHttpUploadManager:
Inheritance graph
[legend]
Collaboration diagram for QXmppHttpUploadManager:
Collaboration graph
[legend]

Public Types

enum class  Support { Unknown , Unsupported , Supported }
 

Public Member Functions

 QXmppHttpUploadManager ()
 
 QXmppHttpUploadManager (QNetworkAccessManager *netManager)
 
QVector< QXmppHttpUploadServiceservices () const
 
Q_SIGNAL void servicesChanged ()
 Emitted when services have changed.
 
Support support () const
 
Q_SIGNAL void supportChanged ()
 Emitted when support has changed.
 
std::shared_ptr< QXmppHttpUploaduploadFile (std::unique_ptr< QIODevice > data, const QString &filename, const QMimeType &mimeType, qint64 fileSize=-1, const QString &uploadServiceJid={})
 
std::shared_ptr< QXmppHttpUploaduploadFile (const QFileInfo &fileInfo, const QString &filename={}, const QString &uploadServiceJid={})
 
- Public Member Functions inherited from QXmppClientExtension
 QXmppClientExtension ()
 
virtual QStringList discoveryFeatures () const
 
virtual QList< QXmppDiscoIdentitydiscoveryIdentities () const
 
virtual bool handleStanza (const QDomElement &stanza)
 You need to implement this method to process incoming XMPP stanzas.
 
virtual bool handleStanza (const QDomElement &stanza, const std::optional< QXmppE2eeMetadata > &e2eeMetadata)
 You need to implement this method to process incoming XMPP stanzas.
 
- Public Member Functions inherited from QXmppLoggable
 QXmppLoggable (QObject *parent=nullptr)
 
Q_SIGNAL void setGauge (const QString &gauge, double value)
 Sets the given gauge to value.
 
Q_SIGNAL void logMessage (QXmppLogger::MessageType type, const QString &msg)
 This signal is emitted to send logging messages.
 
Q_SIGNAL void updateCounter (const QString &counter, qint64 amount=1)
 Updates the given counter by amount.
 

Protected Member Functions

void onRegistered (QXmppClient *client) override
 
void onUnregistered (QXmppClient *client) override
 
- Protected Member Functions inherited from QXmppClientExtension
QXmppClientclient () const
 
virtual void setClient (QXmppClient *client)
 
void injectIq (const QDomElement &element, const std::optional< QXmppE2eeMetadata > &e2eeMetadata)
 
bool injectMessage (QXmppMessage &&message)
 
- Protected Member Functions inherited from QXmppLoggable
void debug (const QString &message)
 Logs a debugging message.
 
void info (const QString &message)
 Logs an informational message.
 
void warning (const QString &message)
 Logs a warning message.
 
void logReceived (const QString &message)
 Logs a received packet.
 
void logSent (const QString &message)
 Logs a sent packet.
 

Properties

QVector< QXmppHttpUploadServiceservices
 
QXmppHttpUploadManager::Support support
 

Friends

struct QXmppHttpUploadManagerPrivate
 

Detailed Description

The upload manager allows to upload a file to a server via XEP-0363: HTTP File Upload. This can be used for sending files to other users.

QXmppHttpUploadManager depends on QXmppDiscoveryManager.

Since
QXmpp 1.5

Member Enumeration Documentation

◆ Support

Server support for the feature.

Enumerator
Unknown 

Whether the server supports the feature is not known.

That means, there is no corresponding information from the server (yet).

Unsupported 

The server does not support the feature.

Supported 

The server supports the feature.

Since
QXmpp 1.13

Constructor & Destructor Documentation

◆ QXmppHttpUploadManager() [1/2]

QXmppHttpUploadManager::QXmppHttpUploadManager ( )

Constructor

Creates and uses a new network access manager.

◆ QXmppHttpUploadManager() [2/2]

QXmppHttpUploadManager::QXmppHttpUploadManager ( QNetworkAccessManager *  netManager)
explicit

Constructor

Parameters
netManagershared network access manager, needs to have at least the lifetime of this manager.

Member Function Documentation

◆ onRegistered()

void QXmppHttpUploadManager::onRegistered ( QXmppClient client)
overrideprotectedvirtual

Called after the extension has been added to a QXmppClient.

Parameters
client

Reimplemented from QXmppClientExtension.

◆ onUnregistered()

void QXmppHttpUploadManager::onUnregistered ( QXmppClient client)
overrideprotectedvirtual

Called after the extension has been removed from a QXmppClient.

Parameters
client

Reimplemented from QXmppClientExtension.

◆ services()

QVector< QXmppHttpUploadService > QXmppHttpUploadManager::services ( ) const

Returns all discovered HTTP File Upload services.

Since
QXmpp 1.13

◆ support()

QXmppHttpUploadManager::Support QXmppHttpUploadManager::support ( ) const

Returns the server's support for upload services.

Since
QXmpp 1.13

◆ uploadFile() [1/2]

std::shared_ptr< QXmppHttpUpload > QXmppHttpUploadManager::uploadFile ( const QFileInfo &  fileInfo,
const QString &  filename = {},
const QString &  uploadServiceJid = {} 
)

Upload data from a local file.

Parameters
fileInfoQFileInfo about a local file
filenamefilename How the file on the server should be called. This is commonly used as last part of the resulting url.
uploadServiceJidoptionally, the jid from which an upload url can be requested (upload service)
Returns
an object representing the ongoing upload. The object is passed as a shared_ptr, which means it will be stored as long as there is a reference to it. While this avoids errors from accessing it after it was deleted, you should try not store it unneccesarily long to keep the memory usage down. You can for example use std::weak_ptr to not increase the lifetime, for example when capturing in long living lambdas, for example in connects. You should also make sure to use the 4-arg QObject::connect, so the connection and the connected lambda can be deleted after the upload finished.
std::weak_ptr<QXmppHttpUpload> uploadPtr = upload;
connect(upload.get(), &QXmppHttpUpload::progressChanged, this, [uploadPtr]() {
auto upload = uploadPtr.lock();
if (upload) {
qDebug() << upload->progress();
}
});
Q_SIGNAL void progressChanged()

◆ uploadFile() [2/2]

std::shared_ptr< QXmppHttpUpload > QXmppHttpUploadManager::uploadFile ( std::unique_ptr< QIODevice >  data,
const QString &  filename,
const QMimeType &  mimeType,
qint64  fileSize = -1,
const QString &  uploadServiceJid = {} 
)

Uploads the data from a QIODevice.

Parameters
dataQIODevice to read the data from. This can for example be a QFile. It can be sequential or non-sequential.
filenameHow the file on the server should be called. This is commonly used as last part of the resulting url.
fileSizeThe size of the file, in byte. If negative the size from the IO device is used.
mimeTypeThe mime type of the file
uploadServiceJidoptionally, the jid from which an upload url can be requested (upload service)
Returns
an object representing the ongoing upload. The object is passed as a shared_ptr, which means it will be stored as long as there is a reference to it. While this avoids errors from accessing it after it was deleted, you should try not store it unneccesarily long to keep the memory usage down. You can for example use std::weak_ptr to not increase the lifetime, for example when capturing in long living lambdas, for example in connects. You should also make sure to use the 4-arg QObject::connect, so the connection and the connected lambda can be deleted after the upload finished.
std::weak_ptr<QXmppHttpUpload> uploadPtr = upload;
connect(upload.get(), &QXmppHttpUpload::progressChanged, this, [uploadPtr]() {
auto upload = uploadPtr.lock();
if (upload) {
qDebug() << upload->progress();
}
});

Property Documentation

◆ services

QXmppHttpUploadManager::services
read

◆ support

QXmppHttpUploadManager::support
read

The documentation for this class was generated from the following files: