Iik7DQokc29hcF9iYXNlID0gbmV3IFNPQVBfQmFzZSgpOw0KDQokdiA9ICBuZXcgU09BUF9BdHRh
Y2htZW50KCd0ZXN0JywndGV4dC9wbGFpbicsJ2F0dGFjaG1lbnQucGhwJyk7DQokbWV0aG9kVmFs
dWUgPSBuZXcgU09BUF9WYWx1ZSgndGVzdGF0dGFjaCcsICdTdHJ1Y3QnLCBhcnJheSgkdikpOw0K
DQovLyBzZWUgdGhlIG1pbWUgYXJyYXkNCi8vJHZhbCA9ICRzb2FwX2Jhc2UtPl9tYWtlRW52ZWxv
cGUoJG1ldGhvZFZhbHVlKTsNCi8vcHJpbnRfcigkdmFsKTsNCg0KJGNsaWVudCA9IG5ldyBTT0FQ
X0NsaWVudCgnaHR0cDovL2xvY2FsaG9zdC9zb2FwX2ludGVyb3Avc2VydmVyX3JvdW5kMi5waHAn
KTsNCiRyZXNwID0gJGNsaWVudC0+Y2FsbCgnZWNob01pbWVBdHRhY2htZW50JyxhcnJheSgkdikp
Ow0KI3ByaW50X3IoJHJlc3ApOw0KcHJpbnQgJGNsaWVudC0+d2lyZTsNCj8+
--=_a2cbb051424cc43e72d3c8c8d0b8f70e--
';
$debug = FALSE;
$data = NULL;
$f = fopen('/tmp/dime.data', 'wb+');
$dime = new Net_DIME_Message($f, 4096, $debug);
$dime->sendData($test);
#$dime->sendData($test);
$dime->sendEndMessage();
$size = ftell($f);
print "filesize: {$size}, datasize: " . strlen($test) . "\n";
rewind($f);
$dime = new Net_DIME_Message($f, 4096, $debug);
$err = $dime->read();
if (PEAR::isError($err)) {
    print $err->getMessage() . "\n";
} else {
    if (strcmp($dime->parts[0]['data'], $test) == 0) {
        echo "encode/decode success\n";
    } else {
        echo "encode/decode failure\n";
    }
}
예제 #2
0
 function _decodeDIMEMessage(&$data, &$headers, &$attachments)
 {
     if (!@(include_once 'Net/DIME.php')) {
         return $this->_raiseSoapFault('DIME messages are unsupported, the Net_DIME package is not installed');
     }
     // This SHOULD be moved to the transport layer, e.g. PHP itself should
     // handle parsing DIME ;)
     $dime = new Net_DIME_Message();
     $err = $dime->decodeData($data);
     if (PEAR::isError($err)) {
         $this->_raiseSoapFault('Failed to decode the DIME message!', '', '', 'Server');
         return;
     }
     if (strcasecmp($dime->parts[0]['type'], SOAP_ENVELOP) != 0) {
         $this->_raiseSoapFault('DIME record 1 is not a SOAP envelop!', '', '', 'Server');
         return;
     }
     $data = $dime->parts[0]['data'];
     // Fake it for now.
     $headers['content-type'] = 'text/xml';
     $c = count($dime->parts);
     for ($i = 0; $i < $c; $i++) {
         $part =& $dime->parts[$i];
         // We need to handle URI's better.
         $id = strncmp($part['id'], 'cid:', 4) ? 'cid:' . $part['id'] : $part['id'];
         $attachments[$id] = $part['data'];
     }
 }
예제 #3
0
파일: Base.php 프로젝트: rolwi/koala
 function _makeDIMEMessage($xml)
 {
     if (!@(include_once 'Net/DIME.php')) {
         return $this->_raiseSoapFault('DIME messages are unsupported, the Net_DIME package is not installed');
     }
     // Encode any attachments.  See
     // http://search.ietf.org/internet-drafts/draft-nielsen-dime-soap-00.txt
     // Now we have to DIME encode the message
     $dime = new Net_DIME_Message();
     $msg = $dime->encodeData($xml, SOAP_ENVELOP, null, NET_DIME_TYPE_URI);
     // Add the attachments.
     $c = count($this->_attachments);
     for ($i = 0; $i < $c; $i++) {
         $msg .= $dime->encodeData($this->_attachments[$i]['body'], $this->_attachments[$i]['content_type'], $this->_attachments[$i]['cid'], NET_DIME_TYPE_MEDIA);
     }
     $msg .= $dime->endMessage();
     return $msg;
 }
예제 #4
0
 function _decodeDIMEMessage(&$data, &$headers, &$attachments)
 {
     global $SOAP_options;
     if (!isset($SOAP_options['DIME'])) {
         $this->_raiseSoapFault('DIME Unsupported, install PEAR::Net::DIME', '', '', 'Server');
         return;
     }
     // XXX this SHOULD be moved to the transport layer, e.g. PHP itself
     // should handle parsing DIME ;)
     $dime = new Net_DIME_Message();
     $err = $dime->decodeData($data);
     if (PEAR::isError($err)) {
         $this->_raiseSoapFault('Failed to decode the DIME message!', '', '', 'Server');
         return;
     }
     if (strcasecmp($dime->parts[0]['type'], SOAP_ENVELOP) != 0) {
         $this->_raiseSoapFault('DIME record 1 is not a SOAP envelop!', '', '', 'Server');
         return;
     }
     $data = $dime->parts[0]['data'];
     // fake it for now
     $headers['content-type'] = 'text/xml';
     $c = count($dime->parts);
     for ($i = 0; $i < $c; $i++) {
         $part =& $dime->parts[$i];
         // XXX we need to handle URI's better.
         $id = strncmp($part['id'], 'cid:', 4) ? 'cid:' . $part['id'] : $part['id'];
         $attachments[$id] = $part['data'];
     }
 }