From 106aa2149e9e4b67358242b54b12a47893eccee9 Mon Sep 17 00:00:00 2001 From: Kacper Donat Date: Mon, 23 Nov 2020 00:13:50 +0100 Subject: [PATCH] make JSON default format for API --- api/config/packages/dev/web_profiler.yaml | 2 +- api/config/packages/routing.yaml | 1 + api/config/routes/dev/framework.yaml | 3 + api/config/routes/dev/twig.yaml | 3 - api/config/services.yaml | 7 -- api/public/index.php | 2 +- api/src/Asset/ModifiedTimeVersionStrategy.php | 32 --------- .../Controller/Api/v1/ProviderController.php | 11 ++- api/src/Controller/MainController.php | 48 ------------- api/src/Service/VersionExtension.php | 18 ----- api/src/Subscriber/JSONFormatSubscriber.php | 28 ++++++++ api/templates/app.html.twig | 19 ------ api/templates/base.html.twig | 68 ------------------- api/templates/choose.html.twig | 5 -- api/templates/manifest.json.twig | 39 ----------- 15 files changed, 42 insertions(+), 244 deletions(-) create mode 100644 api/config/routes/dev/framework.yaml delete mode 100644 api/config/routes/dev/twig.yaml delete mode 100644 api/src/Asset/ModifiedTimeVersionStrategy.php delete mode 100644 api/src/Controller/MainController.php delete mode 100644 api/src/Service/VersionExtension.php create mode 100644 api/src/Subscriber/JSONFormatSubscriber.php delete mode 100644 api/templates/app.html.twig delete mode 100644 api/templates/base.html.twig delete mode 100644 api/templates/choose.html.twig delete mode 100644 api/templates/manifest.json.twig diff --git a/api/config/packages/dev/web_profiler.yaml b/api/config/packages/dev/web_profiler.yaml index e92166a..7bb98b9 100644 --- a/api/config/packages/dev/web_profiler.yaml +++ b/api/config/packages/dev/web_profiler.yaml @@ -1,5 +1,5 @@ web_profiler: - toolbar: true + toolbar: false intercept_redirects: false framework: diff --git a/api/config/packages/routing.yaml b/api/config/packages/routing.yaml index 368bc7f..80f4810 100644 --- a/api/config/packages/routing.yaml +++ b/api/config/packages/routing.yaml @@ -1,3 +1,4 @@ framework: router: strict_requirements: ~ + diff --git a/api/config/routes/dev/framework.yaml b/api/config/routes/dev/framework.yaml new file mode 100644 index 0000000..bcbbf13 --- /dev/null +++ b/api/config/routes/dev/framework.yaml @@ -0,0 +1,3 @@ +_errors: + resource: '@FrameworkBundle/Resources/config/routing/errors.xml' + prefix: /_error diff --git a/api/config/routes/dev/twig.yaml b/api/config/routes/dev/twig.yaml deleted file mode 100644 index f4ee839..0000000 --- a/api/config/routes/dev/twig.yaml +++ /dev/null @@ -1,3 +0,0 @@ -_errors: - resource: '@TwigBundle/Resources/config/routing/errors.xml' - prefix: /_error diff --git a/api/config/services.yaml b/api/config/services.yaml index 774f1d7..7b8e853 100644 --- a/api/config/services.yaml +++ b/api/config/services.yaml @@ -42,13 +42,6 @@ services: resource: '../src/Handler' tags: [ app.handler ] - # add more service definitions when explicit configuration is needed - # please note that last definitions always *replace* previous ones - - #assets - assets.modified_time_version_strategy: - class: App\Asset\ModifiedTimeVersionStrategy - #eerialziser jms_serializer.serialized_name_annotation_strategy: class: JMS\Serializer\Naming\SerializedNameAnnotationStrategy diff --git a/api/public/index.php b/api/public/index.php index 732f5b8..980d765 100644 --- a/api/public/index.php +++ b/api/public/index.php @@ -1,8 +1,8 @@ getVersion($path)); - } -} \ No newline at end of file diff --git a/api/src/Controller/Api/v1/ProviderController.php b/api/src/Controller/Api/v1/ProviderController.php index 8516fe9..ff192a7 100644 --- a/api/src/Controller/Api/v1/ProviderController.php +++ b/api/src/Controller/Api/v1/ProviderController.php @@ -3,8 +3,10 @@ namespace App\Controller\Api\v1; use App\Controller\Controller; +use App\Exception\NonExistentServiceException; use App\Service\Converter; use App\Service\ProviderResolver; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use function Kadet\Functional\ref; class ProviderController extends Controller @@ -22,8 +24,11 @@ class ProviderController extends Controller public function one(ProviderResolver $resolver, Converter $converter, $id) { - $provider = $resolver->resolve($id); - - return $this->json($converter->convert($provider)); + try { + $provider = $resolver->resolve($id); + return $this->json($converter->convert($provider)); + } catch (NonExistentServiceException $exception) { + throw new NotFoundHttpException($exception->getMessage()); + } } } diff --git a/api/src/Controller/MainController.php b/api/src/Controller/MainController.php deleted file mode 100644 index bfe8d15..0000000 --- a/api/src/Controller/MainController.php +++ /dev/null @@ -1,48 +0,0 @@ -render('choose.html.twig', ['providers' => $resolver->all()]); - } - - /** - * @Route("/{provider}/manifest.json", name="provider_manifest") - * @Route("/manifest.json", name="main_manifest") - */ - public function manifest(?Provider $provider = null) - { - $response = $this->render('manifest.json.twig', ['provider' => $provider]); - $response->headers->set('Content-Type', 'application/json'); - - return $response; - } - - /** - * @Route("/{provider}", name="app") - */ - public function app(Provider $provider, Request $request) - { - $state = json_decode($request->query->get('state', '{}'), true) ?: []; - $state = array_merge( - [ - 'version' => 1, - 'stops' => [], - ], - $state - ); - - return $this->render('app.html.twig', compact('state', 'provider')); - } -} diff --git a/api/src/Service/VersionExtension.php b/api/src/Service/VersionExtension.php deleted file mode 100644 index 45ae2c1..0000000 --- a/api/src/Service/VersionExtension.php +++ /dev/null @@ -1,18 +0,0 @@ - "onRequest", + ]; + } + + public function onRequest(RequestEvent $event) + { + $request = $event->getRequest(); + + if (!$request->attributes->has('_format')) { + $request->attributes->set('_format', 'json'); + } + } +} diff --git a/api/templates/app.html.twig b/api/templates/app.html.twig deleted file mode 100644 index fc3d4d8..0000000 --- a/api/templates/app.html.twig +++ /dev/null @@ -1,19 +0,0 @@ -{% extends 'base.html.twig' %} -{% block title "#{parent()} - #{provider.name}" %} -{% block manifest path('provider_manifest', { provider: provider.identifier }) %} - -{% block body %} -
-
-{% endblock %} - -{% block javascripts %} - -{% endblock %} diff --git a/api/templates/base.html.twig b/api/templates/base.html.twig deleted file mode 100644 index e123df6..0000000 --- a/api/templates/base.html.twig +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - {% block title %}Co Jedzie?{% endblock %} - - {% if gtm_tracking %} - - - - {% endif %} - - - - {% block body '' %} - - - {% block javascripts %}{% endblock %} - - - diff --git a/api/templates/choose.html.twig b/api/templates/choose.html.twig deleted file mode 100644 index 086ade5..0000000 --- a/api/templates/choose.html.twig +++ /dev/null @@ -1,5 +0,0 @@ -{% extends 'base.html.twig' %} - -{% block body %} -
-{% endblock %} diff --git a/api/templates/manifest.json.twig b/api/templates/manifest.json.twig deleted file mode 100644 index b27f4ed..0000000 --- a/api/templates/manifest.json.twig +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "Co Jedzie?{% if provider %} - {{ provider.shortName }}{% endif %}", - "short_name": "Co Jedzie?{% if provider %} - {{ provider.shortName }}{% endif %}", - "orientation": "portrait", - "lang": "pl-PL", - "start_url": "{{ provider ? path('app', { provider: provider.identifier }) : path('choose') }}", - "display": "standalone", - "background_color": "white", - "theme_color": "white", - "description": "Odpowiedź na odwieczne pytanie ludzkości - czy tramwaje jeżdżą?", - "categories": ["navigation", "transport", "travel", "utilities"], - "icons": [{ - "src": "{{ asset('images/icon-256.png') }}", - "sizes": "256x256" - },{ - "src": "{{ asset('images/icon-512.png') }}", - "sizes": "512x512" - },{ - "src": "{{ asset('images/icon-64.png') }}", - "sizes": "64x64" - },{ - "src": "{{ asset('images/icon-128.png') }}", - "sizes": "128x128" - },{ - "src": "{{ asset('images/icon-192.png') }}", - "sizes": "192x192" - },{ - "src": "{{ asset('images/icon-96.png') }}", - "sizes": "96x96" - },{ - "src": "{{ asset('images/icon-maskable.png') }}", - "sizes": "512x512", - "purpose": "any maskable" - },{ - "src": "{{ asset('images/icon-monochrome.png') }}", - "sizes": "512x512", - "purpose": "monochrome" - }] -}