diff --git a/lib/REST/NextCloudNews/V1_2.php b/lib/REST/NextCloudNews/V1_2.php index f4f06f9..bc5feec 100644 --- a/lib/REST/NextCloudNews/V1_2.php +++ b/lib/REST/NextCloudNews/V1_2.php @@ -131,4 +131,29 @@ class V1_2 extends \JKingWeb\Arsse\REST\AbstractHandler { } return new Response(204); } + + protected function versionGET(array $url, array $data): Response { + // if URL is more than '/version' this is an error + if(sizeof($url)) return new Response(404); + return new Response(200, ['version' => \JKingWeb\Arsse\VERSION]); + } + + protected function versionPOST(array $url, array $data): Response { + // if URL is more than '/version' this is an error + if(sizeof($url)) return new Response(404); + return new Response(405, "", "", ['Allow: GET']); + } + + protected function versionPUT(array $url, array $data): Response { + // if URL is more than '/version' this is an error + if(sizeof($url)) return new Response(404); + return new Response(405, "", "", ['Allow: GET']); + } + + protected function versionDELETE(array $url, array $data): Response { + // if URL is more than '/version' this is an error + if(sizeof($url)) return new Response(404); + return new Response(405, "", "", ['Allow: GET']); + } + } \ No newline at end of file diff --git a/tests/REST/NextCloudNews/TestNCNV1_2.php b/tests/REST/NextCloudNews/TestNCNV1_2.php index e88224e..1df79ad 100644 --- a/tests/REST/NextCloudNews/TestNCNV1_2.php +++ b/tests/REST/NextCloudNews/TestNCNV1_2.php @@ -38,8 +38,17 @@ class TestNCNV1_2 extends \PHPUnit\Framework\TestCase { ['PUT', "/folders/1/invalid"], ['POST', "/folders/1/invalid"], ['DELETE', "/folders/1/invalid"], + ['GET', "/version/invalid"], + ['PUT', "/version/invalid"], + ['POST', "/version/invalid"], + ['DELETE', "/version/invalid"], ], 405 => [ + 'GET' => [ + ['PUT', "/version"], + ['POST', "/version"], + ['DELETE', "/version"], + ], 'GET, POST' => [ ['PUT', "/folders"], ['DELETE', "/folders"], @@ -153,4 +162,9 @@ class TestNCNV1_2 extends \PHPUnit\Framework\TestCase { $exp = new Response(404); $this->assertEquals($exp, $this->h->dispatch(new Request("PUT", "/folders/3", json_encode($in[0]), 'application/json'))); } + + function testRetrieveServerVersion() { + $exp = new Response(200, ['version' => \JKingWeb\Arsse\VERSION]); + $this->assertEquals($exp, $this->h->dispatch(new Request("GET", "/version"))); + } } \ No newline at end of file