Merge branch 'develop' into remove-updater
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
This commit is contained in:
@ -1,10 +1,15 @@
|
||||
// SPDX-FileCopyrightText: 2023 flowln <flowlnlnln@gmail.com>
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
#include "ModrinthAPI.h"
|
||||
|
||||
#include "Application.h"
|
||||
#include "Json.h"
|
||||
#include "net/NetJob.h"
|
||||
#include "net/Upload.h"
|
||||
|
||||
auto ModrinthAPI::currentVersion(QString hash, QString hash_format, QByteArray* response) -> NetJob::Ptr
|
||||
Task::Ptr ModrinthAPI::currentVersion(QString hash, QString hash_format, QByteArray* response)
|
||||
{
|
||||
auto* netJob = new NetJob(QString("Modrinth::GetCurrentVersion"), APPLICATION->network());
|
||||
|
||||
@ -16,7 +21,7 @@ auto ModrinthAPI::currentVersion(QString hash, QString hash_format, QByteArray*
|
||||
return netJob;
|
||||
}
|
||||
|
||||
auto ModrinthAPI::currentVersions(const QStringList& hashes, QString hash_format, QByteArray* response) -> NetJob::Ptr
|
||||
Task::Ptr ModrinthAPI::currentVersions(const QStringList& hashes, QString hash_format, QByteArray* response)
|
||||
{
|
||||
auto* netJob = new NetJob(QString("Modrinth::GetCurrentVersions"), APPLICATION->network());
|
||||
|
||||
@ -35,23 +40,26 @@ auto ModrinthAPI::currentVersions(const QStringList& hashes, QString hash_format
|
||||
return netJob;
|
||||
}
|
||||
|
||||
auto ModrinthAPI::latestVersion(QString hash,
|
||||
QString hash_format,
|
||||
std::list<Version> mcVersions,
|
||||
ModLoaderTypes loaders,
|
||||
QByteArray* response) -> NetJob::Ptr
|
||||
Task::Ptr ModrinthAPI::latestVersion(QString hash,
|
||||
QString hash_format,
|
||||
std::optional<std::list<Version>> mcVersions,
|
||||
std::optional<ModLoaderTypes> loaders,
|
||||
QByteArray* response)
|
||||
{
|
||||
auto* netJob = new NetJob(QString("Modrinth::GetLatestVersion"), APPLICATION->network());
|
||||
|
||||
QJsonObject body_obj;
|
||||
|
||||
Json::writeStringList(body_obj, "loaders", getModLoaderStrings(loaders));
|
||||
if (loaders.has_value())
|
||||
Json::writeStringList(body_obj, "loaders", getModLoaderStrings(loaders.value()));
|
||||
|
||||
QStringList game_versions;
|
||||
for (auto& ver : mcVersions) {
|
||||
game_versions.append(ver.toString());
|
||||
if (mcVersions.has_value()) {
|
||||
QStringList game_versions;
|
||||
for (auto& ver : mcVersions.value()) {
|
||||
game_versions.append(ver.toString());
|
||||
}
|
||||
Json::writeStringList(body_obj, "game_versions", game_versions);
|
||||
}
|
||||
Json::writeStringList(body_obj, "game_versions", game_versions);
|
||||
|
||||
QJsonDocument body(body_obj);
|
||||
auto body_raw = body.toJson();
|
||||
@ -64,11 +72,11 @@ auto ModrinthAPI::latestVersion(QString hash,
|
||||
return netJob;
|
||||
}
|
||||
|
||||
auto ModrinthAPI::latestVersions(const QStringList& hashes,
|
||||
QString hash_format,
|
||||
std::list<Version> mcVersions,
|
||||
ModLoaderTypes loaders,
|
||||
QByteArray* response) -> NetJob::Ptr
|
||||
Task::Ptr ModrinthAPI::latestVersions(const QStringList& hashes,
|
||||
QString hash_format,
|
||||
std::optional<std::list<Version>> mcVersions,
|
||||
std::optional<ModLoaderTypes> loaders,
|
||||
QByteArray* response)
|
||||
{
|
||||
auto* netJob = new NetJob(QString("Modrinth::GetLatestVersions"), APPLICATION->network());
|
||||
|
||||
@ -77,13 +85,16 @@ auto ModrinthAPI::latestVersions(const QStringList& hashes,
|
||||
Json::writeStringList(body_obj, "hashes", hashes);
|
||||
Json::writeString(body_obj, "algorithm", hash_format);
|
||||
|
||||
Json::writeStringList(body_obj, "loaders", getModLoaderStrings(loaders));
|
||||
if (loaders.has_value())
|
||||
Json::writeStringList(body_obj, "loaders", getModLoaderStrings(loaders.value()));
|
||||
|
||||
QStringList game_versions;
|
||||
for (auto& ver : mcVersions) {
|
||||
game_versions.append(ver.toString());
|
||||
if (mcVersions.has_value()) {
|
||||
QStringList game_versions;
|
||||
for (auto& ver : mcVersions.value()) {
|
||||
game_versions.append(ver.toString());
|
||||
}
|
||||
Json::writeStringList(body_obj, "game_versions", game_versions);
|
||||
}
|
||||
Json::writeStringList(body_obj, "game_versions", game_versions);
|
||||
|
||||
QJsonDocument body(body_obj);
|
||||
auto body_raw = body.toJson();
|
||||
@ -95,14 +106,29 @@ auto ModrinthAPI::latestVersions(const QStringList& hashes,
|
||||
return netJob;
|
||||
}
|
||||
|
||||
auto ModrinthAPI::getProjects(QStringList addonIds, QByteArray* response) const -> NetJob*
|
||||
Task::Ptr ModrinthAPI::getProjects(QStringList addonIds, QByteArray* response) const
|
||||
{
|
||||
auto netJob = new NetJob(QString("Modrinth::GetProjects"), APPLICATION->network());
|
||||
auto searchUrl = getMultipleModInfoURL(addonIds);
|
||||
|
||||
netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), response));
|
||||
|
||||
QObject::connect(netJob, &NetJob::finished, [response, netJob] { delete response; netJob->deleteLater(); });
|
||||
QObject::connect(netJob, &NetJob::finished, [response, netJob] {
|
||||
delete response;
|
||||
netJob->deleteLater();
|
||||
});
|
||||
|
||||
return netJob;
|
||||
}
|
||||
|
||||
// https://docs.modrinth.com/api-spec/#tag/projects/operation/searchProjects
|
||||
static QList<ResourceAPI::SortingMethod> s_sorts = { { 1, "relevance", QObject::tr("Sort by Relevance") },
|
||||
{ 2, "downloads", QObject::tr("Sort by Downloads") },
|
||||
{ 3, "follows", QObject::tr("Sort by Follows") },
|
||||
{ 4, "newest", QObject::tr("Sort by Last Updated") },
|
||||
{ 5, "updated", QObject::tr("Sort by Newest") } };
|
||||
|
||||
QList<ResourceAPI::SortingMethod> ModrinthAPI::getSortingMethods() const
|
||||
{
|
||||
return s_sorts;
|
||||
}
|
||||
|
Reference in New Issue
Block a user