From ad82f752f7050ea966fb7e40c64a1c2e30fb9672 Mon Sep 17 00:00:00 2001 From: Francis Besset Date: Mon, 30 Sep 2013 16:45:30 +0200 Subject: [PATCH] [SoapBundle] Added new request format (soap, wsdl) and used them in routing --- .../Controller/SoapWebServiceController.php | 6 ++---- .../BeSimpleSoapExtension.php | 2 ++ .../EventListener/RequestFormatListener.php | 15 +++++++++++++++ .../SoapBundle/Resources/config/request.xml | 16 ++++++++++++++++ .../config/routing/webservicecontroller.xml | 4 ++-- 5 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 src/BeSimple/SoapBundle/EventListener/RequestFormatListener.php create mode 100644 src/BeSimple/SoapBundle/Resources/config/request.xml diff --git a/src/BeSimple/SoapBundle/Controller/SoapWebServiceController.php b/src/BeSimple/SoapBundle/Controller/SoapWebServiceController.php index 952ad39..d65e434 100644 --- a/src/BeSimple/SoapBundle/Controller/SoapWebServiceController.php +++ b/src/BeSimple/SoapBundle/Controller/SoapWebServiceController.php @@ -92,10 +92,8 @@ class SoapWebServiceController extends ContainerAware )); $query = $this->container->get('request')->query; - if ($query->has('wsdl') || $query->has('WSDL')) { - $response->headers->set('Content-Type', 'application/wsdl+xml'); - } else { - $response->headers->set('Content-Type', 'text/xml'); + if (!$query->has('wsdl') && !$query->has('WSDL')) { + $this->container->get('request')->setRequestFormat('xml'); } return $response; diff --git a/src/BeSimple/SoapBundle/DependencyInjection/BeSimpleSoapExtension.php b/src/BeSimple/SoapBundle/DependencyInjection/BeSimpleSoapExtension.php index 941cbf0..3db1218 100644 --- a/src/BeSimple/SoapBundle/DependencyInjection/BeSimpleSoapExtension.php +++ b/src/BeSimple/SoapBundle/DependencyInjection/BeSimpleSoapExtension.php @@ -40,6 +40,8 @@ class BeSimpleSoapExtension extends Extension { $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); + $loader->load('request.xml'); + $loader->load('loaders.xml'); $loader->load('converters.xml'); $loader->load('webservice.xml'); diff --git a/src/BeSimple/SoapBundle/EventListener/RequestFormatListener.php b/src/BeSimple/SoapBundle/EventListener/RequestFormatListener.php new file mode 100644 index 0000000..3fbabd6 --- /dev/null +++ b/src/BeSimple/SoapBundle/EventListener/RequestFormatListener.php @@ -0,0 +1,15 @@ +getRequest()->setFormat('wsdl', 'application/wsdl+xml'); + $event->getRequest()->setFormat('soap', 'application/soap+xml'); + } +} diff --git a/src/BeSimple/SoapBundle/Resources/config/request.xml b/src/BeSimple/SoapBundle/Resources/config/request.xml new file mode 100644 index 0000000..0fb4690 --- /dev/null +++ b/src/BeSimple/SoapBundle/Resources/config/request.xml @@ -0,0 +1,16 @@ + + + + + BeSimple\SoapBundle\EventListener\RequestFormatListener + + + + + + + + + diff --git a/src/BeSimple/SoapBundle/Resources/config/routing/webservicecontroller.xml b/src/BeSimple/SoapBundle/Resources/config/routing/webservicecontroller.xml index 98e80e4..b2ce4c0 100644 --- a/src/BeSimple/SoapBundle/Resources/config/routing/webservicecontroller.xml +++ b/src/BeSimple/SoapBundle/Resources/config/routing/webservicecontroller.xml @@ -6,13 +6,13 @@ BeSimpleSoapBundle:SoapWebService:Call - xml + soap POST BeSimpleSoapBundle:SoapWebService:Definition - xml + wsdl GET