aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppTransferManager.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-09-12 15:52:41 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2012-09-12 15:52:41 +0200
commit07d537a2573f1dd06dd69ba6a5e2fa97357c443b (patch)
treeba452c274480fea96348d14b4653dc481119e7c5 /src/client/QXmppTransferManager.cpp
parentf9b26e12f593b185a15674e3ddda0b56d05b43c6 (diff)
downloadqxmpp-07d537a2573f1dd06dd69ba6a5e2fa97357c443b.tar.gz
test stream initiation IQ serialisation / parsing
Diffstat (limited to 'src/client/QXmppTransferManager.cpp')
-rw-r--r--src/client/QXmppTransferManager.cpp44
1 files changed, 12 insertions, 32 deletions
diff --git a/src/client/QXmppTransferManager.cpp b/src/client/QXmppTransferManager.cpp
index 146bd08d..dd23a851 100644
--- a/src/client/QXmppTransferManager.cpp
+++ b/src/client/QXmppTransferManager.cpp
@@ -134,6 +134,15 @@ void QXmppTransferFileInfo::setSize(qint64 size)
d->size = size;
}
+bool QXmppTransferFileInfo::isNull() const
+{
+ return d->date.isNull()
+ && d->description.isEmpty()
+ && d->hash.isEmpty()
+ && d->name.isEmpty()
+ && d->size == 0;
+}
+
QXmppTransferFileInfo& QXmppTransferFileInfo::operator=(const QXmppTransferFileInfo &other)
{
d = other.d;
@@ -1359,26 +1368,7 @@ QXmppTransferJob *QXmppTransferManager::sendFile(const QString &jid, QIODevice *
return job;
}
- // prepare negotiation
- QXmppElementList items;
-
- QXmppElement file;
- file.setTagName("file");
- file.setAttribute("xmlns", ns_stream_initiation_file_transfer);
- file.setAttribute("date", QXmppUtils::datetimeToString(job->fileDate()));
- file.setAttribute("hash", job->fileHash().toHex());
- file.setAttribute("name", job->fileName());
- file.setAttribute("size", QString::number(job->fileSize()));
- if (!fileInfo.description().isEmpty())
- {
- QXmppElement desc;
- desc.setTagName("desc");
- desc.setValue(fileInfo.description());
- file.appendChild(desc);
- }
- items.append(file);
-
- // add supported stream methods
+ // collect supported stream methods
QXmppDataForm form;
form.setType(QXmppDataForm::Form);
@@ -1408,8 +1398,8 @@ QXmppTransferJob *QXmppTransferManager::sendFile(const QString &jid, QIODevice *
request.setType(QXmppIq::Set);
request.setTo(jid);
request.setProfile(QXmppStreamInitiationIq::FileTransfer);
+ request.setFileInfo(job->d->fileInfo);
request.setFeatureForm(form);
- request.setSiItems(items);
request.setSiId(job->d->sid);
job->d->requestId = request.id();
client()->sendPacket(request);
@@ -1594,6 +1584,7 @@ void QXmppTransferManager::streamInitiationSetReceived(const QXmppStreamInitiati
job->d->offerId = iq.id();
job->d->sid = iq.siId();
job->d->mimeType = iq.mimeType();
+ job->d->fileInfo = iq.fileInfo();
foreach (const QXmppDataForm::Field &field, iq.featureForm().fields()) {
if (field.key() == "stream-method") {
QPair<QString, QString> option;
@@ -1605,17 +1596,6 @@ void QXmppTransferManager::streamInitiationSetReceived(const QXmppStreamInitiati
}
}
}
- foreach (const QXmppElement &item, iq.siItems())
- {
- if (item.tagName() == "file" && item.attribute("xmlns") == ns_stream_initiation_file_transfer)
- {
- job->d->fileInfo.setDate(QXmppUtils::datetimeFromString(item.attribute("date")));
- job->d->fileInfo.setHash(QByteArray::fromHex(item.attribute("hash").toAscii()));
- job->d->fileInfo.setName(item.attribute("name"));
- job->d->fileInfo.setSize(item.attribute("size").toLongLong());
- job->d->fileInfo.setDescription(item.firstChildElement("desc").value());
- }
- }
// select a method supported by both parties
int sharedMethods = (offeredMethods & d->supportedMethods);