aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/KeyUploadDialog.cpp
diff options
context:
space:
mode:
authorSaturn&Eric <[email protected]>2021-12-05 08:14:53 +0000
committerGitHub <[email protected]>2021-12-05 08:14:53 +0000
commitab7e3bac8b5f1d1fdd8367bdb1a185be36b281c2 (patch)
tree234892f5ae225d67b24619209cf57636ec9d9b2d /src/ui/KeyUploadDialog.cpp
parentMerge branch 'main' of github.com:saturneric/GpgFrontend (diff)
parentRemove rapidjson and Improve update ploicy. (diff)
downloadGpgFrontend-ab7e3bac8b5f1d1fdd8367bdb1a185be36b281c2.tar.gz
GpgFrontend-ab7e3bac8b5f1d1fdd8367bdb1a185be36b281c2.zip
Merge pull request #25 from saturneric/develop
Merge version 2.0.1 beta
Diffstat (limited to 'src/ui/KeyUploadDialog.cpp')
-rw-r--r--src/ui/KeyUploadDialog.cpp182
1 files changed, 97 insertions, 85 deletions
diff --git a/src/ui/KeyUploadDialog.cpp b/src/ui/KeyUploadDialog.cpp
index ab38569f..b2bfff6d 100644
--- a/src/ui/KeyUploadDialog.cpp
+++ b/src/ui/KeyUploadDialog.cpp
@@ -1,7 +1,7 @@
/**
- * This file is part of GPGFrontend.
+ * This file is part of GpgFrontend.
*
- * GPGFrontend is free software: you can redistribute it and/or modify
+ * GpgFrontend is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
@@ -24,105 +24,117 @@
#include "ui/KeyUploadDialog.h"
-KeyUploadDialog::KeyUploadDialog(GpgME::GpgContext *ctx, const QVector<GpgKey> &keys, QWidget *parent)
- : appPath(qApp->applicationDirPath()),
- settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini", QSettings::IniFormat),
- mCtx(ctx),
- mKeys(keys),
- QDialog(parent) {
-
-
- auto *pb = new QProgressBar();
- pb->setRange(0, 0);
- pb->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
- pb->setTextVisible(false);
-
- auto *layout = new QVBoxLayout();
- layout->addWidget(pb);
- layout->setContentsMargins(0, 0, 0, 0);
- layout->setSpacing(0);
- this->setLayout(layout);
-
- this->setModal(true);
- this->setWindowTitle(tr("Uploading Public Key"));
- this->setFixedSize(240, 42);
+#include <algorithm>
+
+#include "gpg/function/GpgKeyGetter.h"
+#include "gpg/function/GpgKeyImportExportor.h"
+
+namespace GpgFrontend::UI {
+
+KeyUploadDialog::KeyUploadDialog(const KeyIdArgsListPtr& keys_ids,
+ QWidget* parent)
+ : QDialog(parent),
+ appPath(qApp->applicationDirPath()),
+ settings(RESOURCE_DIR(appPath) + "/conf/gpgfrontend.ini",
+ QSettings::IniFormat),
+ mKeys(GpgKeyGetter::GetInstance().GetKeys(keys_ids)) {
+ auto* pb = new QProgressBar();
+ pb->setRange(0, 0);
+ pb->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+ pb->setTextVisible(false);
+
+ auto* layout = new QVBoxLayout();
+ layout->addWidget(pb);
+ layout->setContentsMargins(0, 0, 0, 0);
+ layout->setSpacing(0);
+ this->setLayout(layout);
+
+ this->setModal(true);
+ this->setWindowTitle(_("Uploading Public Key"));
+ this->setFixedSize(240, 42);
}
void KeyUploadDialog::slotUpload() {
- mCtx->exportKeys(mKeys, mKeyData);
- uploadKeyToServer(mKeyData);
+ auto out_data = std::make_unique<ByteArray>();
+ GpgKeyImportExportor::GetInstance().ExportKeys(*mKeys, out_data);
+ uploadKeyToServer(*out_data);
}
-void KeyUploadDialog::uploadKeyToServer(QByteArray &keys) {
+void KeyUploadDialog::uploadKeyToServer(
+ const GpgFrontend::ByteArray& keys_data) {
+ // set default keyserver
+ QString keyserver = settings.value("keyserver/defaultKeyServer").toString();
- // set default keyserver
- QString keyserver = settings.value("keyserver/defaultKeyServer").toString();
+ QUrl reqUrl(keyserver + "/pks/add");
+ auto qnam = new QNetworkAccessManager(this);
- QUrl reqUrl(keyserver + "/pks/add");
- auto qnam = new QNetworkAccessManager(this);
+ // Building Post Data
+ QByteArray postData;
- // Building Post Data
- QByteArray postData;
+ auto data = std::string(keys_data);
- keys.replace("\n", "%0A")
- .replace("\r", "%0D")
- .replace("(", "%28")
- .replace(")", "%29")
- .replace("/", "%2F")
- .replace(":", "%3A")
- .replace("+", "%2B")
- .replace('=', "%3D")
- .replace(' ', '+');
+ boost::algorithm::replace_all(data, "\n", "%0A");
+ boost::algorithm::replace_all(data, "\r", "%0D");
+ boost::algorithm::replace_all(data, "(", "%28");
+ boost::algorithm::replace_all(data, ")", "%29");
+ boost::algorithm::replace_all(data, "/", "%2F");
+ boost::algorithm::replace_all(data, ":", "%3A");
+ boost::algorithm::replace_all(data, "+", "%2B");
+ boost::algorithm::replace_all(data, "=", "%3D");
+ boost::algorithm::replace_all(data, " ", "+");
- QNetworkRequest request(reqUrl);
- request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
+ QNetworkRequest request(reqUrl);
+ request.setHeader(QNetworkRequest::ContentTypeHeader,
+ "application/x-www-form-urlencoded");
- postData.append("keytext").append("=").append(keys);
+ postData.append("keytext").append("=").append(
+ QString::fromStdString(data).toUtf8());
- // Send Post Data
- QNetworkReply *reply = qnam->post(request, postData);
- connect(reply, SIGNAL(finished()),
- this, SLOT(slotUploadFinished()));
+ // Send Post Data
+ QNetworkReply* reply = qnam->post(request, postData);
+ connect(reply, SIGNAL(finished()), this, SLOT(slotUploadFinished()));
+ // Keep Waiting
+ while (reply->isRunning()) {
+ QApplication::processEvents();
+ }
- // Keep Waiting
- while(reply->isRunning()) {
- QApplication::processEvents();
- }
-
- // Done
- this->hide();
- this->close();
+ // Done
+ this->hide();
+ this->close();
}
void KeyUploadDialog::slotUploadFinished() {
- auto *reply = qobject_cast<QNetworkReply *>(sender());
-
- QByteArray response = reply->readAll();
- qDebug() << "Response: " << response.data();
-
- auto error = reply->error();
- if (error != QNetworkReply::NoError) {
- qDebug() << "Error From Reply" << reply->errorString();
- QString message;
- switch (error) {
- case QNetworkReply::ContentNotFoundError :
- message = tr("Key Not Found");
- break;
- case QNetworkReply::TimeoutError :
- message = tr("Timeout");
- break;
- case QNetworkReply::HostNotFoundError :
- message = tr("Key Server Not Found");
- break;
- default:
- message = tr("Connection Error");
- }
- QMessageBox::critical(this, "Upload Failed", message);
- return;
- } else {
- QMessageBox::information(this, "Upload Success", "Upload Public Key Successfully");
- qDebug() << "Success while contacting keyserver!";
+ auto* reply = qobject_cast<QNetworkReply*>(sender());
+
+ QByteArray response = reply->readAll();
+ qDebug() << "Response: " << response.data();
+
+ auto error = reply->error();
+ if (error != QNetworkReply::NoError) {
+ qDebug() << "Error From Reply" << reply->errorString();
+ QString message;
+ switch (error) {
+ case QNetworkReply::ContentNotFoundError:
+ message = _("Key Not Found");
+ break;
+ case QNetworkReply::TimeoutError:
+ message = _("Timeout");
+ break;
+ case QNetworkReply::HostNotFoundError:
+ message = _("Key Server Not Found");
+ break;
+ default:
+ message = _("Connection Error");
}
- reply->deleteLater();
+ QMessageBox::critical(this, "Upload Failed", message);
+ return;
+ } else {
+ QMessageBox::information(this, "Upload Success",
+ "Upload Public Key Successfully");
+ qDebug() << "Success while contacting keyserver!";
+ }
+ reply->deleteLater();
}
+
+} // namespace GpgFrontend::UI