aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/import_export/KeyUploadDialog.cpp
diff options
context:
space:
mode:
authorSaturneric <[email protected]>2022-07-22 17:46:34 +0000
committerSaturneric <[email protected]>2022-07-22 17:46:34 +0000
commita6d22ea199b62d433c595ed5b9f51398fc8b7f5a (patch)
treea09fb7383a655a18a79c72f54c57352ddba7a4b3 /src/ui/import_export/KeyUploadDialog.cpp
parentstyle(src): reformat code (diff)
downloadGpgFrontend-a6d22ea199b62d433c595ed5b9f51398fc8b7f5a.tar.gz
GpgFrontend-a6d22ea199b62d433c595ed5b9f51398fc8b7f5a.zip
refactor(ui): adjust file structure
Diffstat (limited to 'src/ui/import_export/KeyUploadDialog.cpp')
-rw-r--r--src/ui/import_export/KeyUploadDialog.cpp159
1 files changed, 0 insertions, 159 deletions
diff --git a/src/ui/import_export/KeyUploadDialog.cpp b/src/ui/import_export/KeyUploadDialog.cpp
deleted file mode 100644
index 055f2e1f..00000000
--- a/src/ui/import_export/KeyUploadDialog.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-/**
- * Copyright (C) 2021 Saturneric
- *
- * This file is part of GpgFrontend.
- *
- * 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.
- *
- * GpgFrontend is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from
- * the gpg4usb project, which is under GPL-3.0-or-later.
- *
- * All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#include "KeyUploadDialog.h"
-
-#include <algorithm>
-
-#include "core/function/GlobalSettingStation.h"
-#include "core/function/gpg/GpgKeyGetter.h"
-#include "core/function/gpg/GpgKeyImportExporter.h"
-
-namespace GpgFrontend::UI {
-
-KeyUploadDialog::KeyUploadDialog(const KeyIdArgsListPtr& keys_ids,
- QWidget* parent)
- : GeneralDialog(typeid(KeyUploadDialog).name(), parent),
- m_keys_(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() {
- auto out_data = std::make_unique<ByteArray>();
- GpgKeyImportExporter::GetInstance().ExportKeys(*m_keys_, out_data);
- slot_upload_key_to_server(*out_data);
-}
-
-void KeyUploadDialog::slot_upload_key_to_server(
- const GpgFrontend::ByteArray& keys_data) {
- std::string target_keyserver;
- if (target_keyserver.empty()) {
- try {
- auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
-
- target_keyserver = settings.lookup("keyserver.default_server").c_str();
-
- LOG(INFO) << _("Set target Key Server to default Key Server")
- << target_keyserver;
- } catch (...) {
- LOG(ERROR) << _("Cannot read default_keyserver From Settings");
- QMessageBox::critical(
- nullptr, _("Default Keyserver Not Found"),
- _("Cannot read default keyserver from your settings, "
- "please set a default keyserver first"));
- return;
- }
- }
-
- QUrl req_url(QString::fromStdString(target_keyserver + "/pks/add"));
- auto qnam = new QNetworkAccessManager(this);
-
- // Building Post Data
- QByteArray postData;
-
- auto data = std::string(keys_data);
-
- 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(req_url);
- request.setHeader(QNetworkRequest::ContentTypeHeader,
- "application/x-www-form-urlencoded");
-
- postData.append("keytext").append("=").append(
- QString::fromStdString(data).toUtf8());
-
- // Send Post Data
- QNetworkReply* reply = qnam->post(request, postData);
- connect(reply, &QNetworkReply::finished, this,
- &KeyUploadDialog::slot_upload_finished);
-
- // Keep Waiting
- while (reply->isRunning()) {
- QApplication::processEvents();
- }
-
- // Done
- this->hide();
- this->close();
-}
-
-void KeyUploadDialog::slot_upload_finished() {
- auto* reply = qobject_cast<QNetworkReply*>(sender());
-
- QByteArray response = reply->readAll();
- LOG(INFO) << "Response: " << response.toStdString();
-
- auto error = reply->error();
- if (error != QNetworkReply::NoError) {
- LOG(INFO) << "Error From Reply" << reply->errorString().toStdString();
- 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");
- }
- QMessageBox::critical(this, "Upload Failed", message);
- return;
- } else {
- QMessageBox::information(this, _("Upload Success"),
- _("Upload Public Key Successfully"));
- LOG(INFO) << "Success while contacting keyserver!";
- }
- reply->deleteLater();
-}
-
-} // namespace GpgFrontend::UI