commit 8f4424ab811efc554f81600e541c34d36ee7fb9b Author: Rinsvent Date: Sat Apr 2 11:58:01 2022 +0700 Добавил бандл для трансформеров. Должен заменить 2 бандла моста (отдельный для request и отдельный для response) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7d60e7d --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.idea +/var/ +/vendor/ +###> phpunit/phpunit ### +/phpunit.xml +.phpunit.result.cache +###< phpunit/phpunit ### diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..b7c9b16 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,18 @@ +image: dh.rinsvent.ru/ci + +variables: + DOCKER_DRIVER: overlay2 + DOCKER_TLS_CERTDIR: "" + +services: + - docker:dind + +before_script: + - bash bin/docker/prepare-ci.sh + +build: + stage: build + script: + - docker login --username ${REGISTRY_USERNAME} --password ${REGISTRY_PASSWORD} dh.rinsvent.ru + - bash bin/docker/ci.sh + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c6fc539 --- /dev/null +++ b/Makefile @@ -0,0 +1,33 @@ +auth: + docker exec -it -u1000:1000 transformerbundle_php bash + +auth-root: + docker exec -it transformerbundle_php bash + +test: + bin/codecept run $p + +coverage: + bin/codecept run --coverage --coverage-html=/app/var/temp.html + +# make out container +coverage-open: + google-chrome var/temp.html/index.html + +#docker +start: + docker-compose up -d +stop: + docker-compose down +pull: + docker-compose pull +restart: stop start +restart-php: + docker-compose restart backend-php-fpm +down-clear: + docker-compose down -v --remove-orphans +init: down-clear pull start + +#prepare +prepare-environment: + bash bin/docker/prepare.sh diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..306e791 --- /dev/null +++ b/Readme.md @@ -0,0 +1,3 @@ +Transformer bundle +=== + diff --git a/bin/docker/ci.sh b/bin/docker/ci.sh new file mode 100755 index 0000000..3c3bdc1 --- /dev/null +++ b/bin/docker/ci.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +docker-compose -f ./docker-compose-ci.yml up -d + +echo 'composer installing' +docker exec -i transformerbundle_php composer install -q +echo 'composer installed !!' + +docker exec -i transformerbundle_php vendor/bin/codecept run --coverage diff --git a/bin/docker/prepare-ci.sh b/bin/docker/prepare-ci.sh new file mode 100755 index 0000000..bd5dcf5 --- /dev/null +++ b/bin/docker/prepare-ci.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +FULL_PROJECT_NETWORK=$(docker network ls | grep full-project) +if [ -z "$FULL_PROJECT_NETWORK" ] +then + docker network create full-project --subnet=192.168.221.0/25 +fi + diff --git a/codeception.yml b/codeception.yml new file mode 100644 index 0000000..6fa6811 --- /dev/null +++ b/codeception.yml @@ -0,0 +1,16 @@ +namespace: Rinsvent\TransformerBundle\Tests +paths: + tests: tests + output: tests/_output + data: tests/_data + support: tests/_support + envs: tests/_envs +actor_suffix: Tester +extensions: + enabled: + - Codeception\Extension\RunFailed + +coverage: + enabled: true + include: + - src/* \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..be29576 --- /dev/null +++ b/composer.json @@ -0,0 +1,34 @@ +{ + "name": "rinsvent/transformer-bundle", + "description": "Data to dto bundle", + "license": "MIT", + "require": { + "php": "^8.0", + "ext-ctype": "*", + "ext-iconv": "*", + "ext-json": "*", + "rinsvent/transformer": "^0.0", + "symfony/http-kernel": "^5.3", + "symfony/config": "^5.3", + "symfony/dependency-injection": "^5.3" + }, + "require-dev": { + "codeception/codeception": "^4.1", + "codeception/module-phpbrowser": "^1.0.0", + "codeception/module-asserts": "^1.0.0", + "symfony/http-kernel": "^5.3", + "symfony/http-foundation": "^5.3", + "symfony/routing": "^5.3" + }, + "autoload": { + "psr-4": { + "tests\\": "tests/", + "Rinsvent\\TransformerBundle\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Rinsvent\\TransformerBundle\\Tests\\": "tests/" + } + } +} diff --git a/docker-compose-ci.yml b/docker-compose-ci.yml new file mode 100644 index 0000000..000f04e --- /dev/null +++ b/docker-compose-ci.yml @@ -0,0 +1,15 @@ +version: '3.3' + +services: + transformerbundle_php: + image: dh.rinsvent.ru/php8dev + container_name: transformerbundle_php + volumes: + - ./:/app + environment: + USE_COMPOSER_SCRIPTS: 0 + +networks: + default: + external: + name: full-project diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..cfa52cb --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,16 @@ +version: '3.3' + +services: + transformerbundle_php: + image: dh.rinsvent.ru/php8dev + container_name: transformerbundle_php + volumes: + - ./:/app + environment: + USE_COMPOSER_SCRIPTS: 0 + PHP_IDE_CONFIG: "serverName=transformerbundle_php" + +networks: + default: + external: + name: full-project diff --git a/src/DependencyInjection/TransformerExtension.php b/src/DependencyInjection/TransformerExtension.php new file mode 100644 index 0000000..4035e60 --- /dev/null +++ b/src/DependencyInjection/TransformerExtension.php @@ -0,0 +1,17 @@ +load('services.yaml'); + } +} \ No newline at end of file diff --git a/src/EventListener/RequestListener.php b/src/EventListener/RequestListener.php new file mode 100644 index 0000000..2c7ed40 --- /dev/null +++ b/src/EventListener/RequestListener.php @@ -0,0 +1,20 @@ +add(ServiceResolver::TYPE, $this->serviceResolver); + } +} diff --git a/src/Resources/config/services.yaml b/src/Resources/config/services.yaml new file mode 100644 index 0000000..fbcf6db --- /dev/null +++ b/src/Resources/config/services.yaml @@ -0,0 +1,18 @@ +services: + _defaults: + autoconfigure: true + public: false + autowire: true + + Rinsvent\TransformerBundle\EventListener\RequestListener: + autowire: true + tags: + - { name: kernel.event_listener, event: kernel.request, priority: 10000 } + + Rinsvent\TransformerBundle\Service\ServiceResolver: + bind: + $transformerLocator: !tagged_locator { tag: 'rinsvent.transformer.transformer', index_by: 'key', default_index_method: 'getLocatorKey' } + + _instanceof: + Rinsvent\TransformerBundle\Service\AbstractTransformer: + tags: [ 'rinsvent.transformer.transformer' ] diff --git a/src/Service/AbstractTransformer.php b/src/Service/AbstractTransformer.php new file mode 100644 index 0000000..ca4e4c0 --- /dev/null +++ b/src/Service/AbstractTransformer.php @@ -0,0 +1,13 @@ +transformerLocator->get($transformerClass); + } +} diff --git a/src/TransformerBundle.php b/src/TransformerBundle.php new file mode 100644 index 0000000..9a7599e --- /dev/null +++ b/src/TransformerBundle.php @@ -0,0 +1,10 @@ +add('hello', new Route('/hello/{name}', [ + '_controller' => [$controller, 'hello'] + ] + )); + + $matcher = new UrlMatcher($routes, new RequestContext()); + $dispatcher = new EventDispatcher(); + $dispatcher->addSubscriber(new RouterListener($matcher, new RequestStack())); + $listener = new RequestListener(); + $dispatcher->addListener('kernel.request', [$listener, 'onKernelRequest']); + + $controllerResolver = new ControllerResolver(); + $argumentResolver = new ArgumentResolver(); + $kernel = new HttpKernel($dispatcher, $controllerResolver, new RequestStack(), $argumentResolver); + $response = $kernel->handle($request); + $response->send(); + return $response; + } +} diff --git a/tests/_support/UnitTester.php b/tests/_support/UnitTester.php new file mode 100644 index 0000000..b4df9ff --- /dev/null +++ b/tests/_support/UnitTester.php @@ -0,0 +1,27 @@ +