<?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;

$router = new Router();

$router->post("/send", function(Request $req, Response $response) {
    $mentioner = new Webmention();
    $source = $req->query["source"];
	$mentioner->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->get('/', fn($req, $res) => "<h1>Webmention server</h1>");
$router->dispatch();