diff options
| author | winter | 2025-05-07 19:37:08 +0100 |
|---|---|---|
| committer | winter | 2025-05-07 19:37:08 +0100 |
| commit | a904294db09ccaa93a5b561e7cd177026010e601 (patch) | |
| tree | e491028843b02fdbd5f647ea5b49adee2965ad7a /routes/extension.php | |
| parent | 33a7ad8a141c65841267dc94cc5e5c5be109e03c (diff) | |
implement extension objects at a basic level
Diffstat (limited to 'routes/extension.php')
| -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 |
