summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Scheller <igor.scheller@igorshp.de>2018-11-20 18:55:56 +0100
committermsquare <msquare@notrademark.de>2019-06-12 10:20:08 +0200
commite948091066e4893b1b823fc80db1c1ebba174b53 (patch)
tree1bc34bf1f476abcafe536336955916ac9d929a68
parent93e578e555b6e40c1e26d85e4f32b87577f54def (diff)
Replaced old /api endpoint with ApiController
-rw-r--r--config/routes.php3
-rw-r--r--src/Controllers/ApiController.php30
-rw-r--r--src/Middleware/LegacyMiddleware.php5
-rw-r--r--tests/Unit/Controllers/ApiControllerTest.php25
4 files changed, 58 insertions, 5 deletions
diff --git a/config/routes.php b/config/routes.php
index 8322cb2f..b9e3646a 100644
--- a/config/routes.php
+++ b/config/routes.php
@@ -10,3 +10,6 @@ $route->get('/credits', 'CreditsController@index');
// Stats
$route->get('/metrics', 'Metrics\\Controller@metrics');
$route->get('/stats', 'Metrics\\Controller@stats');
+
+// API
+$route->get('/api[/{resource:.+}]', 'ApiController@index');
diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php
new file mode 100644
index 00000000..a9c0be98
--- /dev/null
+++ b/src/Controllers/ApiController.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Engelsystem\Controllers;
+
+use Engelsystem\Http\Response;
+
+class ApiController extends BaseController
+{
+ /** @var Response */
+ protected $response;
+
+ /**
+ * @param Response $response
+ */
+ public function __construct(Response $response)
+ {
+ $this->response = $response;
+ }
+
+ /**
+ * @return Response
+ */
+ public function index()
+ {
+ return $this->response
+ ->setStatusCode(501)
+ ->withHeader('content-type', 'application/json')
+ ->withContent(json_encode(['error' => 'Not implemented']));
+ }
+}
diff --git a/src/Middleware/LegacyMiddleware.php b/src/Middleware/LegacyMiddleware.php
index 2467f25c..de16e557 100644
--- a/src/Middleware/LegacyMiddleware.php
+++ b/src/Middleware/LegacyMiddleware.php
@@ -17,7 +17,6 @@ class LegacyMiddleware implements MiddlewareInterface
protected $free_pages = [
'admin_event_config',
'angeltypes',
- 'api',
'atom',
'ical',
'login',
@@ -106,10 +105,6 @@ class LegacyMiddleware implements MiddlewareInterface
$title = ucfirst($page);
switch ($page) {
/** @noinspection PhpMissingBreakStatementInspection */
- case 'api':
- error('Api disabled temporarily.');
- redirect(page_link_to());
- /** @noinspection PhpMissingBreakStatementInspection */
case 'ical':
require_once realpath(__DIR__ . '/../../includes/pages/user_ical.php');
user_ical();
diff --git a/tests/Unit/Controllers/ApiControllerTest.php b/tests/Unit/Controllers/ApiControllerTest.php
new file mode 100644
index 00000000..7e437e12
--- /dev/null
+++ b/tests/Unit/Controllers/ApiControllerTest.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Engelsystem\Test\Unit\Controllers;
+
+use Engelsystem\Controllers\ApiController;
+use Engelsystem\Http\Response;
+use PHPUnit\Framework\TestCase;
+
+class ApiControllerTest extends TestCase
+{
+ /**
+ * @covers \Engelsystem\Controllers\ApiController::__construct
+ * @covers \Engelsystem\Controllers\ApiController::index
+ */
+ public function testIndex()
+ {
+ $controller = new ApiController(new Response());
+
+ $response = $controller->index();
+
+ $this->assertEquals(501, $response->getStatusCode());
+ $this->assertEquals(['application/json'], $response->getHeader('content-type'));
+ $this->assertJson($response->getContent());
+ }
+}