aboutsummaryrefslogtreecommitdiffhomepage
path: root/routes/interaction.php
blob: 5768fe147492232da858fd9ad1c7a9016e476375 (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\HttpResponseStatus\NotFound;
use Digitigrade\HttpResponseStatus\PolicyRejected;
use Digitigrade\Model\Instance;
use Digitigrade\Model\Interaction;
use Digitigrade\PolicyManager;
use Digitigrade\Router;

Router::getInstance()->mount('/interaction/:id', function (array $args) {
    $interaction = Interaction::find($args['id']);
    $instance = Instance::findByRequestHeaders();
    if ($interaction == null || $interaction->deleted) {
        throw new NotFound("i don't know that interaction");
    }
    if (!$interaction->author->isLocal) {
        throw new NotFound("i don't want to tell you about non-local interactions!");
    }
    PolicyManager::getInstance()->checkFederationOrThrow($interaction, $instance);
    json_response($interaction);
});