diff options
author | TheKodeToad <TheKodeToad@proton.me> | 2023-06-24 14:04:27 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-24 14:04:27 +0100 |
commit | bcf45c74a1b0b3389c05927637bf8aa95b8e43cf (patch) | |
tree | ba0519e490c627d5d491cc4ff980921a84d29c41 /launcher/modplatform/helpers | |
parent | df6d46de9e648284a788a327b87698d58a4fc145 (diff) | |
parent | 8b576fd2bd442a61092de870b4323c280b04d2d6 (diff) | |
download | PrismLauncher-bcf45c74a1b0b3389c05927637bf8aa95b8e43cf.tar.gz PrismLauncher-bcf45c74a1b0b3389c05927637bf8aa95b8e43cf.tar.bz2 PrismLauncher-bcf45c74a1b0b3389c05927637bf8aa95b8e43cf.zip |
Merge pull request #986 from Trial97/develop
Mod dependencies
Diffstat (limited to 'launcher/modplatform/helpers')
-rw-r--r-- | launcher/modplatform/helpers/NetworkResourceAPI.cpp | 29 | ||||
-rw-r--r-- | launcher/modplatform/helpers/NetworkResourceAPI.h | 2 |
2 files changed, 31 insertions, 0 deletions
diff --git a/launcher/modplatform/helpers/NetworkResourceAPI.cpp b/launcher/modplatform/helpers/NetworkResourceAPI.cpp index 0ed2410e..c278f800 100644 --- a/launcher/modplatform/helpers/NetworkResourceAPI.cpp +++ b/launcher/modplatform/helpers/NetworkResourceAPI.cpp @@ -117,3 +117,32 @@ Task::Ptr NetworkResourceAPI::getProject(QString addonId, std::shared_ptr<QByteA return netJob; } + +Task::Ptr NetworkResourceAPI::getDependencyVersion(DependencySearchArgs&& args, DependencySearchCallbacks&& callbacks) const +{ + auto versions_url_optional = getDependencyURL(args); + if (!versions_url_optional.has_value()) + return nullptr; + + auto versions_url = versions_url_optional.value(); + + auto netJob = makeShared<NetJob>(QString("%1::Dependency").arg(args.dependency.addonId.toString()), APPLICATION->network()); + auto response = std::make_shared<QByteArray>(); + + netJob->addNetAction(Net::Download::makeByteArray(versions_url, response)); + + QObject::connect(netJob.get(), &NetJob::succeeded, [=] { + QJsonParseError parse_error{}; + QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response for getting versions at " << parse_error.offset + << " reason: " << parse_error.errorString(); + qWarning() << *response; + return; + } + + callbacks.on_succeed(doc, args.dependency); + }); + + return netJob; +}; diff --git a/launcher/modplatform/helpers/NetworkResourceAPI.h b/launcher/modplatform/helpers/NetworkResourceAPI.h index 84604e41..b72e8253 100644 --- a/launcher/modplatform/helpers/NetworkResourceAPI.h +++ b/launcher/modplatform/helpers/NetworkResourceAPI.h @@ -15,9 +15,11 @@ class NetworkResourceAPI : public ResourceAPI { Task::Ptr getProjectInfo(ProjectInfoArgs&&, ProjectInfoCallbacks&&) const override; Task::Ptr getProjectVersions(VersionSearchArgs&&, VersionSearchCallbacks&&) const override; + Task::Ptr getDependencyVersion(DependencySearchArgs&&, DependencySearchCallbacks&&) const override; protected: [[nodiscard]] virtual auto getSearchURL(SearchArgs const& args) const -> std::optional<QString> = 0; [[nodiscard]] virtual auto getInfoURL(QString const& id) const -> std::optional<QString> = 0; [[nodiscard]] virtual auto getVersionsURL(VersionSearchArgs const& args) const -> std::optional<QString> = 0; + [[nodiscard]] virtual auto getDependencyURL(DependencySearchArgs const& args) const -> std::optional<QString> = 0; }; |