Skip to content

Commit c851714

Browse files
committed
🆕 Setup UI layer
1 parent 7860dc6 commit c851714

27 files changed

+2068
-2436
lines changed

.gitignore

+6
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
11
vendor/
2+
var/cache/*
3+
!var/cache/.gitkeep
4+
var/logs/*
5+
!var/logs/.gitkeep
6+
var/eventstore/*
7+
!var/eventstore/.gitkeep

app/AppKernel.php

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
3+
use Symfony\Component\Config\Loader\LoaderInterface;
4+
use Symfony\Component\DependencyInjection\ContainerBuilder;
5+
use Symfony\Component\HttpKernel\Kernel;
6+
use Symfony\Component\Routing\RouteCollectionBuilder;
7+
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
8+
9+
class AppKernel extends Kernel
10+
{
11+
use MicroKernelTrait;
12+
13+
public function registerBundles()
14+
{
15+
$bundles = [
16+
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
17+
new League\Tactician\Bundle\TacticianBundle(),
18+
];
19+
20+
if (in_array($this->getEnvironment(), array('dev', 'test'), true)) {
21+
$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
22+
}
23+
24+
return $bundles;
25+
}
26+
27+
protected function configureRoutes(RouteCollectionBuilder $routes)
28+
{
29+
$routes->import(__DIR__.'/config/routing.yml');
30+
}
31+
32+
protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader)
33+
{
34+
$loader->load(__DIR__.'/services/');
35+
$loader->load(__DIR__.'/config/config.yml');
36+
}
37+
38+
public function getRootDir()
39+
{
40+
return __DIR__;
41+
}
42+
43+
public function getCacheDir()
44+
{
45+
return '../var/cache/'.$this->getEnvironment();
46+
}
47+
48+
public function getLogDir()
49+
{
50+
return '../var/logs';
51+
}
52+
}

app/config/config.yml

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
parameters:
2+
exception_http_code_map: []
3+
show_exception_token: t0kt0k
4+
5+
framework:
6+
secret: S0ME_SECRET
7+
8+
tactician:
9+
method_inflector: command_inflector.parked_life

app/config/routing.yml

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
register_vehicle:
2+
path: /users/{userId}/vehicles
3+
defaults:
4+
_controller: vehicle_controller.ui.parked_life:registerVehicle
5+
methods: [POST]

app/services/adapters.xml

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?xml version="1.0" ?>
2+
3+
<container xmlns="http://symfony.com/schema/dic/services"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
6+
7+
<services>
8+
<service id="event_store_vehicle_fleet_repository.adapters.parked_life" class="Shouze\ParkedLife\Adapters\EventStoreVehicleFleetRepository">
9+
<argument type="service" id="event_store.adapters.parked_life" />
10+
</service>
11+
<service id="event_store.adapters.parked_life" class="Shouze\ParkedLife\Adapters\FilesystemEventStore">
12+
<argument>%kernel.root_dir%/../var/eventstore</argument>
13+
<argument type="service">
14+
<service class="Shouze\ParkedLife\EventSourcing\EventSerializer">
15+
<argument type="service">
16+
<service class="Shouze\ParkedLife\Domain\EventMapping" />
17+
</argument>
18+
<argument type="service" id="serializer.parked_life" />
19+
</service>
20+
</argument>
21+
<argument type="service">
22+
<service class="Shouze\ParkedLife\Ports\FileHelper" />
23+
</argument>
24+
</service>
25+
26+
<service id="serializer.parked_life" class="Symfony\Component\Serializer\Serializer" public="false">
27+
<argument type="collection">
28+
<argument type="service">
29+
<service class="Symfony\Component\Serializer\Normalizer\PropertyNormalizer">
30+
<argument>null</argument>
31+
<argument type="service">
32+
<service class="Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter" />
33+
</argument>
34+
</service>
35+
</argument>
36+
</argument>
37+
<argument type="collection">
38+
<argument type="service">
39+
<service class="Symfony\Component\Serializer\Encoder\JsonEncoder" />
40+
</argument>
41+
</argument>
42+
</service>
43+
</services>
44+
</container>

app/services/app.xml

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" ?>
2+
3+
<container xmlns="http://symfony.com/schema/dic/services"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
6+
7+
<services>
8+
<service id="vehicle_service.app.parked_life" class="Shouze\ParkedLife\App\VehicleService">
9+
<argument type="service" id="event_store_vehicle_fleet_repository.adapters.parked_life" />
10+
<tag name="tactician.handler" command="Shouze\ParkedLife\App\Command\RegisterVehicle" />
11+
</service>
12+
13+
<service id="command_inflector.parked_life" class="Shouze\ParkedLife\Ports\CommandClassAsMethodInflector" public="false" />
14+
</services>
15+
</container>

app/services/ui.xml

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?xml version="1.0" ?>
2+
3+
<container xmlns="http://symfony.com/schema/dic/services"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
6+
7+
<services>
8+
<service id="vehicle_controller.ui.parked_life" class="Shouze\ParkedLife\Ui\Controller\VehicleController">
9+
<argument type="service" id="tactician.commandbus" />
10+
</service>
11+
12+
<service id="json_body_listener.ui" class="Rezzza\SymfonyRestApiJson\JsonBodyListener">
13+
<argument type="service">
14+
<service class="Rezzza\SymfonyRestApiJson\PayloadValidator">
15+
<argument type="service">
16+
<service class="Rezzza\SymfonyRestApiJson\JsonSchemaTools" />
17+
</argument>
18+
</service>
19+
</argument>
20+
<tag name="kernel.event_listener" event="kernel.request" method="onKernelRequest" priority="24" />
21+
</service>
22+
23+
<service id="link_request_listener.ui" class="Rezzza\SymfonyRestApiJson\LinkRequestListener">
24+
<tag name="kernel.event_listener" event="kernel.request" method="onKernelRequest" priority="10" />
25+
</service>
26+
27+
<service id="json_exception_handler.ui" class="Rezzza\SymfonyRestApiJson\JsonExceptionHandler">
28+
<argument type="service">
29+
<service class="Rezzza\SymfonyRestApiJson\ExceptionHttpCodeMap">
30+
<argument>%exception_http_code_map%</argument>
31+
</service>
32+
</argument>
33+
<tag name="kernel.event_listener" event="kernel.exception" method="onKernelException" priority="32" />
34+
</service>
35+
36+
<service id="json_exception_controller.ui" class="Rezzza\SymfonyRestApiJson\JsonExceptionController">
37+
<argument>%kernel.debug%</argument>
38+
<argument>%show_exception_token%</argument>
39+
</service>
40+
41+
<service id="ui.event_listener.exception_listener" class="Symfony\Component\HttpKernel\EventListener\ExceptionListener">
42+
<tag name="kernel.event_subscriber" />
43+
<tag name="monolog.logger" channel="request" />
44+
<argument>json_exception_controller.ui:showException</argument>
45+
<argument type="service" id="logger" on-invalid="null" />
46+
</service>
47+
</services>
48+
</container>

behat.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ default:
1414
extensions:
1515
Rezzza\RestApiBehatExtension\Extension:
1616
rest:
17-
base_url: http://localhost:8888/
17+
base_url: http://localhost:8000/
1818
store_response: true

bin/console

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/usr/bin/env php
2+
<?php
3+
4+
use Symfony\Bundle\FrameworkBundle\Console\Application;
5+
use Symfony\Component\Console\Input\ArgvInput;
6+
use Symfony\Component\Debug\Debug;
7+
8+
// if you don't want to setup permissions the proper way, just uncomment the following PHP line
9+
// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information
10+
//umask(0000);
11+
12+
set_time_limit(0);
13+
14+
/** @var Composer\Autoload\ClassLoader $loader */
15+
$loader = require __DIR__.'/../vendor/autoload.php';
16+
17+
$input = new ArgvInput();
18+
$env = $input->getParameterOption(['--env', '-e'], getenv('SYMFONY_ENV') ?: 'dev');
19+
$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(['--no-debug', '']) && $env !== 'prod';
20+
21+
if ($debug) {
22+
Debug::enable();
23+
}
24+
25+
$kernel = new AppKernel($env, $debug);
26+
$application = new Application($kernel);
27+
$application->run($input);

composer.json

+6-2
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,15 @@
33
"type": "application",
44
"license": "MIT",
55
"autoload": {
6-
"psr-4": { "Shouze\\ParkedLife\\": "src/" }
6+
"psr-4": { "Shouze\\ParkedLife\\": "src/" },
7+
"classmap": [ "app/AppKernel.php" ]
78
},
89
"require": {
910
"symfony/serializer": "^3.1",
10-
"pascaldevink/shortuuid": "^1.0"
11+
"pascaldevink/shortuuid": "^1.0",
12+
"symfony/symfony": "^3.1",
13+
"league/tactician-bundle": "^0.4.1",
14+
"rezzza/symfony-rest-api-json": "^1.0"
1115
},
1216
"require-dev": {
1317
"behat/behat": "^3.2",

0 commit comments

Comments
 (0)