diff options
author | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2018-01-12 23:31:46 +0900 |
---|---|---|
committer | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2018-01-14 00:19:02 +0900 |
commit | bb4d1e98f077d29b62efa5f453086fa569698856 (patch) | |
tree | 569b9025c119406ef7074bda286af43b5bff1796 /connection.cpp | |
parent | daff357c0631d675606feb4e001c98d1742b0bb0 (diff) | |
download | libquotient-bb4d1e98f077d29b62efa5f453086fa569698856.tar.gz libquotient-bb4d1e98f077d29b62efa5f453086fa569698856.zip |
Connection: files up/downloading support
Diffstat (limited to 'connection.cpp')
-rw-r--r-- | connection.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/connection.cpp b/connection.cpp index 0086320b..2bff6179 100644 --- a/connection.cpp +++ b/connection.cpp @@ -29,6 +29,7 @@ #include "jobs/roommessagesjob.h" #include "jobs/syncjob.h" #include "jobs/mediathumbnailjob.h" +#include "jobs/downloadfilejob.h" #include <QtNetwork/QDnsLookup> #include <QtCore/QFile> @@ -324,6 +325,47 @@ MediaThumbnailJob* Connection::getThumbnail(const QUrl& url, int requestedWidth, return getThumbnail(url, QSize(requestedWidth, requestedHeight)); } +UploadContentJob* Connection::uploadContent(QIODevice* contentSource, + const QString& filename, const QString& contentType) const +{ + return callApi<UploadContentJob>(contentSource, filename, contentType); +} + +UploadContentJob* Connection::uploadFile(const QString& fileName, + const QString& contentType) +{ + auto sourceFile = new QFile(fileName); + if (sourceFile->open(QIODevice::ReadOnly)) + { + qCWarning(MAIN) << "Couldn't open" << sourceFile->fileName() + << "for reading"; + return nullptr; + } + return uploadContent(sourceFile, QFileInfo(*sourceFile).fileName(), + contentType); +} + +GetContentJob* Connection::getContent(const QString& mediaId) const +{ + auto idParts = splitMediaId(mediaId); + return callApi<GetContentJob>(idParts.front(), idParts.back()); +} + +GetContentJob* Connection::getContent(const QUrl& url) const +{ + return getContent(url.authority() + url.path()); +} + +DownloadFileJob* Connection::downloadFile(const QUrl& url, + const QString& localFilename) const +{ + auto mediaId = url.authority() + url.path(); + auto idParts = splitMediaId(mediaId); + auto* job = callApi<DownloadFileJob>(idParts.front(), idParts.back(), + localFilename); + return job; +} + ForgetRoomJob* Connection::forgetRoom(const QString& id) { // To forget is hard :) First we should ensure the local user is not |