swift
githubpackagesreader.cpp
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2020 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
7 
8 #include <QNetworkAccessManager>
9 #include <QNetworkReply>
10 #include <QNetworkRequest>
11 #include <QStringBuilder>
12 #include <QUrl>
13 
14 #include "config/buildconfig.h"
15 #include "core/application.h"
16 
17 using namespace swift::misc::db;
18 using namespace swift::config;
19 
20 namespace swift::core
21 {
22  CGitHubPackagesReader::CGitHubPackagesReader(QObject *parent) : QObject(parent) {}
23 
25  {
26  // https://docs.github.com/en/rest/reference/repos#releases
27 
28  const QNetworkRequest request(QUrl(CBuildConfig::gitHubRepoApiUrl() % u"releases"));
29  auto reply = sApp->getNetworkAccessManager()->get(request);
30  connect(reply, &QNetworkReply::finished, this, [this, reply] {
31  if (reply->error() == QNetworkReply::NoError)
32  {
33  const auto updateInfo = CUpdateInfo::fromGitHubReleasesJson(reply->readAll());
34  if (!updateInfo.isEmpty()) { m_updateInfo.set(updateInfo); }
35  }
36  reply->deleteLater();
37  });
38  }
39 
40  CUpdateInfo CGitHubPackagesReader::getUpdateInfo() const { return m_updateInfo.get(); }
41 } // namespace swift::core
SWIFT_CORE_EXPORT swift::core::CApplication * sApp
Single instance of application object.
Definition: application.cpp:71
const QNetworkAccessManager * getNetworkAccessManager() const
Access to access manager.
Definition: application.h:427
void readUpdateInfo()
Read updates from GitHub Packages.
Update info, i.e. artifacts and distributions.
Definition: updateinfo.h:24
Backend services of the swift project, like dealing with the network or the simulators.
Definition: actionbind.cpp:7