aboutsummaryrefslogtreecommitdiffhomepage
path: root/routes
diff options
context:
space:
mode:
Diffstat (limited to 'routes')
-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