bool UploadTimesheetJob::execute(int state, QNetworkAccessManager *manager) { if (state != UploadTimesheet) return HttpJob::execute(state, manager); QByteArray data; /* username */ data += "--KDAB\r\n" "Content-Disposition: form-data; name=\"user\"\r\n\r\n"; data += username().toUtf8(); data += "\r\n"; /* payload */ data += "--KDAB\r\n" "Content-Disposition: form-data; name=\"" + m_fileName + "\"; filename=\"payload\"\r\n" "Content-Type: application/octet-stream\r\n\r\n"; data += m_payload; data += "\r\n"; /* eot */ data += "--KDAB--\r\n"; QNetworkRequest request(m_uploadUrl); request.setHeader(QNetworkRequest::ContentTypeHeader, "multipart/form-data; boundary=KDAB"); request.setHeader(QNetworkRequest::ContentLengthHeader, data.size()); QNetworkReply *reply = manager->post(request, data); if (reply->error() != QNetworkReply::NoError) setErrorAndEmitFinished(SomethingWentWrong, reply->errorString()); return true; }
bool UploadTimesheetJob::handle(QNetworkReply *reply) { /* check for failure */ if (reply->error() != QNetworkReply::NoError) { setErrorAndEmitFinished(SomethingWentWrong, reply->errorString()); return false; } if (state() != UploadTimesheet) return HttpJob::handle(reply); const QByteArray answer = reply->readAll(); if (answer.contains("SuccessResultMessage")) { delayedNext(); } else { setErrorAndEmitFinished(SomethingWentWrong, tr("No confirmation from server.")); } return true; }
bool GetProjectCodesJob::execute(int state, QNetworkAccessManager *manager) { if (state != GetProjectCodes) return HttpJob::execute(state, manager); QNetworkRequest request(m_downloadUrl); QNetworkReply *reply = manager->get(request); if (reply->error() != QNetworkReply::NoError) setErrorAndEmitFinished(SomethingWentWrong, reply->errorString()); return true; }
bool GetProjectCodesJob::handle(QNetworkReply *reply) { /* check for failure */ if (reply->error() != QNetworkReply::NoError) { setErrorAndEmitFinished(SomethingWentWrong, reply->errorString()); return false; } if (state() != GetProjectCodes) return HttpJob::handle(reply); m_payload = reply->readAll(); delayedNext(); return true; }