diff options
Diffstat (limited to 'routes')
| -rw-r--r-- | routes/extension.php | 21 |
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 |
