protected function initializeMtomSoapMessage(array $contentTypeHeader, $content)
 {
     if (!isset($contentTypeHeader['start']) || !isset($contentTypeHeader['start-info']) || !isset($contentTypeHeader['boundary'])) {
         throw new \InvalidArgumentException();
     }
     $mimeMessage = Message::createFromMessage($content, $contentTypeHeader['boundary']);
     $mimeParts = $mimeMessage->getParts();
     $soapMimePartId = trim($contentTypeHeader['start'], '<>');
     $soapMimePartType = $contentTypeHeader['start-info'];
     $rootPart = array_shift($mimeParts);
     $rootPartType = $this->splitContentTypeHeader($rootPart->type);
     // TODO: add more checks to achieve full compatibility to MTOM spec
     // http://www.w3.org/TR/soap12-mtom/
     if ($rootPart->id != $soapMimePartId || $rootPartType['_type'] != 'application/xop+xml' || $rootPartType['type'] != $soapMimePartType) {
         throw new \InvalidArgumentException();
     }
     foreach ($mimeParts as $mimePart) {
         $this->soapAttachments->add(new SoapAttachment($mimePart->id, $mimePart->type, $mimePart->getContent()));
     }
     // handle content decoding / prevent encoding
     return $rootPart->getContent();
 }
 /**
  * @param SoapHeader $soapHeader
  */
 public function addSoapHeader(SoapHeader $soapHeader)
 {
     $this->soapHeaders->add($soapHeader);
 }
 private function createComplexTypeCollection(array $properties)
 {
     $collection = new Collection('getName', 'BeSimple\\SoapBundle\\ServiceDefinition\\ComplexType');
     foreach ($properties as $property) {
         $complexType = new Definition\ComplexType();
         $complexType->setName($property[0]);
         $complexType->setValue($property[1]);
         if (isset($property[2])) {
             $complexType->setNillable($property[2]);
         }
         $collection->add($complexType);
     }
     return array('properties' => $collection);
 }