Merge pull request #7 from aschamberger/master
Sync Server with Client and fix some coding standard issues
This commit is contained in:
commit
ef0361df59
|
@ -13,7 +13,6 @@
|
||||||
namespace BeSimple\SoapClient;
|
namespace BeSimple\SoapClient;
|
||||||
|
|
||||||
use BeSimple\SoapCommon\Helper;
|
use BeSimple\SoapCommon\Helper;
|
||||||
use BeSimple\SoapCommon\SoapKernel;
|
|
||||||
use BeSimple\SoapCommon\Converter\MtomTypeConverter;
|
use BeSimple\SoapCommon\Converter\MtomTypeConverter;
|
||||||
use BeSimple\SoapCommon\Converter\SwaTypeConverter;
|
use BeSimple\SoapCommon\Converter\SwaTypeConverter;
|
||||||
|
|
||||||
|
@ -77,9 +76,9 @@ class SoapClient extends \SoapClient
|
||||||
private $lastResponse = '';
|
private $lastResponse = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Last response.
|
* Soap kernel.
|
||||||
*
|
*
|
||||||
* @var \BeSimple\SoapCommon\SoapKernel
|
* @var \BeSimple\SoapClient\SoapKernel
|
||||||
*/
|
*/
|
||||||
protected $soapKernel = null;
|
protected $soapKernel = null;
|
||||||
|
|
||||||
|
@ -252,7 +251,7 @@ class SoapClient extends \SoapClient
|
||||||
/**
|
/**
|
||||||
* Get SoapKernel instance.
|
* Get SoapKernel instance.
|
||||||
*
|
*
|
||||||
* @return \BeSimple\SoapCommon\SoapKernel
|
* @return \BeSimple\SoapClient\SoapKernel
|
||||||
*/
|
*/
|
||||||
public function getSoapKernel()
|
public function getSoapKernel()
|
||||||
{
|
{
|
||||||
|
@ -286,7 +285,6 @@ class SoapClient extends \SoapClient
|
||||||
if (!isset($options['typemap'])) {
|
if (!isset($options['typemap'])) {
|
||||||
$options['typemap'] = array();
|
$options['typemap'] = array();
|
||||||
}
|
}
|
||||||
$soapKernel = $this->soapKernel;
|
|
||||||
$options['typemap'][] = array(
|
$options['typemap'][] = array(
|
||||||
'type_name' => $converter->getTypeName(),
|
'type_name' => $converter->getTypeName(),
|
||||||
'type_ns' => $converter->getTypeNamespace(),
|
'type_ns' => $converter->getTypeNamespace(),
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
namespace BeSimple\SoapClient;
|
namespace BeSimple\SoapClient;
|
||||||
|
|
||||||
use BeSimple\SoapCommon\AbstractSoapBuilder;
|
use BeSimple\SoapCommon\AbstractSoapBuilder;
|
||||||
|
use BeSimple\SoapCommon\Helper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fluent interface builder for SoapClient instance.
|
* Fluent interface builder for SoapClient instance.
|
||||||
|
@ -192,6 +193,42 @@ class SoapClientBuilder extends AbstractSoapBuilder
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SOAP attachment type Base64.
|
||||||
|
*
|
||||||
|
* @return \BeSimple\SoapServer\SoapServerBuilder
|
||||||
|
*/
|
||||||
|
public function withBase64Attachments()
|
||||||
|
{
|
||||||
|
$this->options['attachment_type'] = Helper::ATTACHMENTS_TYPE_BASE64;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SOAP attachment type SwA.
|
||||||
|
*
|
||||||
|
* @return \BeSimple\SoapServer\SoapServerBuilder
|
||||||
|
*/
|
||||||
|
public function withSwaAttachments()
|
||||||
|
{
|
||||||
|
$this->options['attachment_type'] = Helper::ATTACHMENTS_TYPE_SWA;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SOAP attachment type MTOM.
|
||||||
|
*
|
||||||
|
* @return \BeSimple\SoapServer\SoapServerBuilder
|
||||||
|
*/
|
||||||
|
public function withMtomAttachments()
|
||||||
|
{
|
||||||
|
$this->options['attachment_type'] = Helper::ATTACHMENTS_TYPE_MTOM;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validate options.
|
* Validate options.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the BeSimpleSoapCommon.
|
||||||
|
*
|
||||||
|
* (c) Christian Kerl <christian-kerl@web.de>
|
||||||
|
* (c) Francis Besset <francis.besset@gmail.com>
|
||||||
|
* (c) Andreas Schamberger <mail@andreass.net>
|
||||||
|
*
|
||||||
|
* This source file is subject to the MIT license that is bundled
|
||||||
|
* with this source code in the file LICENSE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace BeSimple\SoapClient;
|
||||||
|
|
||||||
|
use BeSimple\SoapCommon\SoapKernel as CommonSoapKernel;
|
||||||
|
use BeSimple\SoapCommon\SoapRequest;
|
||||||
|
use BeSimple\SoapCommon\SoapResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SoapKernel for Client.
|
||||||
|
*
|
||||||
|
* @author Andreas Schamberger <mail@andreass.net>
|
||||||
|
*/
|
||||||
|
class SoapKernel extends CommonSoapKernel
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function filterRequest(SoapRequest $request)
|
||||||
|
{
|
||||||
|
$request->setAttachments($this->attachments);
|
||||||
|
$this->attachments = array();
|
||||||
|
|
||||||
|
parent::filterRequest($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function filterResponse(SoapResponse $response)
|
||||||
|
{
|
||||||
|
parent::filterResponse($response);
|
||||||
|
|
||||||
|
$this->attachments = $response->getAttachments();
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,7 +5,37 @@ use BeSimple\SoapClient\SoapClient as BeSimpleSoapClient;
|
||||||
|
|
||||||
require '../bootstrap.php';
|
require '../bootstrap.php';
|
||||||
|
|
||||||
echo '<pre>';
|
class base64Binary
|
||||||
|
{
|
||||||
|
public $_;
|
||||||
|
public $contentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AttachmentType
|
||||||
|
{
|
||||||
|
public $fileName;
|
||||||
|
public $binaryData;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AttachmentRequest extends AttachmentType
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
class base64Binary
|
||||||
|
{
|
||||||
|
public $_;
|
||||||
|
public $contentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AttachmentType
|
||||||
|
{
|
||||||
|
public $fileName;
|
||||||
|
public $binaryData;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AttachmentRequest extends AttachmentType
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
class base64Binary
|
class base64Binary
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,8 +5,6 @@ use BeSimple\SoapClient\SoapClient as BeSimpleSoapClient;
|
||||||
|
|
||||||
require '../bootstrap.php';
|
require '../bootstrap.php';
|
||||||
|
|
||||||
echo '<pre>';
|
|
||||||
|
|
||||||
$options = array(
|
$options = array(
|
||||||
'soap_version' => SOAP_1_1,
|
'soap_version' => SOAP_1_1,
|
||||||
'features' => SOAP_SINGLE_ELEMENT_ARRAYS, // make sure that result is array for size=1
|
'features' => SOAP_SINGLE_ELEMENT_ARRAYS, // make sure that result is array for size=1
|
||||||
|
|
|
@ -5,8 +5,6 @@ use BeSimple\SoapClient\WsAddressingFilter as BeSimpleWsAddressingFilter;
|
||||||
|
|
||||||
require '../bootstrap.php';
|
require '../bootstrap.php';
|
||||||
|
|
||||||
echo '<pre>';
|
|
||||||
|
|
||||||
$options = array(
|
$options = array(
|
||||||
'soap_version' => SOAP_1_2,
|
'soap_version' => SOAP_1_2,
|
||||||
'features' => SOAP_SINGLE_ELEMENT_ARRAYS, // make sure that result is array for size=1
|
'features' => SOAP_SINGLE_ELEMENT_ARRAYS, // make sure that result is array for size=1
|
||||||
|
|
|
@ -5,8 +5,6 @@ use BeSimple\SoapClient\WsSecurityFilter as BeSimpleWsSecurityFilter;
|
||||||
|
|
||||||
require '../bootstrap.php';
|
require '../bootstrap.php';
|
||||||
|
|
||||||
echo '<pre>';
|
|
||||||
|
|
||||||
$options = array(
|
$options = array(
|
||||||
'soap_version' => SOAP_1_2,
|
'soap_version' => SOAP_1_2,
|
||||||
'features' => SOAP_SINGLE_ELEMENT_ARRAYS, // make sure that result is array for size=1
|
'features' => SOAP_SINGLE_ELEMENT_ARRAYS, // make sure that result is array for size=1
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use BeSimple\SoapCommon\Helper as BeSimpleSoapHelper;
|
||||||
|
use BeSimple\SoapClient\SoapClient as BeSimpleSoapClient;
|
||||||
|
|
||||||
|
require '../bootstrap.php';
|
||||||
|
|
||||||
|
class base64Binary
|
||||||
|
{
|
||||||
|
public $_;
|
||||||
|
public $contentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AttachmentType
|
||||||
|
{
|
||||||
|
public $fileName;
|
||||||
|
public $binaryData;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AttachmentRequest extends AttachmentType
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
$options = array(
|
||||||
|
'soap_version' => SOAP_1_1,
|
||||||
|
'features' => SOAP_SINGLE_ELEMENT_ARRAYS, // make sure that result is array for size=1
|
||||||
|
'trace' => true, // enables use of the methods SoapClient->__getLastRequest, SoapClient->__getLastRequestHeaders, SoapClient->__getLastResponse and SoapClient->__getLastResponseHeaders
|
||||||
|
'attachment_type' => BeSimpleSoapHelper::ATTACHMENTS_TYPE_MTOM,
|
||||||
|
'cache_wsdl' => WSDL_CACHE_NONE,
|
||||||
|
'classmap' => array(
|
||||||
|
'base64Binary' => 'base64Binary',
|
||||||
|
'AttachmentRequest' => 'AttachmentRequest',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
$sc = new BeSimpleSoapClient('MTOM.wsdl', $options);
|
||||||
|
|
||||||
|
//var_dump($sc->__getFunctions());
|
||||||
|
//var_dump($sc->__getTypes());
|
||||||
|
|
||||||
|
try {
|
||||||
|
$b64 = new base64Binary();
|
||||||
|
$b64->_ = 'This is a test. :)';
|
||||||
|
$b64->contentType = 'text/plain';
|
||||||
|
|
||||||
|
$attachment = new AttachmentRequest();
|
||||||
|
$attachment->fileName = 'test123.txt';
|
||||||
|
$attachment->binaryData = $b64;
|
||||||
|
|
||||||
|
var_dump($sc->attachment($attachment));
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
var_dump($e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// var_dump(
|
||||||
|
// $sc->__getLastRequestHeaders(),
|
||||||
|
// $sc->__getLastRequest(),
|
||||||
|
// $sc->__getLastResponseHeaders(),
|
||||||
|
// $sc->__getLastResponse()
|
||||||
|
// );
|
|
@ -0,0 +1,89 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<definitions targetNamespace="http://ws.apache.org/axis2/mtomsample/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://ws.apache.org/axis2/mtomsample/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/">
|
||||||
|
<types>
|
||||||
|
<xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://ws.apache.org/axis2/mtomsample/" xmlns="http://schemas.xmlsoap.org/wsdl/">
|
||||||
|
<xsd:import namespace="http://www.w3.org/2005/05/xmlmime"/>
|
||||||
|
<xsd:complexType name="AttachmentType">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element minOccurs="0" name="fileName" type="xsd:string"/>
|
||||||
|
<xsd:element minOccurs="0" name="binaryData" type="xmime:base64Binary"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="AttachmentRequest" type="tns:AttachmentType"/>
|
||||||
|
<xsd:element name="AttachmentResponse" type="xsd:string"/>
|
||||||
|
</xsd:schema>
|
||||||
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://www.w3.org/2005/05/xmlmime">
|
||||||
|
<xs:attribute name="contentType">
|
||||||
|
<xs:simpleType>
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:minLength value="3"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="expectedContentTypes" type="xs:string"/>
|
||||||
|
<xs:complexType name="base64Binary">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:base64Binary">
|
||||||
|
<xs:attribute ref="xmime:contentType"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="hexBinary">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:hexBinary">
|
||||||
|
<xs:attribute ref="xmime:contentType"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:schema>
|
||||||
|
|
||||||
|
</types>
|
||||||
|
<message name="AttachmentResponse">
|
||||||
|
<part name="part1" element="tns:AttachmentResponse">
|
||||||
|
</part>
|
||||||
|
</message>
|
||||||
|
<message name="AttachmentRequest">
|
||||||
|
<part name="part1" element="tns:AttachmentRequest">
|
||||||
|
</part>
|
||||||
|
</message>
|
||||||
|
<portType name="MTOMServicePortType">
|
||||||
|
<operation name="attachment">
|
||||||
|
<input message="tns:AttachmentRequest" wsaw:Action="attachment">
|
||||||
|
</input>
|
||||||
|
<output message="tns:AttachmentResponse" wsaw:Action="http://schemas.xmlsoap.org/wsdl/MTOMServicePortType/AttachmentResponse">
|
||||||
|
</output>
|
||||||
|
</operation>
|
||||||
|
</portType>
|
||||||
|
<binding name="MTOMServiceSOAP11Binding" type="tns:MTOMServicePortType">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<operation name="attachment">
|
||||||
|
<soap:operation soapAction="attachment" style="document"/>
|
||||||
|
<input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</output>
|
||||||
|
</operation>
|
||||||
|
</binding>
|
||||||
|
<binding name="MTOMServiceSOAP12Binding" type="tns:MTOMServicePortType">
|
||||||
|
<soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<operation name="attachment">
|
||||||
|
<soap12:operation soapAction="attachment" style="document"/>
|
||||||
|
<input>
|
||||||
|
<soap12:body use="literal"/>
|
||||||
|
</input>
|
||||||
|
<output>
|
||||||
|
<soap12:body use="literal"/>
|
||||||
|
</output>
|
||||||
|
</operation>
|
||||||
|
</binding>
|
||||||
|
<service name="MTOMSample">
|
||||||
|
<port name="MTOMSampleSOAP12port_http" binding="tns:MTOMServiceSOAP12Binding">
|
||||||
|
<soap12:address location="http://web/BeSimpleSoapClient/tests/ServerInterop/MTOMServer.php"/>
|
||||||
|
</port>
|
||||||
|
<port name="MTOMSampleSOAP11port_http" binding="tns:MTOMServiceSOAP11Binding">
|
||||||
|
<soap:address location="http://web/BeSimpleSoapClient/tests/ServerInterop/MTOMServer.php"/>
|
||||||
|
</port>
|
||||||
|
</service>
|
||||||
|
</definitions>
|
|
@ -0,0 +1,53 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use BeSimple\SoapCommon\Helper as BeSimpleSoapHelper;
|
||||||
|
use BeSimple\SoapServer\SoapServer as BeSimpleSoapServer;
|
||||||
|
|
||||||
|
require '../../../BeSimpleSoapServer/tests/bootstrap.php';
|
||||||
|
|
||||||
|
class base64Binary
|
||||||
|
{
|
||||||
|
public $_;
|
||||||
|
public $contentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AttachmentType
|
||||||
|
{
|
||||||
|
public $fileName;
|
||||||
|
public $binaryData;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AttachmentRequest extends AttachmentType
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
$options = array(
|
||||||
|
'soap_version' => SOAP_1_1,
|
||||||
|
'features' => SOAP_SINGLE_ELEMENT_ARRAYS, // make sure that result is array for size=1
|
||||||
|
'attachment_type' => BeSimpleSoapHelper::ATTACHMENTS_TYPE_MTOM,
|
||||||
|
'cache_wsdl' => WSDL_CACHE_NONE,
|
||||||
|
'classmap' => array(
|
||||||
|
'base64Binary' => 'base64Binary',
|
||||||
|
'AttachmentRequest' => 'AttachmentRequest',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
class Mtom
|
||||||
|
{
|
||||||
|
public function attachment(AttachmentRequest $attachment)
|
||||||
|
{
|
||||||
|
$b64 = $attachment->binaryData;
|
||||||
|
|
||||||
|
file_put_contents('test.txt', var_export(array(
|
||||||
|
$attachment->fileName,
|
||||||
|
$b64->_,
|
||||||
|
$b64->contentType
|
||||||
|
), true));
|
||||||
|
|
||||||
|
return 'done';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$ss = new BeSimpleSoapServer('MTOM.wsdl', $options);
|
||||||
|
$ss->setClass('Mtom');
|
||||||
|
$ss->handle();
|
Loading…
Reference in New Issue