manifest.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. declare(strict_types=1);
  3. // GET api/v1/manifest.php
  4. // Returns the release the calling instance should install.
  5. //
  6. // This endpoint requires a valid instance token; release metadata is not
  7. // public.
  8. require_once __DIR__ . "/../../includes/api.php";
  9. require_once __DIR__ . "/../../includes/releases.php";
  10. manageApiRequireMethod("GET");
  11. $instance = manageApiAuthenticate();
  12. manageInstanceTouch($instance["id"], []);
  13. $latest = manageReleaseLatestVersion();
  14. if ($latest === "") {
  15. manageApiFail(404, "Es ist kein gültiges Release veröffentlicht.");
  16. }
  17. try {
  18. $release = manageReleaseResolve($latest);
  19. } catch (Throwable $exception) {
  20. manageLogError("Manifest resolve failed", [
  21. "instance" => $instance["id"],
  22. "version" => $latest,
  23. "error" => $exception->getMessage(),
  24. ]);
  25. manageApiFail(500, $exception->getMessage());
  26. }
  27. manageApiSendJson(200, [
  28. "success" => true,
  29. "latest" => $release["version"],
  30. "version" => $release["version"],
  31. "package_url" => $release["package_url"],
  32. "sha256" => $release["sha256"],
  33. "size" => $release["size"],
  34. "published_at" => $release["published_at"],
  35. ]);