Compare commits
37 Commits
Author | SHA1 | Date | |
---|---|---|---|
fe67cff5ff | |||
e676eb0432 | |||
fd402731af | |||
f5d6f5e759 | |||
726ee89936 | |||
36a368e695 | |||
e2de214ea5 | |||
3cfeea8371 | |||
c24e8775bf | |||
b3c6353af8 | |||
10bba6a3bd | |||
a122f2a0f6 | |||
8d13d2dd5c | |||
1c1cd377f1 | |||
1efa348ae5 | |||
ccc4d57501 | |||
740f146bad | |||
5e8e669299 | |||
e4cb612aed | |||
59ea6b1ce0 | |||
7bb849e394 | |||
02722eae8f | |||
b7581f29b0 | |||
dc6e1e0889 | |||
f986400dc2 | |||
67410805ba | |||
2ae7515294 | |||
cdfc3cd5bd | |||
9ac755d86e | |||
321dcf3058 | |||
3a2b8e32ee | |||
fd5154a469 | |||
188f282a87 | |||
f9e230400d | |||
1b4e262c60 | |||
60e3714602 | |||
1e82d7fdd7 |
10
.travis.yml
10
.travis.yml
@ -10,10 +10,14 @@ env:
|
||||
- SYMFONY_VERSION=2.1.*
|
||||
- SYMFONY_VERSION=2.2.*
|
||||
- SYMFONY_VERSION=2.3.*
|
||||
- SYMFONY_VERSION=dev-master
|
||||
- SYMFONY_VERSION=2.4.*
|
||||
- SYMFONY_VERSION=2.5.*
|
||||
- SYMFONY_VERSION="dev-master symfony/debug:~2.6@dev symfony/http-kernel:~2.6@dev"
|
||||
|
||||
before_script:
|
||||
- composer require symfony/http-foundation:${SYMFONY_VERSION} --no-interaction --prefer-source
|
||||
- composer self-update
|
||||
- composer require symfony/framework-bundle:${SYMFONY_VERSION} --no-update
|
||||
- composer update --no-interaction --prefer-source
|
||||
- ./src/BeSimple/SoapClient/Tests/bin/phpwebserver.sh
|
||||
- ./src/BeSimple/SoapClient/Tests/bin/axis.sh
|
||||
|
||||
@ -22,4 +26,4 @@ script:
|
||||
|
||||
matrix:
|
||||
allow_failures:
|
||||
- env: SYMFONY_VERSION=dev-master
|
||||
- env: SYMFONY_VERSION="dev-master symfony/debug:~2.6@dev symfony/http-kernel:~2.6@dev"
|
||||
|
@ -37,14 +37,13 @@
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-mcrypt": "*",
|
||||
"mikey179/vfsStream": "dev-master",
|
||||
"symfony/filesystem": "~2.3",
|
||||
"mikey179/vfsStream": "~1.0",
|
||||
"symfony/filesystem": "~2.0",
|
||||
"symfony/process": "~2.3"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": { "BeSimple\\": "src/" }
|
||||
},
|
||||
"minimum-stability": "dev",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "0.2-dev"
|
||||
|
@ -15,6 +15,7 @@ namespace BeSimple\SoapBundle\Controller;
|
||||
use BeSimple\SoapBundle\Handler\ExceptionHandler;
|
||||
use BeSimple\SoapBundle\Soap\SoapRequest;
|
||||
use BeSimple\SoapBundle\Soap\SoapResponse;
|
||||
use BeSimple\SoapServer\SoapServerBuilder;
|
||||
use Symfony\Component\DependencyInjection\ContainerAware;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
@ -94,9 +95,10 @@ class SoapWebServiceController extends ContainerAware
|
||||
)
|
||||
));
|
||||
|
||||
$query = $this->container->get('request')->query;
|
||||
if (!$query->has('wsdl') && !$query->has('WSDL')) {
|
||||
$this->container->get('request')->setRequestFormat('xml');
|
||||
$request = $this->container->get('request');
|
||||
$query = $request->query;
|
||||
if ($query->has('wsdl') || $query->has('WSDL')) {
|
||||
$request->setRequestFormat('wsdl');
|
||||
}
|
||||
|
||||
return $response;
|
||||
@ -128,16 +130,30 @@ class SoapWebServiceController extends ContainerAware
|
||||
'logger' => $logger,
|
||||
));
|
||||
|
||||
$server = $this
|
||||
->container
|
||||
->get(sprintf('besimple.soap.context.%s', $webservice))
|
||||
->getServerBuilder()
|
||||
->withHandler(new ExceptionHandler($exception, $details))
|
||||
$handler = new ExceptionHandler($exception, $details);
|
||||
if ($soapFault = $request->query->get('_besimple_soap_fault')) {
|
||||
$handler->setSoapFault($soapFault);
|
||||
|
||||
// Remove parameter from query because cannot be Serialized in Logger
|
||||
$request->query->remove('_besimple_soap_fault');
|
||||
}
|
||||
|
||||
$server = SoapServerBuilder::createWithDefaults()
|
||||
->withWsdl(__DIR__.'/../Handler/wsdl/exception.wsdl')
|
||||
->withWsdlCacheNone()
|
||||
->withHandler($handler)
|
||||
->build()
|
||||
;
|
||||
|
||||
ob_start();
|
||||
$server->handle($request->getContent());
|
||||
$server->handle(
|
||||
'<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://besim.pl/soap/exception/1.0/">'.
|
||||
'<soapenv:Header/>'.
|
||||
'<soapenv:Body>'.
|
||||
'<ns:exception />'.
|
||||
'</soapenv:Body>'.
|
||||
'</soapenv:Envelope>'
|
||||
);
|
||||
|
||||
return new Response(ob_get_clean());
|
||||
}
|
||||
|
@ -104,12 +104,8 @@ class BeSimpleSoapExtension extends Extension
|
||||
|
||||
$definition->replaceArgument(1, $defOptions);
|
||||
|
||||
if (!empty($options['classmap'])) {
|
||||
$classmap = $this->createClientClassmap($client, $options['classmap'], $container);
|
||||
$definition->replaceArgument(2, new Reference($classmap));
|
||||
} else {
|
||||
$definition->replaceArgument(2, null);
|
||||
}
|
||||
$classmap = $this->createClientClassmap($client, $options['classmap'], $container);
|
||||
$definition->replaceArgument(2, new Reference($classmap));
|
||||
|
||||
$this->createClient($client, $container);
|
||||
}
|
||||
@ -120,9 +116,11 @@ class BeSimpleSoapExtension extends Extension
|
||||
$definition = new DefinitionDecorator('besimple.soap.classmap');
|
||||
$container->setDefinition(sprintf('besimple.soap.classmap.%s', $client), $definition);
|
||||
|
||||
$definition->setMethodCalls(array(
|
||||
array('set', array($classmap)),
|
||||
));
|
||||
if (!empty($classmap)) {
|
||||
$definition->setMethodCalls(array(
|
||||
array('set', array($classmap)),
|
||||
));
|
||||
}
|
||||
|
||||
return sprintf('besimple.soap.classmap.%s', $client);
|
||||
}
|
||||
|
@ -67,12 +67,18 @@ class SoapExceptionListener extends ExceptionListener
|
||||
// hack to retrieve the current WebService name in the controller
|
||||
$request->query->set('_besimple_soap_webservice', $webservice);
|
||||
|
||||
$exception = $event->getException();
|
||||
if ($exception instanceof \SoapFault) {
|
||||
$request->query->set('_besimple_soap_fault', $exception);
|
||||
}
|
||||
|
||||
parent::onKernelException($event);
|
||||
}
|
||||
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return array(
|
||||
// Must be called before ExceptionListener of HttpKernel component
|
||||
KernelEvents::EXCEPTION => array('onKernelException', -64),
|
||||
);
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ class ExceptionHandler
|
||||
{
|
||||
protected $exception;
|
||||
protected $details;
|
||||
protected $soapFault;
|
||||
|
||||
public function __construct(FlattenException $exception, $details = null)
|
||||
{
|
||||
@ -30,8 +31,17 @@ class ExceptionHandler
|
||||
$this->details = $details;
|
||||
}
|
||||
|
||||
public function setSoapFault(\SoapFault $soapFault)
|
||||
{
|
||||
$this->soapFault = $soapFault;
|
||||
}
|
||||
|
||||
public function __call($method, $arguments)
|
||||
{
|
||||
if (isset($this->soapFault)) {
|
||||
throw $this->soapFault;
|
||||
}
|
||||
|
||||
$code = $this->exception->getStatusCode();
|
||||
|
||||
throw new ReceiverSoapFault(
|
||||
|
31
src/BeSimple/SoapBundle/Handler/wsdl/exception.wsdl
Normal file
31
src/BeSimple/SoapBundle/Handler/wsdl/exception.wsdl
Normal file
@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://besim.pl/soap/exception/1.0/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="Exception" targetNamespace="http://besim.pl/soap/exception/1.0/">
|
||||
|
||||
<portType name="ExceptionPortType">
|
||||
<operation name="exception">
|
||||
<input message="tns:empty"/>
|
||||
<output message="tns:empty"/>
|
||||
</operation>
|
||||
</portType>
|
||||
|
||||
<message name="empty" />
|
||||
|
||||
<binding name="ExceptionBinding" type="tns:ExceptionPortType">
|
||||
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
|
||||
<operation name="exception">
|
||||
<soap:operation soapAction="http://besim.pl/soap/exception/1.0/exception"/>
|
||||
<input>
|
||||
<soap:body use="literal" namespace="http://besim.pl/soap/exception/1.0/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
|
||||
</input>
|
||||
<output>
|
||||
<soap:body use="literal" namespace="http://besim.pl/soap/exception/1.0/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
|
||||
</output>
|
||||
</operation>
|
||||
</binding>
|
||||
|
||||
<service name="ExceptionService">
|
||||
<port name="ExceptionPort" binding="tns:ExceptionBinding">
|
||||
<soap:address location="http://localhost/soap/Exception"/>
|
||||
</port>
|
||||
</service>
|
||||
</definitions>
|
@ -6,13 +6,13 @@
|
||||
|
||||
<route id="_webservice_call" pattern="/{webservice}">
|
||||
<default key="_controller">BeSimpleSoapBundle:SoapWebService:Call</default>
|
||||
<default key="_format">soap</default>
|
||||
<default key="_format">xml</default>
|
||||
<requirement key="_method">POST</requirement>
|
||||
</route>
|
||||
|
||||
<route id="_webservice_definition" pattern="/{webservice}">
|
||||
<default key="_controller">BeSimpleSoapBundle:SoapWebService:Definition</default>
|
||||
<default key="_format">wsdl</default>
|
||||
<default key="_format">xml</default>
|
||||
<requirement key="_method">GET</requirement>
|
||||
</route>
|
||||
</routes>
|
||||
|
@ -44,6 +44,7 @@
|
||||
<argument key="binder_request_header_class">%besimple.soap.binder.request_header.rpcliteral.class%</argument>
|
||||
<argument key="binder_request_class">%besimple.soap.binder.request.rpcliteral.class%</argument>
|
||||
<argument key="binder_response_class">%besimple.soap.binder.response.rpcliteral.class%</argument>
|
||||
<argument key="wsdl_stylesheet">%besimple.soap.definition.dumper.options.stylesheet%</argument>
|
||||
</argument>
|
||||
<argument type="service" id="besimple.soap.cache" />
|
||||
</service>
|
||||
@ -58,6 +59,7 @@
|
||||
<argument key="binder_request_header_class">%besimple.soap.binder.request_header.documentwrapped.class%</argument>
|
||||
<argument key="binder_request_class">%besimple.soap.binder.request.documentwrapped.class%</argument>
|
||||
<argument key="binder_response_class">%besimple.soap.binder.response.documentwrapped.class%</argument>
|
||||
<argument key="wsdl_stylesheet">%besimple.soap.definition.dumper.options.stylesheet%</argument>
|
||||
</argument>
|
||||
<argument type="service" id="besimple.soap.cache" />
|
||||
</service>
|
||||
|
@ -47,9 +47,9 @@ Controller
|
||||
/**
|
||||
* @Soap\Method("sendAssocArray")
|
||||
* @Soap\Param("assocArray", phpType = "BeSimple\SoapCommon\Type\KeyValue\String[]")
|
||||
* @Soap\Return(phpType = "BeSimple\SoapCommon\Type\KeyValue\String[]")
|
||||
* @Soap\Result(phpType = "BeSimple\SoapCommon\Type\KeyValue\String[]")
|
||||
*/
|
||||
public function assocArrayOfStringAction(array $assocArray)
|
||||
public function sendAssocArrayOfStringAction(array $assocArray)
|
||||
{
|
||||
// The $assocArray it's a real associative array
|
||||
// var_dump($assocArray);die;
|
||||
@ -97,3 +97,4 @@ How to create my Associative Array?
|
||||
'user2' => new User('user2', 'user2@user.com'),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -86,6 +86,16 @@ You can expose only the properties (public, protected or private) of a complex t
|
||||
*/
|
||||
private $newsletter;
|
||||
|
||||
/**
|
||||
* @Soap\ComplexType("date")
|
||||
*/
|
||||
private $createdAt:
|
||||
|
||||
/**
|
||||
* @Soap\ComplexType("datetime")
|
||||
*/
|
||||
private $updatedAt;
|
||||
|
||||
public function getId()
|
||||
{
|
||||
return $this->id;
|
||||
@ -128,7 +138,27 @@ You can expose only the properties (public, protected or private) of a complex t
|
||||
|
||||
public function setNewsletter($newsletter)
|
||||
{
|
||||
$this->newletter = (Boolean) $newsletter
|
||||
$this->newletter = (Boolean) $newsletter;
|
||||
}
|
||||
|
||||
public function getCreatedAt()
|
||||
{
|
||||
return $this->createdAt;
|
||||
}
|
||||
|
||||
public function setCreatedAt(\DateTime $createdAt)
|
||||
{
|
||||
$this->createdAt = $createdAt;
|
||||
}
|
||||
|
||||
public function getUpdatedAt()
|
||||
{
|
||||
return this->updatedAt;
|
||||
}
|
||||
|
||||
public function setUpdatedAt(\DateTime $updatedAt)
|
||||
{
|
||||
$this->updatedAt = $updatedAt;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -112,9 +112,8 @@ class RpcLiteralRequestMessageBinder implements MessageBinderInterface
|
||||
$value = $this->processType($type->getType(), $value);
|
||||
|
||||
$messageBinder->writeProperty($property, $value);
|
||||
}
|
||||
|
||||
if (!$type->isNillable() && null === $value) {
|
||||
} elseif (!$type->isNillable()) {
|
||||
// @TODO use xmlType instead of phpType
|
||||
throw new \SoapFault('SOAP_ERROR_COMPLEX_TYPE', sprintf('"%s:%s" cannot be null.', ucfirst($phpType), $type->getName()));
|
||||
}
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ class RpcLiteralResponseMessageBinder implements MessageBinderInterface
|
||||
$this->messageRefs[$hash] = $message;
|
||||
|
||||
if (!$message instanceof $phpType) {
|
||||
throw new \InvalidArgumentException(sprintf('The instance class must be "%s", "%s" given.', get_class($message), $phpType));
|
||||
throw new \InvalidArgumentException(sprintf('The instance class must be "%s", "%s" given.', $phpType, get_class($message)));
|
||||
}
|
||||
|
||||
$messageBinder = new MessageBinder($message);
|
||||
|
@ -88,7 +88,6 @@ class AnnotationClassLoader extends Loader
|
||||
|
||||
$serviceMethod = new Definition\Method(
|
||||
$annotation->getValue(),
|
||||
$this->typeRepository,
|
||||
$this->getController($class, $method, $annotation)
|
||||
);
|
||||
} elseif ($annotation instanceof Annotation\Result) {
|
||||
|
@ -23,9 +23,9 @@ class Method extends BaseMethod
|
||||
{
|
||||
private $controller;
|
||||
|
||||
public function __construct($name, TypeRepository $typeRepository, $controller)
|
||||
public function __construct($name, $controller)
|
||||
{
|
||||
parent::__construct($name, $typeRepository);
|
||||
parent::__construct($name);
|
||||
|
||||
$this->controller = $controller;
|
||||
}
|
||||
|
@ -16,66 +16,70 @@ use BeSimple\SoapBundle\ServiceBinding\RpcLiteralRequestMessageBinder;
|
||||
use BeSimple\SoapBundle\ServiceDefinition as Definition;
|
||||
use BeSimple\SoapBundle\Tests\fixtures\ServiceBinding as Fixtures;
|
||||
use BeSimple\SoapBundle\Util\Collection;
|
||||
use BeSimple\SoapCommon\Definition\Type\ComplexType;
|
||||
use BeSimple\SoapCommon\Definition\Type\TypeRepository;
|
||||
|
||||
class RpcLiteralRequestMessageBinderTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* @dataProvider messageProvider
|
||||
*/
|
||||
public function testProcessMessage(Definition\Method $method, $message, $assert)
|
||||
public function testProcessMessage(Definition\Method $method, array $message, array $assert)
|
||||
{
|
||||
$messageBinder = new RpcLiteralRequestMessageBinder();
|
||||
$result = $messageBinder->processMessage($method, $message);
|
||||
$result = $messageBinder->processMessage($method, $message, $this->getTypeRepository());
|
||||
|
||||
$this->assertSame($assert, $result);
|
||||
}
|
||||
|
||||
public function testProcessMessageWithComplexType()
|
||||
{
|
||||
$typeRepository = $this->addComplexTypes($this->getTypeRepository());
|
||||
$messageBinder = new RpcLiteralRequestMessageBinder();
|
||||
|
||||
$method = new Definition\Method('complextype_argument', null);
|
||||
$method->addInput('foo', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Foo');
|
||||
|
||||
$foo = new Fixtures\Foo('foobar', 19395);
|
||||
$result = $messageBinder->processMessage(
|
||||
new Definition\Method('complextype_argument', null, array(), array(
|
||||
new Definition\Argument('foo', new Definition\Type('BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Foo')),
|
||||
)),
|
||||
$method,
|
||||
array($foo),
|
||||
$this->getDefinitionComplexTypes()
|
||||
$typeRepository
|
||||
);
|
||||
|
||||
$this->assertEquals(array('foo' => $foo), $result);
|
||||
|
||||
|
||||
$foo1 = new Fixtures\Foo('foobar', 29291);
|
||||
$foo2 = new Fixtures\Foo('barfoo', 39392);
|
||||
$foos = new \stdClass();
|
||||
$foos->item = array($foo1, $foo2);
|
||||
|
||||
$method = new Definition\Method('complextype_argument', null);
|
||||
$method->addInput('foos', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Foo[]');
|
||||
|
||||
$result = $messageBinder->processMessage(
|
||||
new Definition\Method('complextype_argument', null, array(), array(
|
||||
new Definition\Argument('foos', new Definition\Type('BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Foo[]')),
|
||||
)),
|
||||
$method,
|
||||
array($foos),
|
||||
$this->getDefinitionComplexTypes()
|
||||
$typeRepository
|
||||
);
|
||||
|
||||
$this->assertEquals(array('foos' => array($foo1, $foo2)), $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException SoapFault
|
||||
*/
|
||||
public function testProcessMessageSoapFault()
|
||||
{
|
||||
$messageBinder = new RpcLiteralRequestMessageBinder();
|
||||
|
||||
$method = new Definition\Method('complextype_argument', null);
|
||||
$method->addInput('foo', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Foo');
|
||||
|
||||
$foo = new Fixtures\Foo('foo', null);
|
||||
$result = $messageBinder->processMessage(
|
||||
new Definition\Method('complextype_argument', null, array(), array(
|
||||
new Definition\Argument('foo', new Definition\Type('BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Foo')),
|
||||
)),
|
||||
|
||||
$this->setExpectedException('SoapFault');
|
||||
$messageBinder->processMessage(
|
||||
$method,
|
||||
array($foo),
|
||||
$this->getDefinitionComplexTypes()
|
||||
$this->addComplexTypes($this->getTypeRepository())
|
||||
);
|
||||
}
|
||||
|
||||
@ -83,16 +87,17 @@ class RpcLiteralRequestMessageBinderTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
$messageBinder = new RpcLiteralRequestMessageBinder();
|
||||
|
||||
$method = new Definition\Method('complextype_argument', null);
|
||||
$method->addInput('foos', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Foo[]');
|
||||
|
||||
$foo = new Fixtures\Foo('foo', 2499104);
|
||||
$foos = new \stdClass();
|
||||
$foos->item = array($foo, $foo);
|
||||
|
||||
$result = $messageBinder->processMessage(
|
||||
new Definition\Method('complextype_argument', null, array(), array(
|
||||
new Definition\Argument('foos', new Definition\Type('BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Foo[]')),
|
||||
)),
|
||||
$method,
|
||||
array($foos),
|
||||
$this->getDefinitionComplexTypes()
|
||||
$this->addComplexTypes($this->getTypeRepository())
|
||||
);
|
||||
|
||||
$this->assertEquals(array('foos' => array($foo, $foo)), $result);
|
||||
@ -102,16 +107,17 @@ class RpcLiteralRequestMessageBinderTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
$messageBinder = new RpcLiteralRequestMessageBinder();
|
||||
|
||||
$method = new Definition\Method('complextype_argument', null);
|
||||
$method->addInput('fooBar', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\FooBar');
|
||||
|
||||
$foo = new Fixtures\Foo('foo', 38845);
|
||||
$bar = new Fixtures\Bar('bar', null);
|
||||
$fooBar = new Fixtures\FooBar($foo, $bar);
|
||||
|
||||
$result = $messageBinder->processMessage(
|
||||
new Definition\Method('complextype_argument', null, array(), array(
|
||||
new Definition\Argument('fooBar', new Definition\Type('BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\FooBar')),
|
||||
)),
|
||||
$method,
|
||||
array($fooBar),
|
||||
$this->getDefinitionComplexTypes()
|
||||
$this->addComplexTypes($this->getTypeRepository())
|
||||
);
|
||||
|
||||
$this->assertEquals(array('fooBar' => $fooBar), $result);
|
||||
@ -121,17 +127,18 @@ class RpcLiteralRequestMessageBinderTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
$messageBinder = new RpcLiteralRequestMessageBinder();
|
||||
|
||||
$method = new Definition\Method('complextype_with_array', null);
|
||||
$method->addInput('simple_arrays', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\SimpleArrays');
|
||||
|
||||
$array = array(1, 2, 3, 4);
|
||||
$stdClass = new \stdClass();
|
||||
$stdClass->item = $array;
|
||||
$simpleArrays = new Fixtures\SimpleArrays(null, new \stdClass(), $stdClass);
|
||||
|
||||
$result = $messageBinder->processMessage(
|
||||
new Definition\Method('complextype_with_array', null, array(), array(
|
||||
new Definition\Argument('simple_arrays', new Definition\Type('BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\SimpleArrays')),
|
||||
)),
|
||||
$method,
|
||||
array($simpleArrays),
|
||||
$this->getDefinitionComplexTypes()
|
||||
$this->addComplexTypes($this->getTypeRepository())
|
||||
);
|
||||
|
||||
$result = $result['simple_arrays'];
|
||||
@ -144,12 +151,13 @@ class RpcLiteralRequestMessageBinderTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
$messageBinder = new RpcLiteralRequestMessageBinder();
|
||||
|
||||
$method = new Definition\Method('empty_array_complex_type', null);
|
||||
$method->addInput('foo', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Foo[]');
|
||||
|
||||
$result = $messageBinder->processMessage(
|
||||
new Definition\Method('empty_array_complex_type', null, array(), array(
|
||||
new Definition\Argument('foo', new Definition\Type('BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Foo[]')),
|
||||
)),
|
||||
$method,
|
||||
array(new \stdClass()),
|
||||
$this->getDefinitionComplexTypes()
|
||||
$this->addComplexTypes($this->getTypeRepository())
|
||||
);
|
||||
|
||||
$this->assertEquals(array('foo' => array()), $result);
|
||||
@ -159,16 +167,17 @@ class RpcLiteralRequestMessageBinderTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
$messageBinder = new RpcLiteralRequestMessageBinder();
|
||||
|
||||
$method = new Definition\Method('prevent_infinite_recursion', null);
|
||||
$method->addInput('foo_recursive', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\FooRecursive');
|
||||
|
||||
$foo = new Fixtures\FooRecursive('foo', '');
|
||||
$bar = new Fixtures\BarRecursive($foo, 10394);
|
||||
$foo->bar = $bar;
|
||||
|
||||
$result = $messageBinder->processMessage(
|
||||
new Definition\Method('prevent_infinite_recursion', null, array(), array(
|
||||
new Definition\Argument('foo_recursive', new Definition\Type('BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\FooRecursive')),
|
||||
)),
|
||||
$method,
|
||||
array($foo),
|
||||
$this->getDefinitionComplexTypes()
|
||||
$this->addComplexTypes($this->getTypeRepository())
|
||||
);
|
||||
|
||||
$this->assertEquals(array('foo_recursive' => $foo), $result);
|
||||
@ -179,43 +188,43 @@ class RpcLiteralRequestMessageBinderTest extends \PHPUnit_Framework_TestCase
|
||||
$messages = array();
|
||||
|
||||
$messages[] = array(
|
||||
new Definition\Method('no_argument'),
|
||||
new Definition\Method('no_argument', null),
|
||||
array(),
|
||||
array(),
|
||||
);
|
||||
|
||||
$method = new Definition\Method('string_argument', null);
|
||||
$method->addInput('foo', 'string');
|
||||
$messages[] = array(
|
||||
new Definition\Method('string_argument', null, array(), array(
|
||||
new Definition\Argument('foo', new Definition\Type('string')),
|
||||
)),
|
||||
$method,
|
||||
array('bar'),
|
||||
array('foo' => 'bar'),
|
||||
);
|
||||
|
||||
$method = new Definition\Method('string_int_arguments', null);
|
||||
$method->addInput('foo', 'string');
|
||||
$method->addInput('bar', 'int');
|
||||
$messages[] = array(
|
||||
new Definition\Method('string_int_arguments', null, array(), array(
|
||||
new Definition\Argument('foo', new Definition\Type('string')),
|
||||
new Definition\Argument('bar', new Definition\Type('int')),
|
||||
)),
|
||||
$method,
|
||||
array('test', 20),
|
||||
array('foo' => 'test', 'bar' => 20),
|
||||
);
|
||||
|
||||
$method = new Definition\Method('array_string_arguments', null);
|
||||
$method->addInput('foo', 'string[]');
|
||||
$method->addInput('bar', 'int');
|
||||
$strings = new \stdClass();
|
||||
$strings->item = array('foo', 'bar', 'barfoo');
|
||||
$messages[] = array(
|
||||
new Definition\Method('array_string_arguments', null, array(), array(
|
||||
new Definition\Argument('foo', new Definition\Type('string[]')),
|
||||
new Definition\Argument('bar', new Definition\Type('int')),
|
||||
)),
|
||||
$method,
|
||||
array($strings, 4),
|
||||
array('foo' => array('foo', 'bar', 'barfoo'), 'bar' => 4),
|
||||
);
|
||||
|
||||
$method = new Definition\Method('empty_array', null);
|
||||
$method->addInput('foo', 'string[]');
|
||||
$messages[] = array(
|
||||
new Definition\Method('empty_array', null, array(), array(
|
||||
new Definition\Argument('foo', new Definition\Type('string[]')),
|
||||
)),
|
||||
$method,
|
||||
array(new \stdClass()),
|
||||
array('foo' => array()),
|
||||
);
|
||||
@ -223,40 +232,38 @@ class RpcLiteralRequestMessageBinderTest extends \PHPUnit_Framework_TestCase
|
||||
return $messages;
|
||||
}
|
||||
|
||||
private function getDefinitionComplexTypes()
|
||||
private function addComplexTypes(TypeRepository $typeRepository)
|
||||
{
|
||||
$definitionComplexTypes = array();
|
||||
$foo = new ComplexType('BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Foo', 'Foo');
|
||||
$foo->add('foo', 'string');
|
||||
$foo->add('bar', 'int');
|
||||
$typeRepository->addComplexType($foo);
|
||||
|
||||
$definitionComplexTypes['BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Foo'] = $this->createComplexTypeCollection(array(
|
||||
array('foo', 'string'),
|
||||
array('bar', 'int'),
|
||||
));
|
||||
$bar = new ComplexType('BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Bar', 'Bar');
|
||||
$bar->add('foo', 'string');
|
||||
$bar->add('bar', 'int', true);
|
||||
$typeRepository->addComplexType($bar);
|
||||
|
||||
$definitionComplexTypes['BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Bar'] = $this->createComplexTypeCollection(array(
|
||||
array('foo', 'string'),
|
||||
array('bar', 'int', true),
|
||||
));
|
||||
$fooBar = new ComplexType('BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\FooBar', 'FooBar');
|
||||
$fooBar->add('foo', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Foo');
|
||||
$fooBar->add('bar', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Bar');
|
||||
$typeRepository->addComplexType($fooBar);
|
||||
|
||||
$definitionComplexTypes['BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\FooBar'] = $this->createComplexTypeCollection(array(
|
||||
array('foo', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Foo'),
|
||||
array('bar', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\Bar'),
|
||||
));
|
||||
$simpleArrays = new ComplexType('BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\SimpleArrays', 'SimpleArrays');
|
||||
$simpleArrays->add('array1', 'string[]', true);
|
||||
$simpleArrays->add('array2', 'string[]');
|
||||
$simpleArrays->add('array3', 'string[]');
|
||||
$typeRepository->addComplexType($simpleArrays);
|
||||
|
||||
$definitionComplexTypes['BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\SimpleArrays'] = $this->createComplexTypeCollection(array(
|
||||
array('array1', 'string[]', true),
|
||||
array('array2', 'string[]'),
|
||||
array('array3', 'string[]'),
|
||||
));
|
||||
$fooRecursive = new ComplexType('BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\FooRecursive', 'FooRecursive');
|
||||
$fooRecursive->add('bar', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\BarRecursive');
|
||||
$typeRepository->addComplexType($fooRecursive);
|
||||
|
||||
$definitionComplexTypes['BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\FooRecursive'] = $this->createComplexTypeCollection(array(
|
||||
array('bar', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\BarRecursive'),
|
||||
));
|
||||
$barRecursive = new ComplexType('BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\BarRecursive', 'BarRecursive');
|
||||
$barRecursive->add('foo', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\FooRecursive');
|
||||
$typeRepository->addComplexType($barRecursive);
|
||||
|
||||
$definitionComplexTypes['BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\BarRecursive'] = $this->createComplexTypeCollection(array(
|
||||
array('foo', 'BeSimple\SoapBundle\Tests\fixtures\ServiceBinding\FooRecursive'),
|
||||
));
|
||||
|
||||
return $definitionComplexTypes;
|
||||
return $typeRepository;
|
||||
}
|
||||
|
||||
private function createComplexTypeCollection(array $properties)
|
||||
@ -277,4 +284,18 @@ class RpcLiteralRequestMessageBinderTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
return array('properties' => $collection);
|
||||
}
|
||||
|
||||
private function getTypeRepository()
|
||||
{
|
||||
$typeRepository = new TypeRepository();
|
||||
$typeRepository->addXmlNamespace('xsd', 'http://www.w3.org/2001/XMLSchema');
|
||||
$typeRepository->addType('string', 'xsd:string');
|
||||
$typeRepository->addType('boolean', 'xsd:boolean');
|
||||
$typeRepository->addType('int', 'xsd:int');
|
||||
$typeRepository->addType('float', 'xsd:float');
|
||||
$typeRepository->addType('date', 'xsd:date');
|
||||
$typeRepository->addType('dateTime', 'xsd:dateTime');
|
||||
|
||||
return $typeRepository;
|
||||
}
|
||||
}
|
||||
|
@ -23,6 +23,8 @@ class SoapRequestTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
public function testMtomMessage()
|
||||
{
|
||||
$this->markTestSkipped('Skip because I\'m not sure that SoapRequest is used in a HTTP Request process.');
|
||||
|
||||
$content = $this->loadRequestContentFixture('mtom/simple.txt');
|
||||
|
||||
$request = new SoapRequest(array(), array(), array(), array(), array(), array(), $content);
|
||||
|
@ -78,7 +78,7 @@ class WebServiceContext
|
||||
$definition->setOption('location', $endpoint);
|
||||
}
|
||||
|
||||
$dumper = new Dumper($definition);
|
||||
$dumper = new Dumper($definition, array('stylesheet' => $this->options['wsdl_stylesheet']));
|
||||
$cache->write($dumper->dump());
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,6 @@
|
||||
"psr-0": { "BeSimple\\SoapBundle": "" }
|
||||
},
|
||||
"target-dir": "BeSimple/SoapBundle",
|
||||
"minimum-stability": "dev",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "0.2-dev"
|
||||
|
@ -81,20 +81,31 @@ class Curl
|
||||
curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT, $options['connection_timeout']);
|
||||
}
|
||||
if (isset($options['proxy_host'])) {
|
||||
$port = isset($options['proxy_port']) ? $options['proxy_port'] : 8080;
|
||||
curl_setopt($this->ch, CURLOPT_PROXY, $options['proxy_host'] . ':' . $port);
|
||||
if (false !== $options['proxy_host']) {
|
||||
$proxyHost = $options['proxy_host'].(isset($options['proxy_port']) ? $options['proxy_port'] : 8080);
|
||||
} else {
|
||||
$proxyHost = false;
|
||||
}
|
||||
|
||||
curl_setopt($this->ch, CURLOPT_PROXY, $proxyHost);
|
||||
}
|
||||
if (isset($options['proxy_user'])) {
|
||||
curl_setopt($this->ch, CURLOPT_PROXYUSERPWD, $options['proxy_user'] . ':' . $options['proxy_password']);
|
||||
}
|
||||
if (isset($options['login'])) {
|
||||
curl_setopt($this->ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
|
||||
curl_setopt($this->ch, CURLOPT_HTTPAUTH, isset($options['extra_options']['http_auth']) ? $options['extra_options']['http_auth'] : CURLAUTH_ANY);
|
||||
curl_setopt($this->ch, CURLOPT_USERPWD, $options['login'].':'.$options['password']);
|
||||
}
|
||||
if (isset($options['local_cert'])) {
|
||||
curl_setopt($this->ch, CURLOPT_SSLCERT, $options['local_cert']);
|
||||
curl_setopt($this->ch, CURLOPT_SSLCERTPASSWD, $options['passphrase']);
|
||||
}
|
||||
if (isset($options['ca_info'])) {
|
||||
curl_setopt($this->ch, CURLOPT_CAINFO, $options['ca_info']);
|
||||
}
|
||||
if (isset($options['ca_path'])) {
|
||||
curl_setopt($this->ch, CURLOPT_CAPATH, $options['ca_path']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -112,10 +123,11 @@ class Curl
|
||||
* @param string $location HTTP location
|
||||
* @param string $request Request body
|
||||
* @param array $requestHeaders Request header strings
|
||||
* @param array $requestOptions An array of request options
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function exec($location, $request = null, $requestHeaders = array())
|
||||
public function exec($location, $request = null, $requestHeaders = array(), $requestOptions = array())
|
||||
{
|
||||
curl_setopt($this->ch, CURLOPT_URL, $location);
|
||||
|
||||
@ -128,6 +140,10 @@ class Curl
|
||||
curl_setopt($this->ch, CURLOPT_HTTPHEADER, $requestHeaders);
|
||||
}
|
||||
|
||||
if (count($requestOptions) > 0) {
|
||||
curl_setopt_array($this->ch, $requestOptions);
|
||||
}
|
||||
|
||||
$this->response = $this->execManualRedirect();
|
||||
|
||||
return ($this->response === false) ? false : true;
|
||||
|
@ -113,6 +113,11 @@ class SoapClient extends \SoapClient
|
||||
$this->cliWebserverWorkaround = $options['cli_webserver_workaround'];
|
||||
}
|
||||
$this->curl = new Curl($options);
|
||||
|
||||
if (isset($options['extra_options'])) {
|
||||
unset($options['extra_options']);
|
||||
}
|
||||
|
||||
$wsdlFile = $this->loadWsdl($wsdl, $options);
|
||||
// TODO $wsdlHandler = new WsdlHandler($wsdlFile, $this->soapVersion);
|
||||
$this->soapKernel = new SoapKernel();
|
||||
@ -173,11 +178,16 @@ class SoapClient extends \SoapClient
|
||||
$headers = array();
|
||||
}
|
||||
|
||||
$headers = $this->filterRequestHeaders($soapRequest, $headers);
|
||||
|
||||
$options = $this->filterRequestOptions($soapRequest);
|
||||
|
||||
// execute HTTP request with cURL
|
||||
$responseSuccessfull = $this->curl->exec(
|
||||
$location,
|
||||
$content,
|
||||
$headers
|
||||
$headers,
|
||||
$options
|
||||
);
|
||||
// tracing enabled: store last request header and body
|
||||
if ($this->tracingEnabled === true) {
|
||||
@ -253,6 +263,31 @@ class SoapClient extends \SoapClient
|
||||
return $soapResponse;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filters HTTP headers which will be sent
|
||||
*
|
||||
* @param SoapRequest $soapRequest SOAP request object
|
||||
* @param array $headers An array of HTTP headers
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function filterRequestHeaders(SoapRequest $soapRequest, array $headers)
|
||||
{
|
||||
return $headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds additional cURL options for the request
|
||||
*
|
||||
* @param SoapRequest $soapRequest SOAP request object
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function filterRequestOptions(SoapRequest $soapRequest)
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get last request HTTP headers.
|
||||
*
|
||||
@ -354,7 +389,7 @@ class SoapClient extends \SoapClient
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function loadWsdl($wsdl, array $options)
|
||||
protected function loadWsdl($wsdl, array $options)
|
||||
{
|
||||
// option to resolve wsdl/xsd includes
|
||||
$resolveRemoteIncludes = true;
|
||||
|
@ -21,7 +21,9 @@ class CurlTest extends AbstractWebserverTest
|
||||
{
|
||||
public function testExec()
|
||||
{
|
||||
$curl = new Curl();
|
||||
$curl = new Curl(array(
|
||||
'proxy_host' => false,
|
||||
));
|
||||
|
||||
$this->assertTrue($curl->exec(sprintf('http://localhost:%d/curl.txt', WEBSERVER_PORT)));
|
||||
$this->assertTrue($curl->exec(sprintf('http://localhost:%d/404.txt', WEBSERVER_PORT)));
|
||||
@ -29,7 +31,9 @@ class CurlTest extends AbstractWebserverTest
|
||||
|
||||
public function testGetErrorMessage()
|
||||
{
|
||||
$curl = new Curl();
|
||||
$curl = new Curl(array(
|
||||
'proxy_host' => false,
|
||||
));
|
||||
|
||||
$curl->exec('http://unknown/curl.txt');
|
||||
$this->assertEquals('Could not connect to host', $curl->getErrorMessage());
|
||||
@ -43,7 +47,9 @@ class CurlTest extends AbstractWebserverTest
|
||||
|
||||
public function testGetRequestHeaders()
|
||||
{
|
||||
$curl = new Curl();
|
||||
$curl = new Curl(array(
|
||||
'proxy_host' => false,
|
||||
));
|
||||
|
||||
$curl->exec(sprintf('http://localhost:%d/curl.txt', WEBSERVER_PORT));
|
||||
$this->assertEquals(132 + self::$websererPortLength, strlen($curl->getRequestHeaders()));
|
||||
@ -54,7 +60,9 @@ class CurlTest extends AbstractWebserverTest
|
||||
|
||||
public function testGetResponse()
|
||||
{
|
||||
$curl = new Curl();
|
||||
$curl = new Curl(array(
|
||||
'proxy_host' => false,
|
||||
));
|
||||
|
||||
$curl->exec(sprintf('http://localhost:%d/curl.txt', WEBSERVER_PORT));
|
||||
$this->assertSame('OK', $curl->getResponseStatusMessage());
|
||||
|
@ -14,13 +14,13 @@ $options = array(
|
||||
'cache_wsdl' => WSDL_CACHE_NONE,
|
||||
'classmap' => array(
|
||||
'base64Binary' => 'BeSimple\SoapClient\Tests\ServerInterop\Fixtures\base64Binary',
|
||||
'AttachmentRequest' => 'BeSimple\SoapClient\Tests\ServerInterop\Fixtures\AttachmentRequest',
|
||||
'AttachmentType' => 'BeSimple\SoapClient\Tests\ServerInterop\Fixtures\AttachmentRequest',
|
||||
),
|
||||
);
|
||||
|
||||
class Mtom
|
||||
{
|
||||
public function attachment(AttachmentRequest $attachment)
|
||||
public function attachment(Fixtures\AttachmentRequest $attachment)
|
||||
{
|
||||
$b64 = $attachment->binaryData;
|
||||
|
||||
|
@ -42,6 +42,8 @@ class SwaServerInteropTest extends TestCase
|
||||
$result = $sc->downloadFile($download);
|
||||
|
||||
$this->assertEquals($upload->data, $result->data);
|
||||
|
||||
unlink(__DIR__.'/../ServerInterop/'.$download->name);
|
||||
}
|
||||
|
||||
public function testUploadDownloadImage()
|
||||
@ -60,5 +62,7 @@ class SwaServerInteropTest extends TestCase
|
||||
$result = $sc->downloadFile($download);
|
||||
|
||||
$this->assertEquals($upload->data, $result->data);
|
||||
|
||||
unlink(__DIR__.'/../ServerInterop/'.$download->name);
|
||||
}
|
||||
}
|
@ -41,7 +41,9 @@ class WsdlDownloaderTest extends AbstractWebserverTest
|
||||
Cache::setDirectory($wsdlCacheUrl);
|
||||
$cacheDirForRegExp = preg_quote($wsdlCacheUrl, '#');
|
||||
|
||||
$wsdlDownloader = new WsdlDownloader(new Curl());
|
||||
$wsdlDownloader = new WsdlDownloader(new Curl(array(
|
||||
'proxy_host' => false,
|
||||
)));
|
||||
$this->assertCount(0, $wsdlCacheDir->getChildren());
|
||||
|
||||
$cacheFileName = $wsdlDownloader->download($source);
|
||||
@ -272,7 +274,7 @@ class WsdlDownloaderTest extends AbstractWebserverTest
|
||||
$content = file_get_contents(self::$fixturesPath.$file);
|
||||
$content = preg_replace('#'.preg_quote('%location%').'#', sprintf('localhost:%d', WEBSERVER_PORT), $content);
|
||||
|
||||
self::$filesystem->dumpFile(self::$fixturesPath.'build_include'.DIRECTORY_SEPARATOR.pathinfo($file, PATHINFO_BASENAME), $content);
|
||||
file_put_contents(self::$fixturesPath.'build_include'.DIRECTORY_SEPARATOR.pathinfo($file, PATHINFO_BASENAME), $content);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -23,12 +23,12 @@ if [ ! -f "$DIR/$ZIP_RAMPART" ]; then
|
||||
curl -O -s $PATH_RAMPART
|
||||
fi
|
||||
|
||||
unzip -qq "$DIR/$ZIP_AXIS"
|
||||
unzip -o -qq "$DIR/$ZIP_AXIS"
|
||||
|
||||
AXIS_DIR=$DIR/axis2-$VERSION_AXIS
|
||||
|
||||
unzip -qq -j "$DIR/$ZIP_RAMPART" '*/lib/*.jar' -d $AXIS_DIR/lib
|
||||
unzip -qq -j "$DIR/$ZIP_RAMPART" '*/modules/*.mar' -d $AXIS_DIR/repository/modules
|
||||
unzip -o -qq -j "$DIR/$ZIP_RAMPART" '*/lib/*.jar' -d $AXIS_DIR/lib
|
||||
unzip -o -qq -j "$DIR/$ZIP_RAMPART" '*/modules/*.mar' -d $AXIS_DIR/repository/modules
|
||||
|
||||
cp -r $DIR/../AxisInterop/axis_services/* $AXIS_DIR/repository/services
|
||||
|
||||
|
@ -27,15 +27,14 @@
|
||||
"ass/xmlsecurity": "~1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"mikey179/vfsStream": "dev-master",
|
||||
"symfony/filesystem": "~2.3",
|
||||
"mikey179/vfsStream": "~1.0",
|
||||
"symfony/filesystem": "~2.0",
|
||||
"symfony/process": "~2.3"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": { "BeSimple\\SoapClient": "" }
|
||||
},
|
||||
"target-dir": "BeSimple/SoapClient",
|
||||
"minimum-stability": "dev",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "0.2-dev"
|
||||
|
@ -26,14 +26,14 @@ class Method
|
||||
private $output;
|
||||
private $fault;
|
||||
|
||||
public function __construct($name, TypeRepository $typeRepository)
|
||||
public function __construct($name)
|
||||
{
|
||||
$this->name = $name;
|
||||
|
||||
$this->headers = new Message($name.'Header', $typeRepository);
|
||||
$this->input = new Message($name.'Request', $typeRepository);
|
||||
$this->output = new Message($name.'Response', $typeRepository);
|
||||
$this->fault = new Message($name.'Fault', $typeRepository);
|
||||
$this->headers = new Message($name.'Header');
|
||||
$this->input = new Message($name.'Request');
|
||||
$this->output = new Message($name.'Response');
|
||||
$this->fault = new Message($name.'Fault');
|
||||
}
|
||||
|
||||
public function getName()
|
||||
|
@ -26,13 +26,12 @@
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-mcrypt": "*",
|
||||
"mikey179/vfsStream": "dev-master"
|
||||
"mikey179/vfsStream": "~1.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": { "BeSimple\\SoapCommon": "" }
|
||||
},
|
||||
"target-dir": "BeSimple/SoapCommon",
|
||||
"minimum-stability": "dev",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "0.2-dev"
|
||||
|
@ -29,7 +29,6 @@
|
||||
"psr-0": { "BeSimple\\SoapServer": "" }
|
||||
},
|
||||
"target-dir": "BeSimple/SoapServer",
|
||||
"minimum-stability": "dev",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "0.2-dev"
|
||||
|
@ -69,6 +69,7 @@ class Dumper
|
||||
'version12_class' => 'BeSimple\\SoapWsdl\\Dumper\\Version12',
|
||||
'version11_name' => $this->definition->getName(),
|
||||
'version12_name' => $this->definition->getName().'12',
|
||||
'stylesheet' => null,
|
||||
);
|
||||
|
||||
$invalid = array();
|
||||
@ -123,6 +124,8 @@ class Dumper
|
||||
|
||||
$this->document->formatOutput = true;
|
||||
|
||||
$this->addStylesheet();
|
||||
|
||||
return $this->document->saveXML();
|
||||
}
|
||||
|
||||
@ -186,7 +189,7 @@ class Dumper
|
||||
protected function addMessages(array $messages)
|
||||
{
|
||||
foreach ($messages as $message) {
|
||||
if ($message->isEmpty()) {
|
||||
if (preg_match('#Header$#', $message->getName()) && $message->isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -282,7 +285,7 @@ class Dumper
|
||||
$operation->setAttribute('name', $method->getName());
|
||||
|
||||
foreach (array('input' => $method->getInput(), 'output' => $method->getOutput(), 'fault' => $method->getFault()) as $type => $message) {
|
||||
if ($message->isEmpty()) {
|
||||
if ('fault' === $type && $message->isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -297,6 +300,15 @@ class Dumper
|
||||
return $operation;
|
||||
}
|
||||
|
||||
protected function addStylesheet()
|
||||
{
|
||||
if ($this->options['stylesheet']) {
|
||||
$stylesheet = $this->document->createProcessingInstruction('xml-stylesheet', sprintf('type="text/xsl" href="%s"', $this->options['stylesheet']));
|
||||
|
||||
$this->document->insertBefore($stylesheet, $this->document->documentElement);
|
||||
}
|
||||
}
|
||||
|
||||
protected function getVersion($version)
|
||||
{
|
||||
if (\SOAP_1_2 === $version) {
|
||||
|
@ -22,7 +22,6 @@
|
||||
"psr-0": { "BeSimple\\SoapWsdl": "" }
|
||||
},
|
||||
"target-dir": "BeSimple/SoapWsdl",
|
||||
"minimum-stability": "dev",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "0.2-dev"
|
||||
|
Reference in New Issue
Block a user