Can send image to conversations

This commit is contained in:
2018-12-19 08:26:11 +01:00
parent 0148f7aaa5
commit 9100c14dfd
13 changed files with 224 additions and 12 deletions

View File

@ -30,16 +30,49 @@ void APIHelper::execute(APIRequest *request)
request->addString("userToken2", tokens.token2());
}
//Prepare request
//See this SO question to learn more : https://stackoverflow.com/questions/2599423
QUrlQuery queryData;
for(APIRequestParameter param : request->arguments())
queryData.addQueryItem(param.name(), param.value());
QNetworkReply *reply = nullptr;
//Send request
QNetworkRequest networkRequest((QUrl(requestURL)));
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
QNetworkReply *reply = mNetworkManager.post(networkRequest, queryData.toString(QUrl::FullyEncoded).toUtf8());
//Prepare request
//Check if the request contains files or not
if(!request->hasParts()){
//See this SO question to learn more : https://stackoverflow.com/questions/2599423
QUrlQuery queryData;
for(APIRequestParameter param : request->arguments())
queryData.addQueryItem(param.name(), param.value());
//Send request
QNetworkRequest networkRequest((QUrl(requestURL)));
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
reply = mNetworkManager.post(networkRequest, queryData.toString(QUrl::FullyEncoded).toUtf8());
}
//Multiple entries request
else {
QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
//Process the list of "normal" arguments
for(APIRequestParameter param : request->arguments()){
QHttpPart part;
part.setHeader(QNetworkRequest::ContentDispositionHeader, "form-data; name=\""+param.name()+"\"");
part.setBody(param.value().toStdString().c_str());
multiPart->append(part);
}
//Append all the other parts
for(int i = 0; i < request->parts()->size(); i++)
multiPart->append(request->parts()->at(i));
//Send request
QNetworkRequest networkRequest((QUrl(requestURL)));
reply = mNetworkManager.post(networkRequest, multiPart);
//Delete multipart as soon as the request ends
multiPart->setParent(reply);
}
//Make connections
connect(reply, &QNetworkReply::finished, this, &APIHelper::finished);

View File

@ -4,6 +4,7 @@
#include "apihelper.h"
#include "conversationhelper.h"
#include "../data/apirequest.h"
#include "../utils/filesutils.h"
ConversationHelper::ConversationHelper(QObject *parent) : QObject(parent)
{
@ -17,6 +18,14 @@ void ConversationHelper::sendMessage(const NewConversationMessage &message)
request->addInt("conversationID", message.iDConversation());
request->addString("message", message.message());
//Add image (if any)
if(message.hasImage()){
//Add image to request
request->addFileFromPath("image", message.imagePath(), FilesUtils::GetFileMimeType(message.imagePath()));
}
connect(request, &APIRequest::finished, this, &ConversationHelper::sendMessageFinished);
mAPIHelper->execute(request);
}