/**
  * Modify the given request XML.
  *
  * @param \BeSimple\SoapCommon\SoapRequest $request SOAP request
  *
  * @return void
  */
 public function filterRequest(SoapRequest $request)
 {
     // get attachments from request object
     $attachmentsToSend = $request->getAttachments();
     // build mime message if we have attachments
     if (count($attachmentsToSend) > 0) {
         $multipart = new MimeMultiPart();
         $soapPart = new MimePart($request->getContent(), 'text/xml', 'utf-8', MimePart::ENCODING_EIGHT_BIT);
         $soapVersion = $request->getVersion();
         // change content type headers for MTOM with SOAP 1.1
         if ($soapVersion == SOAP_1_1 && $this->attachmentType & Helper::ATTACHMENTS_TYPE_MTOM) {
             $multipart->setHeader('Content-Type', 'type', 'application/xop+xml');
             $multipart->setHeader('Content-Type', 'start-info', 'text/xml');
             $soapPart->setHeader('Content-Type', 'application/xop+xml');
             $soapPart->setHeader('Content-Type', 'type', 'text/xml');
         } elseif ($soapVersion == SOAP_1_2) {
             $multipart->setHeader('Content-Type', 'type', 'application/soap+xml');
             $soapPart->setHeader('Content-Type', 'application/soap+xml');
         }
         $multipart->addPart($soapPart, true);
         foreach ($attachmentsToSend as $cid => $attachment) {
             $multipart->addPart($attachment, false);
         }
         $request->setContent($multipart->getMimeMessage());
         // TODO
         $headers = $multipart->getHeadersForHttp();
         list(, $contentType) = explode(': ', $headers[0]);
         $request->setContentType($contentType);
     }
 }
Beispiel #2
0
 private function assertsForWsiMtomRequest(MultiPart $mp)
 {
     $this->assertEquals('multipart/related', $mp->getHeader('Content-Type'));
     $this->assertEquals('application/xop+xml', $mp->getHeader('Content-Type', 'type'));
     $this->assertEquals('utf-8', $mp->getHeader('Content-Type', 'charset'));
     $this->assertEquals('<http://tempuri.org/0>', $mp->getHeader('Content-Type', 'start'));
     $this->assertEquals('application/soap+xml', $mp->getHeader('Content-Type', 'start-info'));
     $this->assertEquals('uuid:0ca0e16e-feb1-426c-97d8-c4508ada5e82+id=7', $mp->getHeader('Content-Type', 'boundary'));
     $this->assertEquals('1941', $mp->getHeader('Content-Length'));
     $this->assertEquals('131.107.72.15', $mp->getHeader('Host'));
     $this->assertEquals('100-continue', $mp->getHeader('Expect'));
     $p1 = $mp->getPart('http://tempuri.org/0');
     $this->assertInstanceOf('BeSimple\\SoapCommon\\Mime\\Part', $p1);
     $this->assertEquals('8bit', $p1->getHeader('Content-Transfer-Encoding'));
     $this->assertEquals('application/xop+xml', $p1->getHeader('Content-Type'));
     $this->assertEquals('utf-8', $p1->getHeader('Content-Type', 'charset'));
     $this->assertEquals('application/soap+xml', $p1->getHeader('Content-Type', 'type'));
     $this->assertEquals(737, strlen($p1->getContent()));
     $p2 = $mp->getPart('http://tempuri.org/1/632618206527087310');
     $this->assertInstanceOf('BeSimple\\SoapCommon\\Mime\\Part', $p1);
     $this->assertEquals('binary', $p2->getHeader('Content-Transfer-Encoding'));
     $this->assertEquals('application/octet-stream', $p2->getHeader('Content-Type'));
     $this->assertEquals(769, strlen($p2->getContent()));
 }
Beispiel #3
0
 public function testGetParts()
 {
     $mp = new MultiPart();
     $p1 = new Part('test');
     $mp->addPart($p1, true);
     $p2 = new Part('test');
     $mp->addPart($p2);
     $withoutMain = array(trim($p2->getHeader('Content-ID'), '<>') => $p2);
     $this->assertEquals($withoutMain, $mp->getParts());
     $withMain = array(trim($p1->getHeader('Content-ID'), '<>') => $p1, trim($p2->getHeader('Content-ID'), '<>') => $p2);
     $this->assertEquals($withMain, $mp->getParts(true));
 }