Skip to content

Commit

Permalink
add api Controllers with mocked basic CRUD methods
Browse files Browse the repository at this point in the history
  • Loading branch information
awasiak committed Oct 30, 2018
1 parent a3c1ad9 commit 9583740
Show file tree
Hide file tree
Showing 11 changed files with 311 additions and 13 deletions.
11 changes: 11 additions & 0 deletions src/SAREhub/Servitiom/Api/Api.php
Expand Up @@ -41,4 +41,15 @@ private static function getMiddlewareInjector(): MiddlewareInjector
{
return new AppMiddlewaresInjector(self::ENTRY_MIDDLEWARES);
}

public static function uriPattern(...$subPatterns)
{
return implode('/', $subPatterns);
}

public static function uriAttribute(string $name): string
{
return '{' . $name . '}';
}

}
12 changes: 4 additions & 8 deletions src/SAREhub/Servitiom/Api/ApiContainerConfigurator.php
Expand Up @@ -9,7 +9,7 @@

use DI\ContainerBuilder;
use SAREhub\Microt\App\ContainerConfigurator;
use SAREhub\Servitiom\Api\Routes\ServiceRoutesDefinitions;
use SAREhub\Servitiom\Api\Routes\RoutesDefinitions;
use SAREhub\Servitiom\Entity\EntityManagerDefinitions;
use SAREhub\Servitiom\Util\UtilDefinitions;

Expand All @@ -18,14 +18,10 @@ class ApiContainerConfigurator implements ContainerConfigurator
{
public function configure(ContainerBuilder $builder)
{
$builder->addDefinitions(ApiDefinitions::get());
$this->configureRoutes($builder);
}

private function configureRoutes(ContainerBuilder $builder)
{
$builder->addDefinitions(ServiceRoutesDefinitions::get());
$builder->addDefinitions(UtilDefinitions::get());
$builder->addDefinitions(EntityManagerDefinitions::get());
$builder->addDefinitions(ApiDefinitions::get());
$builder->addDefinitions(RoutesDefinitions::get());
}

}
@@ -0,0 +1,41 @@
<?php
/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

namespace SAREhub\Servitiom\Api\Controller\Service;


use SAREhub\Microt\App\Controller\Controller;
use SAREhub\Microt\Util\JsonResponse;
use Slim\Http\Request;
use Slim\Http\Response;

class ServiceInstancesController implements Controller
{
public function createAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}

public function getOneAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}

public function getListAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}

public function deleteAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}
}
@@ -0,0 +1,41 @@
<?php
/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

namespace SAREhub\Servitiom\Api\Controller\Service;


use SAREhub\Microt\App\Controller\Controller;
use SAREhub\Microt\Util\JsonResponse;
use Slim\Http\Request;
use Slim\Http\Response;

class ServiceJobTemplatesController implements Controller
{
public function createAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}

public function getOneAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}

public function getListAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}

public function deleteAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}
}
@@ -0,0 +1,41 @@
<?php
/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

namespace SAREhub\Servitiom\Api\Controller\Service;


use SAREhub\Microt\App\Controller\Controller;
use SAREhub\Microt\Util\JsonResponse;
use Slim\Http\Request;
use Slim\Http\Response;

class ServiceVersionsController implements Controller
{
public function createAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}

public function getOneAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}

public function getListAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}

public function deleteAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}
}
@@ -0,0 +1,41 @@
<?php
/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

namespace SAREhub\Servitiom\Api\Controller\Service;


use SAREhub\Microt\App\Controller\Controller;
use SAREhub\Microt\Util\JsonResponse;
use Slim\Http\Request;
use Slim\Http\Response;

class ServicesController implements Controller
{
public function createAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}

public function getOneAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}

public function getListAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}

public function deleteAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}
}
Expand Up @@ -9,28 +9,33 @@


use SAREhub\Microt\App\Controller\Controller;
use SAREhub\Microt\Util\JsonResponse;
use Slim\Http\Request;
use Slim\Http\Response;

class TenantsController implements Controller
{
public function getOneAction(Request $request, Response $response): Response
public function createAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}

public function getListAction(Request $request, Response $response): Response
public function getOneAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}

public function createAction(Request $request, Response $response): Response
public function getListAction(Request $request, Response $response): Response
{
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}

