aboutsummaryrefslogtreecommitdiff
path: root/src/common/net/net.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/net/net.h')
-rw-r--r--src/common/net/net.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/common/net/net.h b/src/common/net/net.h
new file mode 100644
index 0000000000..b07caabe20
--- /dev/null
+++ b/src/common/net/net.h
@@ -0,0 +1,56 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include <optional>
+#include <string>
+#include <vector>
+#include <nlohmann/json.hpp>
+#include "common/common_types.h"
+
+namespace Common::Net {
+
+typedef struct {
+ std::string name;
+ std::string url;
+ std::string path;
+ std::string filename;
+} Asset;
+
+typedef struct Release {
+ std::string title;
+ std::string body;
+ std::string tag;
+ std::string base_download_url;
+ std::string html_url;
+ std::string host;
+
+ std::vector<std::string> assets;
+
+ u64 id;
+ u64 published;
+ bool prerelease;
+
+ // Get the relevant list of assets for the current platform.
+ std::vector<Asset> GetPlatformAssets() const;
+
+ static std::optional<Release> FromJson(const nlohmann::json& json, const std::string &host, const std::string& repo);
+ static std::optional<Release> FromJson(const std::string_view& json, const std::string &host, const std::string& repo);
+ static std::vector<Release> ListFromJson(const nlohmann::json &json, const std::string &host, const std::string &repo);
+ static std::vector<Release> ListFromJson(const std::string_view &json, const std::string &host, const std::string &repo);
+} Release;
+
+// Make a request via httplib, and return the response body if applicable.
+std::optional<std::string> MakeRequest(const std::string &url, const std::string &path);
+
+// Get all of the latest stable releases.
+std::vector<Release> GetReleases();
+
+// Get all of the latest stable releases as text.
+std::optional<std::string> GetReleasesBody();
+
+// Get the latest release of the current channel.
+std::optional<Release> GetLatestRelease();
+
+}