What is the problem?
Exporting some ebooks fails, showing the user the error: No page information found in response.
Reproducing this locally, here is the stack trace:
Symfony\Component\HttpKernel\Exception\HttpException: No page information found in response at src/Util/Api.php:219 at App\Util\Api->parseGetPageResponse(array('batchcomplete' => '', 'warnings' => array('main' => array('*' => 'Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes. Use [[Special:ApiFeatureUsage]] to see usage of deprecated features by your application.'), 'revisions' => array('*' => 'The parameter "rvparse" has been deprecated.')), 'query' => array('normalized' => array(array('from' => 'q:Фёдор_Михайлович_Достоевский', 'to' => 'q:Фёдор Михайлович Достоевский')), 'interwiki' => array(array('title' => 'q:Фёдор Михайлович Достоевский', 'iw' => 'q'))))) (src/Util/Api.php:204) at App\Util\Api->App\Util\{closure}(array('batchcomplete' => '', 'warnings' => array('main' => array('*' => 'Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes. Use [[Special:ApiFeatureUsage]] to see usage of deprecated features by your application.'), 'revisions' => array('*' => 'The parameter "rvparse" has been deprecated.')), 'query' => array('normalized' => array(array('from' => 'q:Фёдор_Михайлович_Достоевский', 'to' => 'q:Фёдор Михайлович Достоевский')), 'interwiki' => array(array('title' => 'q:Фёдор Михайлович Достоевский', 'iw' => 'q'))))) (vendor/guzzlehttp/promises/src/Promise.php:204) at GuzzleHttp\Promise\Promise::callHandler(1, array('batchcomplete' => '', 'warnings' => array('main' => array('*' => 'Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes. Use [[Special:ApiFeatureUsage]] to see usage of deprecated features by your application.'), 'revisions' => array('*' => 'The parameter "rvparse" has been deprecated.')), 'query' => array('normalized' => array(array('from' => 'q:Фёдор_Михайлович_Достоевский', 'to' => 'q:Фёдор Михайлович Достоевский')), 'interwiki' => array(array('title' => 'q:Фёдор Михайлович Достоевский', 'iw' => 'q')))), null) (vendor/guzzlehttp/promises/src/Promise.php:153) at GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}() (vendor/guzzlehttp/promises/src/TaskQueue.php:48) at GuzzleHttp\Promise\TaskQueue->run() (vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php:118) at GuzzleHttp\Handler\CurlMultiHandler->tick() (vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php:145) at GuzzleHttp\Handler\CurlMultiHandler->execute(true) (vendor/guzzlehttp/promises/src/Promise.php:248) at GuzzleHttp\Promise\Promise->invokeWaitFn() (vendor/guzzlehttp/promises/src/Promise.php:224) at GuzzleHttp\Promise\Promise->waitIfPending() (vendor/guzzlehttp/promises/src/Promise.php:269) at GuzzleHttp\Promise\Promise->invokeWaitList() (vendor/guzzlehttp/promises/src/Promise.php:226) at GuzzleHttp\Promise\Promise->waitIfPending() (vendor/guzzlehttp/promises/src/Promise.php:62) at GuzzleHttp\Promise\Promise->wait() (src/BookProvider.php:204) at App\BookProvider->getPages(array(object(Page), object(Page))) (src/BookProvider.php:125) at App\BookProvider->getMetadata('Фёдор_Михайлович_Достоевский', false, object(DOMDocument)) (src/BookProvider.php:48) at App\BookProvider->get('Фёдор_Михайлович_Достоевский') (src/BookCreator.php:51) at App\BookCreator->create('Фёдор_Михайлович_Достоевский') (src/Controller/ExportController.php:92) at App\Controller\ExportController->export(object(Request), object(CreationLog), object(Api), object(FontProvider)) (src/Controller/ExportController.php:63) at App\Controller\ExportController->home(object(Request), object(CreationLog), object(Api), object(Logger), object(FontProvider)) (vendor/symfony/http-kernel/HttpKernel.php:157) at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1) (vendor/symfony/http-kernel/HttpKernel.php:79) at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true) (vendor/symfony/http-kernel/Kernel.php:196) at Symfony\Component\HttpKernel\Kernel->handle(object(Request)) (public/index.php:35)
The response to the API request getPageAsync() makes appears to me to be the same as:
https://ru.wikisource.org/w/api.php?action=query&format=json&prop=revisions&rvprop=content&titles=q:%D0%A4%D1%91%D0%B4%D0%BE%D1%80_%D0%9C%D0%B8%D1%85%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%B8%D1%87_%D0%94%D0%BE%D1%81%D1%82%D0%BE%D0%B5%D0%B2%D1%81%D0%BA%D0%B8%D0%B9&rvparse=true
which does not seem like the correct request to me.
Ebooks to reproduce problem
- https://wsexport-test.wmflabs.org/tool/book.php?format=epub-3&lang=ru&page=%D0%A4%D1%91%D0%B4%D0%BE%D1%80_%D0%9C%D0%B8%D1%85%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%B8%D1%87_%D0%94%D0%BE%D1%81%D1%82%D0%BE%D0%B5%D0%B2%D1%81%D0%BA%D0%B8%D0%B9
- https://wsexport-test.wmflabs.org/tool/book.php?format=epub-3&lang=la&page=Pagina_prima