diff --git a/src/core/hle/service/bcat/news/builtin_news.cpp b/src/core/hle/service/bcat/news/builtin_news.cpp index 66cf5bb697..d24431cdbc 100644 --- a/src/core/hle/service/bcat/news/builtin_news.cpp +++ b/src/core/hle/service/bcat/news/builtin_news.cpp @@ -35,8 +35,7 @@ namespace Service::News { namespace { -// TODO(crueter): COMPILE DEFINITION -constexpr const char* GitHubAPI_EdenReleases = "/api/v1/repos/eden-emu/eden/releases"; +constexpr const char* GitHubAPI_EdenReleases = "/repos/eden-emulator/Releases/releases"; // Cached logo data std::vector default_logo_small; @@ -228,58 +227,22 @@ void WriteCachedJson(std::string_view json) { std::optional DownloadReleasesJson() { try { -#ifdef YUZU_BUNDLED_OPENSSL - const auto url = "https://git.eden-emu.dev"; -#else - const auto url = "git.eden-emu.dev"; -#endif + httplib::SSLClient cli{"api.github.com", 443}; + cli.set_connection_timeout(10); + cli.set_read_timeout(10); - // TODO(crueter): This is duplicated between frontend and here. - constexpr auto path = GitHubAPI_EdenReleases; - - constexpr std::size_t timeout_seconds = 15; - - std::unique_ptr client = std::make_unique(url); - client->set_connection_timeout(timeout_seconds); - client->set_read_timeout(timeout_seconds); - client->set_write_timeout(timeout_seconds); - -#ifdef YUZU_BUNDLED_OPENSSL - client->load_ca_cert_store(kCert, sizeof(kCert)); -#endif - - if (client == nullptr) { - LOG_ERROR(Service_BCAT, "Invalid URL {}{}", url, path); - return {}; - } - - httplib::Request request{ - .method = "GET", - .path = path, + httplib::Headers headers{ + {"User-Agent", "Eden"}, + {"Accept", "application/vnd.github+json"}, }; - client->set_follow_location(true); - httplib::Result result = client->send(request); + // TODO(crueter): automate this in some way... +#ifdef YUZU_BUNDLED_OPENSSL + cli.load_ca_cert_store(kCert, sizeof(kCert)); +#endif - if (!result) { - LOG_ERROR(Service_BCAT, "GET to {}{} returned null", url, path); - return {}; - } else if (result->status < 400) { - return result->body; - } - - if (result->status >= 400) { - LOG_ERROR(Service_BCAT, - "GET to {}{} returned error status code: {}", - url, - path, - result->status); - return {}; - } - - if (!result->headers.contains("content-type")) { - LOG_ERROR(Service_BCAT, "GET to {}{} returned no content", url, path); - return {}; + if (auto res = cli.Get(GitHubAPI_EdenReleases, headers); res && res->status < 400) { + return res->body; } } catch (...) { LOG_WARNING(Service_BCAT, " failed to download releases"); @@ -369,7 +332,7 @@ std::string FormatBody(const nlohmann::json& release, std::string_view title) { body.pop_back(); } - body += "\n\n... View more on Forgejo"; + body += "\n\n... View more on GitHub"; } return body; @@ -526,7 +489,7 @@ std::vector BuildMsgpack(std::string_view title, std::string_view body, w.WriteString(""); w.WriteKey("allow_domains"); - w.WriteString("^https?://git.eden-emu.dev(/|$)"); + w.WriteString("^https?://github.com(/|$)"); // More link w.WriteKey("more"); @@ -536,7 +499,7 @@ std::vector BuildMsgpack(std::string_view title, std::string_view body, w.WriteKey("url"); w.WriteString(html_url); w.WriteKey("text"); - w.WriteString("Open Forgejo"); + w.WriteString("Open GitHub"); // Body w.WriteKey("body"); @@ -573,7 +536,7 @@ void EnsureBuiltinNewsLoaded() { if (const auto fresh = DownloadReleasesJson()) { WriteCachedJson(*fresh); ImportReleases(*fresh); - LOG_DEBUG(Service_BCAT, "news: {} entries updated from Forgejo", NewsStorage::Instance().ListAll().size()); + LOG_DEBUG(Service_BCAT, "news: {} entries updated from GitHub", NewsStorage::Instance().ListAll().size()); } }).detach(); }); diff --git a/src/frontend_common/update_checker.cpp b/src/frontend_common/update_checker.cpp index 1f01c25a26..3e5a832ba0 100644 --- a/src/frontend_common/update_checker.cpp +++ b/src/frontend_common/update_checker.cpp @@ -81,7 +81,9 @@ std::optional UpdateChecker::GetResponse(std::string url, std::stri } std::optional UpdateChecker::GetLatestRelease(bool include_prereleases) { -#ifdef YUZU_BUNDLED_OPENSSL + // For some unbeknownst reason, only Android likes when https is specified. + // Consider dropping support for this radioactive platform. +#ifdef __ANDROID__ const auto update_check_url = fmt::format("https://{}", Common::g_build_auto_update_api); #else const auto update_check_url = std::string{Common::g_build_auto_update_api};