webmentions/index.php

44 lines
1.2 KiB
PHP
Raw Normal View History

<?php declare(strict_types=1);
require_once __DIR__ . "/vendor/autoload.php";
use Lewisdale\Webmentions\Endpoint;
use Lewisdale\Webmentions\Exceptions\InvalidTargetException;
use Lewisdale\Webmentions\Exceptions\InvalidUrlException;
use Lewisdale\Webmentions\Router\Request;
use Lewisdale\Webmentions\Router\Router;
use Lewisdale\Webmentions\Router\Response;
use Lewisdale\Webmentions\Router\StatusCode;
use Lewisdale\Webmentions\Webmention;
$mentioner = new Webmention();
$router = new Router();
$router->post("/send", function(Request $req, Response $response) use ($webmention) {
$source = $req->query["source"];
$webmention->sendForPage($source);
});
$router->post("/endpoint", function(Request $req, Response $response) {
$source = $req->post['source'];
$target = $req->post['target'];
$endpoint = new Endpoint();
try {
$endpoint->receiveWebmention($source, $target);
} catch (InvalidUrlException $e) {
$response->status_code = StatusCode::BadRequest;
return "Source and target must be valid URLs";
} catch (InvalidTargetException $e) {
$response->status_code = StatusCode::BadRequest;
return "Target must be on the domain lewisdale.dev";
}
$response->status_code = StatusCode::Created;
});
$router->dispatch();
?>