SyliusPickupPointPlugin
SyliusPickupPointPlugin copied to clipboard
Resolution of 'setono_sylius_pickup_point.registry.provider' fails if GLS webservice is down
The problem occurs in https://github.com/Setono/GlsWebserviceBundle and/or https://github.com/Setono/gls-webservice-php-sdk but the right course of action to solve problem is unclear.
If the GLS provider is registered (and their webpage is down), resolution will fail like this:
SoapFault: SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://www.gls.dk/webservices_v4/wsShopFinder.asmx?WSDL' : failed to load external entity "https://www.gls.dk/webservices_v4/wsShopFinder.asmx?WSDL"
#16 /vendor/setono/gls-webservice-php-sdk/src/Factory/SoapClientFactory.php(26): SoapClient::SoapClient
#15 /vendor/setono/gls-webservice-php-sdk/src/Factory/SoapClientFactory.php(26): Setono\GLS\Webservice\Factory\SoapClientFactory::create
#14 /var/cache/prod/ContainerBZEyIsI/getSetonoSyliusPickupPoint_Registry_ProviderService.php(43): ContainerBZEyIsI\getSetonoSyliusPickupPoint_Registry_ProviderService::do
#13 /var/cache/prod/ContainerBZEyIsI/App_KernelProdContainer.php(2459): ContainerBZEyIsI\App_KernelProdContainer::load
#12 /var/cache/prod/ContainerBZEyIsI/getPickupPointsActionService.php(22): ContainerBZEyIsI\getPickupPointsActionService::do
#11 /var/cache/prod/ContainerBZEyIsI/App_KernelProdContainer.php(2459): ContainerBZEyIsI\App_KernelProdContainer::load
#10 /vendor/symfony/dependency-injection/Container.php(237): Symfony\Component\DependencyInjection\Container::make
#9 /vendor/symfony/dependency-injection/Container.php(219): Symfony\Component\DependencyInjection\Container::get
#8 /vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php(53): Symfony\Component\HttpKernel\Controller\ContainerControllerResolver::instantiateController
#7 /vendor/symfony/framework-bundle/Controller/ControllerResolver.php(29): Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver::instantiateController
#6 /vendor/symfony/http-kernel/Controller/ControllerResolver.php(108): Symfony\Component\HttpKernel\Controller\ControllerResolver::createController
#5 /vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php(42): Symfony\Component\HttpKernel\Controller\ContainerControllerResolver::createController
#4 /vendor/symfony/http-kernel/Controller/ControllerResolver.php(86): Symfony\Component\HttpKernel\Controller\ControllerResolver::getController
#3 /vendor/symfony/http-kernel/HttpKernel.php(139): Symfony\Component\HttpKernel\HttpKernel::handleRaw
#2 /vendor/symfony/http-kernel/HttpKernel.php(78): Symfony\Component\HttpKernel\HttpKernel::handle
#1 /vendor/symfony/http-kernel/Kernel.php(199): Symfony\Component\HttpKernel\Kernel::handle
#0 /public/index.php(25): null
Not sure how to best solve this, but one way might be to allow the "GLS client" to instantiate, but make it throw an exception on usage. Atleast then the control flow would be in the hands of user, rather than failure while building container / resolving services.