aboutsummaryrefslogtreecommitdiffhomepage
path: root/routes/extension.php
blob: 50413e87d4beb4edc794337ed656b9b65fe674fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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);
});