Skip to content

Commit

Permalink
Merge pull request #6033 from nextcloud/backport/6023/stable-3.10
Browse files Browse the repository at this point in the history
[stable-3.10] fixed detection of server version in cmd client similar to gui client (2nd try, signed off)
  • Loading branch information
claucambra authored Sep 7, 2023
2 parents 1d8e64d + 80be0be commit 432cde5
Showing 1 changed file with 29 additions and 1 deletion.
30 changes: 29 additions & 1 deletion src/cmd/cmd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -442,12 +442,40 @@ int main(int argc, char **argv)
account->setTrustCertificates(options.trustSSL);

QEventLoop loop;
auto *csjob = new CheckServerJob(account);
csjob->setIgnoreCredentialFailure(true);
QObject::connect(csjob, &CheckServerJob::instanceFound, [&](const QUrl &, const QJsonObject &info) {
// see ConnectionValidator::slotCapabilitiesRecieved: only set server version if not empty
QString serverVersion = CheckServerJob::version(info);
if (!serverVersion.isEmpty()) {
account->setServerVersion(serverVersion);
}
loop.quit();
});
QObject::connect(csjob, &CheckServerJob::instanceNotFound, [&]() {
loop.quit();
});
QObject::connect(csjob, &CheckServerJob::timeout, [&](const QUrl &) {
loop.quit();
});
csjob->start();
loop.exec();

if (csjob->reply()->error() != QNetworkReply::NoError){
std::cout<<"Error connecting to server for status\n";
return EXIT_FAILURE;
}

auto *job = new JsonApiJob(account, QLatin1String("ocs/v1.php/cloud/capabilities"));
QObject::connect(job, &JsonApiJob::jsonReceived, [&](const QJsonDocument &json) {
auto caps = json.object().value("ocs").toObject().value("data").toObject().value("capabilities").toObject();
qDebug() << "Server capabilities" << caps;
account->setCapabilities(caps.toVariantMap());
account->setServerVersion(caps["core"].toObject()["status"].toObject()["version"].toString());
// see ConnectionValidator::slotCapabilitiesRecieved: only set server version if not empty
QString serverVersion = caps["core"].toObject()["status"].toObject()["version"].toString();
if (!serverVersion.isEmpty()) {
account->setServerVersion(serverVersion);
}
loop.quit();
});
job->start();
Expand Down

0 comments on commit 432cde5

Please sign in to comment.