]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
ApiDoc & Route annotation were conflicted
authorJeremy Benoist <jeremy.benoist@gmail.com>
Sat, 15 Oct 2016 14:46:42 +0000 (16:46 +0200)
committerJeremy Benoist <jeremy.benoist@gmail.com>
Sat, 15 Oct 2016 14:46:42 +0000 (16:46 +0200)
The generated error was “Unable to guess how to get a Doctrine instance from the request information.”.

I haven’t checked deeper in Doctrine (I know it was coming from the DoctrineParamConverter).

Anyway, I check for FosRest possiblity to add extra format without allowing them for every route (like it was done in the first place).

I finally found a way but it then seems all request goes to the FormatListener of FosRest so I needed to add a custom rules to match all request to be sure we don’t get  a 406 error from FosRest.

Should be ok now …

app/config/config.yml
app/config/routing_rest.yml
composer.json
src/Wallabag/ApiBundle/Controller/WallabagRestController.php

index 2f102c45c6af9dadb068b470f9f5e31cb76c0919..b4760073b128111c9d9f815fb3fae0d516fc3aa2 100644 (file)
@@ -112,12 +112,26 @@ swiftmailer:
 fos_rest:
     param_fetcher_listener: true
     body_listener: true
-    format_listener: true
     view:
+        mime_types:
+            csv:
+                - 'text/csv'
+                - 'text/plain'
+            pdf:
+                - 'application/pdf'
+            epub:
+                - 'application/epub+zip'
+            mobi:
+                - 'application/x-mobipocket-ebook'
         view_response_listener: 'force'
         formats:
             xml: true
-            json : true
+            json: true
+            txt: true
+            csv: true
+            pdf: true
+            epub: true
+            mobi: true
         templating_formats:
             html: true
         force_redirects:
@@ -126,6 +140,15 @@ fos_rest:
         default_engine: twig
     routing_loader:
         default_format: json
+    format_listener:
+        enabled: true
+        rules:
+            - { path: "^/api/entries/([0-9]+)/export.(.*)", priorities: ['epub', 'mobi', 'pdf', 'txt', 'csv'], fallback_format: false, prefer_extension: false }
+            - { path: "^/api", priorities: ['json', 'xml'], fallback_format: false, prefer_extension: false }
+            - { path: "^/annotations", priorities: ['json', 'xml'], fallback_format: false, prefer_extension: false }
+            # for an unknown reason, EACH REQUEST goes to FOS\RestBundle\EventListener\FormatListener
+            # so we need to add custom rule for custom api export but also for all other routes of the application...
+            - { path: '^/', priorities: ['text/html', '*/*'], fallback_format: html, prefer_extension: false }
 
 nelmio_api_doc:
     sandbox:
index 52d395dd9029066c18bf1e9483057a15d2601f47..29f4ab14c3ca09f35f201b611acfd6cc42b9d9f6 100644 (file)
@@ -1,4 +1,3 @@
 Rest_Wallabag:
-  type : rest
-  resource: "@WallabagApiBundle/Resources/config/routing_rest.yml"
-
+    type : rest
+    resource: "@WallabagApiBundle/Resources/config/routing_rest.yml"
index 79de337bada8f38cbd5a9e69c393f5be993a0bfc..4f7ad2915747c735b9614b02f069c4ab2c971ae3 100644 (file)
@@ -54,8 +54,8 @@
         "sensio/framework-extra-bundle": "^3.0.2",
         "incenteev/composer-parameter-handler": "^2.0",
         "nelmio/cors-bundle": "~1.4.0",
-        "friendsofsymfony/rest-bundle": "~1.4",
-        "jms/serializer-bundle": "~1.0",
+        "friendsofsymfony/rest-bundle": "~2.1",
+        "jms/serializer-bundle": "~1.1",
         "nelmio/api-doc-bundle": "~2.7",
         "mgargano/simplehtmldom": "~1.5",
         "tecnickcom/tcpdf": "~6.2",
index fa573988b9c90b60628514850e4e5e9d633d7d2f..96f7580744a4dcefc53c6c01da010b4457e9d27f 100644 (file)
@@ -167,8 +167,6 @@ class WallabagRestController extends FOSRestController
      *      }
      * )
      *
-     * @Route(requirements={"_format"="epub|mobi|pdf|txt|csv"})
-     *
      * @return Response
      */
     public function getEntryExportAction(Entry $entry, Request $request)