<?php
/** @license MIT
 * Copyright 2017 J. King, Dustin Wilson et al.
 * See LICENSE and AUTHORS files for details */

declare(strict_types=1);
namespace JKingWeb\Arsse\REST\NextCloudNews;

use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Zend\Diactoros\Response\JsonResponse as Response;
use Zend\Diactoros\Response\EmptyResponse;

class Versions implements \JKingWeb\Arsse\REST\Handler {
    public function __construct() {
    }

    public function dispatch(ServerRequestInterface $req): ResponseInterface {
        if (!preg_match("<^/?$>", $req->getRequestTarget())) {
            // if the request path is more than an empty string or a slash, the client is probably trying a version we don't support
            return new EmptyResponse(404);
        }
        switch ($req->getMethod()) {
            case "OPTIONS":
                // if the request method is OPTIONS, respond accordingly
                return new EmptyResponse(204, ['Allow' => "HEAD,GET"]);
            case "GET":
                // otherwise return the supported versions
                $out = [
                    'apiLevels' => [
                        'v1-2',
                    ]
                ];
                return new Response($out);
            default:
                // if any other method was used, this is an error
                return new EmptyResponse(405, ['Allow' => "HEAD,GET"]);
        }
    }
}