107 lines
3.6 KiB
PHP
107 lines
3.6 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace BeSimple\SoapServer\Tests;
|
||
|
|
||
|
use BeSimple\SoapBundle\Soap\SoapAttachment;
|
||
|
use BeSimple\SoapCommon\AttachmentsHandlerInterface;
|
||
|
use BeSimple\SoapCommon\Storage\RequestHandlerAttachmentsStorage;
|
||
|
use BeSimple\SoapServer\Tests\Attachment\Attachment;
|
||
|
use BeSimple\SoapServer\Tests\Attachment\AttachmentCollection;
|
||
|
use ReflectionClass;
|
||
|
|
||
|
class DummyService implements AttachmentsHandlerInterface
|
||
|
{
|
||
|
/** @var RequestHandlerAttachmentsStorage */
|
||
|
private $requestHandlerAttachmentsStorage;
|
||
|
|
||
|
public function addAttachmentStorage(RequestHandlerAttachmentsStorage $requestHandlerAttachmentsStorage)
|
||
|
{
|
||
|
$this->requestHandlerAttachmentsStorage = $requestHandlerAttachmentsStorage;
|
||
|
}
|
||
|
|
||
|
public function getAttachmentStorage()
|
||
|
{
|
||
|
return $this->requestHandlerAttachmentsStorage;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string[]
|
||
|
*/
|
||
|
public function getClassMap()
|
||
|
{
|
||
|
return [
|
||
|
'DummyServiceResponse' => DummyServiceResponse::class,
|
||
|
'DummyServiceResponseWithAttachments' => DummyServiceResponseWithAttachments::class,
|
||
|
'DummyServiceRequest' => DummyServiceRequest::class,
|
||
|
'DummyServiceRequestWithAttachments' => DummyServiceRequestWithAttachments::class,
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @exclude
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getWsdlPath()
|
||
|
{
|
||
|
$class = new ReflectionClass(static::class);
|
||
|
|
||
|
return __DIR__.DIRECTORY_SEPARATOR.$class->getShortName().'.wsdl';
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getEndpoint()
|
||
|
{
|
||
|
return 'http://my.test/soap/dummyService';
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param DummyServiceRequest $dummyServiceRequest
|
||
|
* @return DummyServiceResponse
|
||
|
*/
|
||
|
public function dummyServiceMethod(DummyServiceRequest $dummyServiceRequest)
|
||
|
{
|
||
|
$dummyServiceHandler = new DummyServiceHandler();
|
||
|
|
||
|
return $dummyServiceHandler->handle($dummyServiceRequest);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param DummyServiceRequestWithAttachments $dummyServiceRequestWithAttachments
|
||
|
* @return DummyServiceResponseWithAttachments
|
||
|
*/
|
||
|
public function dummyServiceMethodWithAttachments(DummyServiceRequestWithAttachments $dummyServiceRequestWithAttachments)
|
||
|
{
|
||
|
if ($dummyServiceRequestWithAttachments->hasAttachments() === true) {
|
||
|
$attachmentStorage = $this->getAttachmentStorage();
|
||
|
$attachments = [];
|
||
|
foreach ($attachmentStorage->getAttachments() as $soapAttachment) {
|
||
|
$attachments[] = new Attachment(
|
||
|
$soapAttachment->getId(),
|
||
|
$soapAttachment->getType(),
|
||
|
$soapAttachment->getContent()
|
||
|
);
|
||
|
}
|
||
|
$dummyServiceRequestWithAttachments->attachmentCollection = new AttachmentCollection($attachments);
|
||
|
}
|
||
|
|
||
|
$dummyServiceHandlerWithAttachments = new DummyServiceHandlerWithAttachments();
|
||
|
$dummyServiceResponseWithAttachments = $dummyServiceHandlerWithAttachments->handle($dummyServiceRequestWithAttachments);
|
||
|
|
||
|
if ($dummyServiceResponseWithAttachments->hasAttachments() === true) {
|
||
|
$soapAttachments = [];
|
||
|
foreach ($dummyServiceResponseWithAttachments->attachmentCollection->attachments as $attachment) {
|
||
|
$soapAttachments[] = new SoapAttachment(
|
||
|
$attachment->fileName,
|
||
|
$attachment->contentType,
|
||
|
$attachment->content
|
||
|
);
|
||
|
}
|
||
|
$this->addAttachmentStorage(new RequestHandlerAttachmentsStorage($soapAttachments));
|
||
|
}
|
||
|
|
||
|
return $dummyServiceResponseWithAttachments;
|
||
|
}
|
||
|
}
|