aboutsummaryrefslogtreecommitdiffhomepage
path: root/routes/extension.php
diff options
context:
space:
mode:
authorwinter2025-05-07 19:37:08 +0100
committerwinter2025-05-07 19:37:08 +0100
commita904294db09ccaa93a5b561e7cd177026010e601 (patch)
treee491028843b02fdbd5f647ea5b49adee2965ad7a /routes/extension.php
parent33a7ad8a141c65841267dc94cc5e5c5be109e03c (diff)
implement extension objects at a basic level
Diffstat (limited to 'routes/extension.php')
-rw-r--r--routes/extension.php21
1 files changed, 21 insertions, 0 deletions
diff --git a/routes/extension.php b/routes/extension.php
new file mode 100644
index 0000000..50413e8
--- /dev/null
+++ b/routes/extension.php
@@ -0,0 +1,21 @@
+<?php
+
+use Digitigrade\GlobalConfig;
+use Digitigrade\HttpResponseStatus\NotFound;
+use Digitigrade\Model\ExtensionObject;
+use Digitigrade\Model\Instance;
+use Digitigrade\PolicyManager;
+use Digitigrade\Router;
+
+Router::getInstance()->mount('/extension/:id', function (array $args) {
+ $obj = ExtensionObject::find($args['id']);
+ $instance = Instance::findByRequestHeaders();
+ if ($obj == null || $obj->deleted) {
+ throw new NotFound("i don't know that extension object");
+ }
+ if (hostname_from_uri($obj->uri) != GlobalConfig::getInstance()->getCanonicalHost()) {
+ throw new NotFound("i don't want to tell you about non local objects sorry");
+ }
+ PolicyManager::getInstance()->checkFederationOrThrow($obj, $instance);
+ json_response($obj);
+}); \ No newline at end of file