forked from qt-creator/qt-creator
GitLab: Support unsecure http as well
Change-Id: Idfb4faf1cbfbfd6c2914b057e6c76461de0ceeff Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -221,17 +221,22 @@ void GitLabDialog::handleUser(const User &user)
|
|||||||
m_currentUserId = user.id;
|
m_currentUserId = user.id;
|
||||||
|
|
||||||
if (!user.error.message.isEmpty()) {
|
if (!user.error.message.isEmpty()) {
|
||||||
// TODO
|
|
||||||
if (user.error.code == 1) {
|
|
||||||
m_ui.mainLabel->setText(tr("Not logged in."));
|
m_ui.mainLabel->setText(tr("Not logged in."));
|
||||||
|
if (user.error.code == 1) {
|
||||||
m_ui.detailsLabel->setText(tr("Insufficient access token."));
|
m_ui.detailsLabel->setText(tr("Insufficient access token."));
|
||||||
m_ui.detailsLabel->setToolTip(user.error.message + QLatin1Char('\n')
|
m_ui.detailsLabel->setToolTip(user.error.message + QLatin1Char('\n')
|
||||||
+ tr("Permission scope read_api or api needed."));
|
+ tr("Permission scope read_api or api needed."));
|
||||||
|
} else if (user.error.code >= 300 && user.error.code < 400) {
|
||||||
|
m_ui.detailsLabel->setText(tr("Check settings for misconfiguration."));
|
||||||
|
m_ui.detailsLabel->setToolTip(user.error.message);
|
||||||
|
} else {
|
||||||
|
m_ui.detailsLabel->setText({});
|
||||||
|
m_ui.detailsLabel->setToolTip({});
|
||||||
|
}
|
||||||
updatePageButtons();
|
updatePageButtons();
|
||||||
m_ui.treeViewTitle->setText(tr("Projects (%1)").arg(0));
|
m_ui.treeViewTitle->setText(tr("Projects (%1)").arg(0));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (user.id != -1) {
|
if (user.id != -1) {
|
||||||
if (user.bot) {
|
if (user.bot) {
|
||||||
|
|||||||
@@ -84,6 +84,10 @@ GitLabServerWidget::GitLabServerWidget(Mode m, QWidget *parent)
|
|||||||
m_port.setDefaultValue(GitLabServer::defaultPort);
|
m_port.setDefaultValue(GitLabServer::defaultPort);
|
||||||
m_port.setEnabled(m == Edit);
|
m_port.setEnabled(m == Edit);
|
||||||
m_port.setLabelText(tr("Port:"));
|
m_port.setLabelText(tr("Port:"));
|
||||||
|
m_secure.setLabelText(tr("HTTPS:"));
|
||||||
|
m_secure.setLabelPlacement(Utils::BoolAspect::LabelPlacement::InExtraLabel);
|
||||||
|
m_secure.setDefaultValue(true);
|
||||||
|
m_secure.setEnabled(m == Edit);
|
||||||
|
|
||||||
using namespace Utils::Layouting;
|
using namespace Utils::Layouting;
|
||||||
const Break nl;
|
const Break nl;
|
||||||
@@ -93,7 +97,8 @@ GitLabServerWidget::GitLabServerWidget(Mode m, QWidget *parent)
|
|||||||
m_host,
|
m_host,
|
||||||
m_description,
|
m_description,
|
||||||
m_token,
|
m_token,
|
||||||
m_port
|
m_port,
|
||||||
|
m_secure
|
||||||
},
|
},
|
||||||
Stretch()
|
Stretch()
|
||||||
}.attachTo(this, m == Edit);
|
}.attachTo(this, m == Edit);
|
||||||
@@ -107,6 +112,7 @@ GitLabServer GitLabServerWidget::gitLabServer() const
|
|||||||
result.description = m_description.value();
|
result.description = m_description.value();
|
||||||
result.token = m_token.value();
|
result.token = m_token.value();
|
||||||
result.port = m_port.value();
|
result.port = m_port.value();
|
||||||
|
result.secure = m_secure.value();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,6 +123,7 @@ void GitLabServerWidget::setGitLabServer(const GitLabServer &server)
|
|||||||
m_description.setValue(server.description);
|
m_description.setValue(server.description);
|
||||||
m_token.setValue(server.token);
|
m_token.setValue(server.token);
|
||||||
m_port.setValue(server.port);
|
m_port.setValue(server.port);
|
||||||
|
m_secure.setValue(server.secure);
|
||||||
}
|
}
|
||||||
|
|
||||||
GitLabOptionsWidget::GitLabOptionsWidget(QWidget *parent)
|
GitLabOptionsWidget::GitLabOptionsWidget(QWidget *parent)
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ private:
|
|||||||
Utils::StringAspect m_description;
|
Utils::StringAspect m_description;
|
||||||
Utils::StringAspect m_token;
|
Utils::StringAspect m_token;
|
||||||
Utils::IntegerAspect m_port;
|
Utils::IntegerAspect m_port;
|
||||||
|
Utils::BoolAspect m_secure;
|
||||||
};
|
};
|
||||||
|
|
||||||
class GitLabOptionsWidget : public QWidget
|
class GitLabOptionsWidget : public QWidget
|
||||||
|
|||||||
@@ -46,12 +46,13 @@ GitLabServer::GitLabServer()
|
|||||||
}
|
}
|
||||||
|
|
||||||
GitLabServer::GitLabServer(const Utils::Id &id, const QString &host, const QString &description,
|
GitLabServer::GitLabServer(const Utils::Id &id, const QString &host, const QString &description,
|
||||||
const QString &token, unsigned short port)
|
const QString &token, unsigned short port, bool secure)
|
||||||
: id(id)
|
: id(id)
|
||||||
, host(host)
|
, host(host)
|
||||||
, description(description)
|
, description(description)
|
||||||
, token(token)
|
, token(token)
|
||||||
, port(port)
|
, port(port)
|
||||||
|
, secure(secure)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,8 +60,8 @@ bool GitLabServer::operator==(const GitLabServer &other) const
|
|||||||
{
|
{
|
||||||
if (port && other.port && port != other.port)
|
if (port && other.port && port != other.port)
|
||||||
return false;
|
return false;
|
||||||
return id == other.id && host == other.host && description == other.description
|
return secure == other.secure && id == other.id && host == other.host
|
||||||
&& token == other.token ;
|
&& description == other.description && token == other.token ;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GitLabServer::operator!=(const GitLabServer &other) const
|
bool GitLabServer::operator!=(const GitLabServer &other) const
|
||||||
@@ -76,12 +77,13 @@ QJsonObject GitLabServer::toJson() const
|
|||||||
result.insert("description", description);
|
result.insert("description", description);
|
||||||
result.insert("port", port);
|
result.insert("port", port);
|
||||||
result.insert("token", token);
|
result.insert("token", token);
|
||||||
|
result.insert("secure", secure);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
GitLabServer GitLabServer::fromJson(const QJsonObject &json)
|
GitLabServer GitLabServer::fromJson(const QJsonObject &json)
|
||||||
{
|
{
|
||||||
GitLabServer invalid{Utils::Id(), "", "", "", 0};
|
GitLabServer invalid{Utils::Id(), "", "", "", 0, true};
|
||||||
const QJsonValue id = json.value("id");
|
const QJsonValue id = json.value("id");
|
||||||
if (id == QJsonValue::Undefined)
|
if (id == QJsonValue::Undefined)
|
||||||
return invalid;
|
return invalid;
|
||||||
@@ -97,15 +99,16 @@ GitLabServer GitLabServer::fromJson(const QJsonObject &json)
|
|||||||
const QJsonValue port = json.value("port");
|
const QJsonValue port = json.value("port");
|
||||||
if (port == QJsonValue::Undefined)
|
if (port == QJsonValue::Undefined)
|
||||||
return invalid;
|
return invalid;
|
||||||
|
const bool secure = json.value("secure").toBool(true);
|
||||||
return {Utils::Id::fromString(id.toString()), host.toString(), description.toString(),
|
return {Utils::Id::fromString(id.toString()), host.toString(), description.toString(),
|
||||||
token.toString(), (unsigned short)port.toInt()};
|
token.toString(), (unsigned short)port.toInt(), secure};
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList GitLabServer::curlArguments() const
|
QStringList GitLabServer::curlArguments() const
|
||||||
{
|
{
|
||||||
// credentials from .netrc (?), no progress
|
// credentials from .netrc (?), no progress
|
||||||
QStringList args = { "-nsS" };
|
QStringList args = { "-nsS" };
|
||||||
if (!validateCert)
|
if (secure && !validateCert)
|
||||||
args << "-k";
|
args << "-k";
|
||||||
return args;
|
return args;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public:
|
|||||||
|
|
||||||
GitLabServer(); // TODO different protocol handling e.g. for clone / push?
|
GitLabServer(); // TODO different protocol handling e.g. for clone / push?
|
||||||
GitLabServer(const Utils::Id &id, const QString &host, const QString &description,
|
GitLabServer(const Utils::Id &id, const QString &host, const QString &description,
|
||||||
const QString &token, unsigned short port);;
|
const QString &token, unsigned short port, bool secure);
|
||||||
bool operator==(const GitLabServer &other) const;
|
bool operator==(const GitLabServer &other) const;
|
||||||
bool operator!=(const GitLabServer &other) const;
|
bool operator!=(const GitLabServer &other) const;
|
||||||
QJsonObject toJson() const;
|
QJsonObject toJson() const;
|
||||||
@@ -56,6 +56,7 @@ public:
|
|||||||
QString token;
|
QString token;
|
||||||
unsigned short port = 0;
|
unsigned short port = 0;
|
||||||
|
|
||||||
|
bool secure = true;
|
||||||
bool validateCert = true; // TODO
|
bool validateCert = true; // TODO
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -233,7 +233,8 @@ void GitLabProjectSettingsWidget::onConnectionChecked(const Project &project,
|
|||||||
bool linkable = false;
|
bool linkable = false;
|
||||||
if (!project.error.message.isEmpty()) {
|
if (!project.error.message.isEmpty()) {
|
||||||
m_infoLabel->setType(Utils::InfoLabel::Error);
|
m_infoLabel->setType(Utils::InfoLabel::Error);
|
||||||
m_infoLabel->setText(project.error.message);
|
m_infoLabel->setText(tr("Check settings for misconfiguration.")
|
||||||
|
+ " (" + project.error.message + ')');
|
||||||
} else {
|
} else {
|
||||||
if (project.accessLevel != -1) {
|
if (project.accessLevel != -1) {
|
||||||
m_infoLabel->setType(Utils::InfoLabel::Ok);
|
m_infoLabel->setType(Utils::InfoLabel::Ok);
|
||||||
|
|||||||
@@ -111,8 +111,8 @@ QueryRunner::QueryRunner(const Query &query, const Utils::Id &id, QObject *paren
|
|||||||
args << "-i";
|
args << "-i";
|
||||||
if (!server.token.isEmpty())
|
if (!server.token.isEmpty())
|
||||||
args << "--header" << "PRIVATE-TOKEN: " + server.token;
|
args << "--header" << "PRIVATE-TOKEN: " + server.token;
|
||||||
QString url = "https://" + server.host;
|
QString url = (server.secure ? "https://" : "http://") + server.host;
|
||||||
if (server.port != GitLabServer::defaultPort)
|
if (server.port && (server.port != (server.secure ? GitLabServer::defaultPort : 80)))
|
||||||
url.append(':' + QString::number(server.port));
|
url.append(':' + QString::number(server.port));
|
||||||
url += query.toString();
|
url += query.toString();
|
||||||
args << url;
|
args << url;
|
||||||
|
|||||||
@@ -93,6 +93,8 @@ static std::pair<Error, QJsonObject> preHandleSingle(const QByteArray &json)
|
|||||||
const QJsonDocument doc = QJsonDocument::fromJson(json, &error);
|
const QJsonDocument doc = QJsonDocument::fromJson(json, &error);
|
||||||
|
|
||||||
if (error.error != QJsonParseError::NoError) {
|
if (error.error != QJsonParseError::NoError) {
|
||||||
|
if (!json.isEmpty() && json.at(0) == '<') // we likely got an HTML response
|
||||||
|
result.code = 399;
|
||||||
result.message = error.errorString();
|
result.message = error.errorString();
|
||||||
} else if (!doc.isObject()) {
|
} else if (!doc.isObject()) {
|
||||||
result.message = "Not an Object";
|
result.message = "Not an Object";
|
||||||
|
|||||||
Reference in New Issue
Block a user