mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-18 21:14:01 +08:00
SshControl: use HttpRequest to get ssh keys (#20784)
* use HttpRequest
* remove eventloop
* rebase master
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: 00aa20f55a
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#include <QNetworkReply>
|
||||
#include <QHBoxLayout>
|
||||
#include "widgets/input.h"
|
||||
#include "widgets/ssh_keys.h"
|
||||
#include "api.h"
|
||||
#include "common/params.h"
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ SshControl::SshControl() : AbstractControl("SSH Keys", "Warning: This grants SSH
|
||||
|
||||
QObject::connect(&btn, &QPushButton::released, [=]() {
|
||||
if (btn.text() == "ADD") {
|
||||
username = InputDialog::getText("Enter your GitHub username");
|
||||
QString username = InputDialog::getText("Enter your GitHub username");
|
||||
if (username.length() > 0) {
|
||||
btn.setText("LOADING");
|
||||
btn.setEnabled(false);
|
||||
@@ -40,13 +40,6 @@ SshControl::SshControl() : AbstractControl("SSH Keys", "Warning: This grants SSH
|
||||
}
|
||||
});
|
||||
|
||||
// setup networking
|
||||
manager = new QNetworkAccessManager(this);
|
||||
networkTimer = new QTimer(this);
|
||||
networkTimer->setSingleShot(true);
|
||||
networkTimer->setInterval(5000);
|
||||
connect(networkTimer, &QTimer::timeout, this, &SshControl::timeout);
|
||||
|
||||
refresh();
|
||||
}
|
||||
|
||||
@@ -62,42 +55,27 @@ void SshControl::refresh() {
|
||||
btn.setEnabled(true);
|
||||
}
|
||||
|
||||
void SshControl::getUserKeys(QString username){
|
||||
QString url = "https://github.com/" + username + ".keys";
|
||||
|
||||
QNetworkRequest request;
|
||||
request.setUrl(QUrl(url));
|
||||
reply = manager->get(request);
|
||||
connect(reply, &QNetworkReply::finished, this, &SshControl::parseResponse);
|
||||
networkTimer->start();
|
||||
}
|
||||
|
||||
void SshControl::timeout(){
|
||||
reply->abort();
|
||||
}
|
||||
|
||||
void SshControl::parseResponse(){
|
||||
QString err = "";
|
||||
if (reply->error() != QNetworkReply::OperationCanceledError) {
|
||||
networkTimer->stop();
|
||||
QString response = reply->readAll();
|
||||
if (reply->error() == QNetworkReply::NoError && response.length()) {
|
||||
void SshControl::getUserKeys(const QString &username) {
|
||||
HttpRequest *request = new HttpRequest(this, "https://github.com/" + username + ".keys", "", false);
|
||||
QObject::connect(request, &HttpRequest::receivedResponse, [=](const QString &resp) {
|
||||
if (!resp.isEmpty()) {
|
||||
Params params;
|
||||
params.put("GithubUsername", username.toStdString());
|
||||
params.put("GithubSshKeys", response.toStdString());
|
||||
} else if(reply->error() == QNetworkReply::NoError){
|
||||
err = "Username '" + username + "' has no keys on GitHub";
|
||||
params.put("GithubSshKeys", resp.toStdString());
|
||||
} else {
|
||||
err = "Username '" + username + "' doesn't exist on GitHub";
|
||||
ConfirmationDialog::alert("Username '" + username + "' has no keys on GitHub");
|
||||
}
|
||||
} else {
|
||||
err = "Request timed out";
|
||||
}
|
||||
|
||||
if (err.length()) {
|
||||
ConfirmationDialog::alert(err);
|
||||
}
|
||||
|
||||
refresh();
|
||||
reply->deleteLater();
|
||||
reply = nullptr;
|
||||
refresh();
|
||||
request->deleteLater();
|
||||
});
|
||||
QObject::connect(request, &HttpRequest::failedResponse, [=] {
|
||||
ConfirmationDialog::alert("Username '" + username + "' doesn't exist on GitHub");
|
||||
refresh();
|
||||
request->deleteLater();
|
||||
});
|
||||
QObject::connect(request, &HttpRequest::timeoutResponse, [=] {
|
||||
ConfirmationDialog::alert("Request timed out");
|
||||
refresh();
|
||||
request->deleteLater();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <QTimer>
|
||||
#include <QPushButton>
|
||||
#include <QNetworkAccessManager>
|
||||
|
||||
#include "widgets/controls.h"
|
||||
#include "selfdrive/hardware/hw.h"
|
||||
@@ -30,21 +28,8 @@ private:
|
||||
Params params;
|
||||
|
||||
QPushButton btn;
|
||||
QString username;
|
||||
QLabel username_label;
|
||||
|
||||
// networking
|
||||
QTimer* networkTimer;
|
||||
QNetworkReply* reply;
|
||||
QNetworkAccessManager* manager;
|
||||
|
||||
void refresh();
|
||||
void getUserKeys(QString username);
|
||||
|
||||
signals:
|
||||
void failedResponse(QString errorString);
|
||||
|
||||
private slots:
|
||||
void timeout();
|
||||
void parseResponse();
|
||||
void getUserKeys(const QString &username);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user