summaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
Diffstat (limited to 'api')
-rw-r--r--api/_main.php30
-rw-r--r--api/pluralkit-integration.php64
-rw-r--r--api/timeline.php12
-rw-r--r--api/violette.php23
4 files changed, 129 insertions, 0 deletions
diff --git a/api/_main.php b/api/_main.php
new file mode 100644
index 0000000..215c1b2
--- /dev/null
+++ b/api/_main.php
@@ -0,0 +1,30 @@
+<?php
+
+if (str_ends_with($_GET['_'], "/")) {
+ $pagename = substr($_GET['_'], 0, strlen($_GET['_']) - 1);
+} else {
+ $pagename = $_GET['_'];
+}
+
+$toplevel = explode("/", $pagename)[1];
+$middlelevel = explode("/", $pagename)[2] ?? null;
+
+if ($toplevel === "_main" || $middlelevel === "_main") {
+ header("HTTP/1.1 404 Not Found");
+ header("Content-Type: text/plain");
+ echo("Endpoint not found");
+ die();
+}
+
+if (isset($middlelevel) && file_exists($_SERVER['DOCUMENT_ROOT'] . "/api/" . $toplevel . "/" . $middlelevel . ".php") && is_file($_SERVER['DOCUMENT_ROOT'] . "/api/" . $toplevel . "/" . $middlelevel . ".php")) {
+ require_once $_SERVER['DOCUMENT_ROOT'] . "/api/" . $toplevel . "/" . $middlelevel . ".php";
+} else {
+ if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/api/" . $toplevel . ".php") && is_file($_SERVER['DOCUMENT_ROOT'] . "/api/" . $toplevel . ".php")) {
+ require_once $_SERVER['DOCUMENT_ROOT'] . "/api/" . $toplevel . ".php";
+ } else {
+ header("HTTP/1.1 404 Not Found");
+ header("Content-Type: text/plain");
+ echo("Endpoint not found");
+ die();
+ }
+}
diff --git a/api/pluralkit-integration.php b/api/pluralkit-integration.php
new file mode 100644
index 0000000..9b0033d
--- /dev/null
+++ b/api/pluralkit-integration.php
@@ -0,0 +1,64 @@
+<?php
+
+$app = $GLOBALS["ColdHazeApp"];
+$user = $_GET['user'] ?? null;
+$inputJSON = file_get_contents('php://input');
+$input = json_decode($inputJSON, true);
+$data = $GLOBALS["ColdHazeApp"]["webhook"];
+
+if ($user === null) {
+ header("HTTP/1.1 500 Internal Server Error") and die();
+}
+
+if (!in_array($user, array_keys($data))) {
+ header("HTTP/1.1 404 Not Found") and die();
+}
+
+if ($input["signing_token"] !== $data[$user]) {
+ header("HTTP/1.1 401 Unauthorized") and die();
+}
+
+if ($input['system_id'] === "7d9f543e-f742-40f6-9d07-86c3f2983124") {
+ $system = "gdapd";
+ $name = "Raindrops System";
+} elseif ($input['system_id'] === "d1cd97eb-9c92-4e42-94cd-4397a5074ff9") {
+ $system = "hrbom";
+ $name = "Moonglow";
+} elseif (isset($app["other"]) && $input["system_id"] === $app["other"]["uuid"]) {
+ $system = $app["other"]["id"];
+ $name = $app["other"]["name"];
+} else {
+ die();
+}
+
+$lastFronter = json_decode(@file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system/last.json"), true) ?? "";
+
+if ($input["type"] === "CREATE_MEMBER" || $input["type"] === "UPDATE_MEMBER" || $input["type"] === "DELETE_MEMBER") {
+ createJob("PKMembers", [
+ "system" => $system
+ ]);
+ createJob("UpdateAssets", [
+ "type" => "members"
+ ]);
+}
+
+if ($input["type"] === "UPDATE_SYSTEM") {
+ createJob("PKSystem", [
+ "system" => $system
+ ]);
+ createJob("UpdateAssets", [
+ "type" => "system"
+ ]);
+}
+
+if ($input["type"] === "CREATE_SWITCH" || $input["type"] === "UPDATE_SWITCH" || $input["type"] === "DELETE_SWITCH") {
+ createJob("PKFronters", [
+ "system" => $system
+ ]);
+ createJob("PKSwitches", [
+ "system" => $system
+ ]);
+ createJob("FrontersNotification", [
+ "system" => $system
+ ]);
+}
diff --git a/api/timeline.php b/api/timeline.php
new file mode 100644
index 0000000..8271b7a
--- /dev/null
+++ b/api/timeline.php
@@ -0,0 +1,12 @@
+<?php
+
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/util/functions.inc"; global $app;
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/util/session.inc"; global $isLoggedIn; global $isLowerLoggedIn; global $_PROFILE;
+
+$systems = array_filter(array_keys($_GET), function ($i) {
+ global $isLowerLoggedIn; global $isLoggedIn; global $app;
+ return $i === "gdapd" || $i === "hrbom" || (($isLowerLoggedIn || $isLoggedIn) && $i === $app["other"]["id"]);
+});
+
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/components/timeline.inc";
+displayTimeline($systems); \ No newline at end of file
diff --git a/api/violette.php b/api/violette.php
new file mode 100644
index 0000000..1f6f4f0
--- /dev/null
+++ b/api/violette.php
@@ -0,0 +1,23 @@
+<?php
+
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/util/functions.inc";
+
+$data = [
+ "count" => 0,
+ "ponies" => []
+];
+
+$list = scoreOrder(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/gdapd/members.json"), true), "gdapd");
+
+$data["count"] = count($list);
+$data["ponies"] = array_values(array_filter(array_map(function ($i) {
+ return [
+ "url" => "https://ponycule.p.equestria.dev" . getAsset("gdapd", $i["id"] ?? "", "heads"),
+ "label" => $i["display_name"] ?? $i["name"]
+ ];
+}, $list), function ($i) {
+ return isset($i["url"]) && getAsset("gdapd", $i["id"] ?? "", "heads") !== null;
+}));
+
+header("Content-Type: application/json");
+die(json_encode($data, JSON_PRETTY_PRINT)); \ No newline at end of file