public function deleteAction(Request $request, Response $response): Response
{
//@TODO implement as async operation
//@TODO implement
return JsonResponse::wrap($response)->success("mock");
}
}
Expand Up @@ -16,7 +16,7 @@
use function DI\factory;
use function DI\get;

class ServiceRoutesDefinitions
class RoutesDefinitions
{
const SERVICE_BASE_URI = Api::VERSION_URI . "/service";

Expand All @@ -28,6 +28,9 @@ public static function get()

Api::ENTRY_MIDDLEWARES => add([
factory(HealthCheckRoutesProvider::class),
factory(TenantsRoutesProvider::class),
factory(ServicesRoutesProvider::class),
factory(ServiceInstancesRoutesProvider::class)
])
];
}
Expand Down
@@ -0,0 +1,43 @@
<?php
/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

namespace SAREhub\Servitiom\Api\Routes;


use SAREhub\Microt\App\Controller\ControllerActionRoutes;
use SAREhub\Microt\App\Controller\ControllerRoutesProvider;
use SAREhub\Servitiom\Api\Api;
use SAREhub\Servitiom\Api\Controller\Service\ServiceInstancesController;

class ServiceInstancesRoutesProvider extends ControllerRoutesProvider
{
const ATTR_SERVICE_INSTANCE_ID = "serviceInstanceId";

protected function getBaseUri(): string
{
return Api::uriPattern(
Api::VERSION_URI,
"services",
Api::uriAttribute(ServicesRoutesProvider::ATTR_SERVICE_ID),
"instances"
);
}

protected function getControllerClass(): string
{
return ServiceInstancesController::class;
}

protected function injectRoutes(ControllerActionRoutes $routes)
{
$routes->post("", "create");
$routes->get("", "getList");
$uriAttrServiceInstanceId = Api::uriAttribute(self::ATTR_SERVICE_INSTANCE_ID);
$routes->get("/" . $uriAttrServiceInstanceId, "getOne");
$routes->delete("/" . $uriAttrServiceInstanceId, "delete");
}
}
38 changes: 38 additions & 0 deletions src/SAREhub/Servitiom/Api/Routes/ServicesRoutesProvider.php
@@ -0,0 +1,38 @@
<?php
/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

namespace SAREhub\Servitiom\Api\Routes;


use SAREhub\Microt\App\Controller\ControllerActionRoutes;
use SAREhub\Microt\App\Controller\ControllerRoutesProvider;
use SAREhub\Servitiom\Api\Api;
use SAREhub\Servitiom\Api\Controller\Service\ServicesController;

class ServicesRoutesProvider extends ControllerRoutesProvider
{
const ATTR_SERVICE_ID = "serviceId";

protected function getBaseUri(): string
{
return Api::uriPattern(Api::VERSION_URI, "services");
}

protected function getControllerClass(): string
{
return ServicesController::class;
}

protected function injectRoutes(ControllerActionRoutes $routes)
{
$routes->post("", "create");
$routes->get("", "getList");
$uriAttrServiceId = Api::uriAttribute(self::ATTR_SERVICE_ID);
$routes->get("/" . $uriAttrServiceId, "getOne");
$routes->delete("/" . $uriAttrServiceId, "delete");
}
}
38 changes: 38 additions & 0 deletions src/SAREhub/Servitiom/Api/Routes/TenantsRoutesProvider.php
@@ -0,0 +1,38 @@
<?php
/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

namespace SAREhub\Servitiom\Api\Routes;


use SAREhub\Microt\App\Controller\ControllerActionRoutes;
use SAREhub\Microt\App\Controller\ControllerRoutesProvider;
use SAREhub\Servitiom\Api\Api;
use SAREhub\Servitiom\Api\Controller\Tenant\TenantsController;

class TenantsRoutesProvider extends ControllerRoutesProvider
{
const ATTR_TENANT_ID = "tenantId";

protected function getBaseUri(): string
{
return Api::uriPattern(Api::VERSION_URI, "tenants");
}

protected function getControllerClass(): string
{
return TenantsController::class;
}

protected function injectRoutes(ControllerActionRoutes $routes)
{
$routes->post("", "create");
$routes->get("", "getList");
$uriAttrTenantId = Api::uriAttribute(self::ATTR_TENANT_ID);
$routes->get("/" . $uriAttrTenantId, "getOne");
$routes->delete("/" . $uriAttrTenantId, "delete");
}
}

0 comments on commit 9583740

Please sign in to comment.