Ejemplo n.º 1
0
 public function encode($data, $human_readable = false)
 {
     $this->init();
     require_once $this->path . 'OutputStream.php';
     require_once $this->path . 'Amf3/Serializer.php';
     $stream = new Zend_Amf_Parse_OutputStream();
     $serializer = new Zend_Amf_Parse_Amf3_Serializer($stream);
     $serializer->writeTypeMarker($data);
     return $stream->getStream();
 }
Ejemplo n.º 2
0
 /**
  * Serialize a PHP value to AMF3 format
  *
  * @param  mixed $value
  * @param  array $opts
  * @return string
  * @throws Zend_Serializer_Exception
  */
 public function serialize($value, array $opts = array())
 {
     try {
         $stream = new Zend_Amf_Parse_OutputStream();
         $serializer = new Zend_Amf_Parse_Amf3_Serializer($stream);
         $serializer->writeTypeMarker($value);
         return $stream->getStream();
     } catch (Exception $e) {
         throw new Zend_Serializer_Exception('Serialization failed by previous error', 0, $e);
     }
 }
Ejemplo n.º 3
0
 /**
  * Serialize a PHP value to AMF0 format
  *
  * @param  mixed $value
  * @param  array $opts
  * @return string
  * @throws Zend_Serializer_Exception
  */
 public function serialize($value, array $opts = array())
 {
     try {
         $stream = new Zend_Amf_Parse_OutputStream();
         $serializer = new Zend_Amf_Parse_Amf0_Serializer($stream);
         $serializer->writeTypeMarker($value);
         return $stream->getStream();
     } catch (Exception $e) {
         require_once PHP_LIBRARY_PATH . 'Zend/Serializer/Exception.php';
         throw new Zend_Serializer_Exception('Serialization failed by previous error', 0, $e);
     }
 }
Ejemplo n.º 4
0
 /**
  * Return the output stream content
  *
  * @return string The contents of the output stream
  */
 public function getResponse()
 {
     return $this->_outputStream->getStream();
 }
Ejemplo n.º 5
0
 public function sendData($data)
 {
     header("Cache-Control: no-cache, must-revalidate");
     header("Expires: 0");
     header('Content-Type: ' . $this->format);
     if ($this->format == RestFormat::AMF) {
         require_once 'Zend/Amf/Parse/OutputStream.php';
         require_once 'Zend/Amf/Parse/Amf3/Serializer.php';
         $stream = new Zend_Amf_Parse_OutputStream();
         $serializer = new Zend_Amf_Parse_Amf3_Serializer($stream);
         $serializer->writeTypeMarker($data);
         $data = $stream->getStream();
     } else {
         if (is_object($data) && method_exists($data, '__keepOut')) {
             $data = clone $data;
             foreach ($data->__keepOut() as $prop) {
                 unset($data->{$prop});
             }
         }
         $data = json_encode($data);
         if ($data && $this->mode == 'debug') {
             $data = $this->json_format($data);
         }
     }
     echo $data;
 }
Ejemplo n.º 6
0
 public function sendData($data)
 {
     header('Content-Type: ' . $this->format);
     if ($this->format == RestFormat::AMF) {
         require_once 'Zend/Amf/Parse/OutputStream.php';
         require_once 'Zend/Amf/Parse/Amf3/Serializer.php';
         $stream = new Zend_Amf_Parse_OutputStream();
         $serializer = new Zend_Amf_Parse_Amf3_Serializer($stream);
         $serializer->writeTypeMarker($data);
         $data = $stream->getStream();
     } else {
         if ($this->format == RestFormat::XML) {
             $data = ArrayToXML::toXml($data);
         } else {
             $data = json_encode($data);
             if ($data && $this->mode == 'debug') {
                 $data = $this->json_format($data);
                 $mathes = array();
                 $pattern = '/"new Date\\([0-9\\,\\s]*\\)"/';
                 $matches = array();
                 preg_match_all($pattern, $data, $matches);
                 $matches = $matches[0];
                 foreach ($matches as $match) {
                     $tmpStrLen = strlen($match);
                     $tmpStr = substr($match, 1, $tmpStrLen - 2);
                     $data = str_replace($match, $tmpStr, $data);
                 }
             }
         }
     }
     echo $data;
 }
Ejemplo n.º 7
0
 public function getHttpPost()
 {
     //if($this->post_data)
     //	return $this->post_data;
     $stream = new Zend_Amf_Parse_OutputStream();
     $stream->writeByte(0x0);
     $stream->writeByte($this->_objectEncoding);
     $headerCount = count($this->_headers);
     $stream->writeInt($headerCount);
     foreach ($this->getAmfHeaders() as $header) {
         $serializer = new Zend_Amf_Parse_Amf0_Serializer($stream);
         $stream->writeUTF($header->name);
         $stream->writeByte($header->mustRead);
         $stream->writeLong(Zend_Amf_Constants::UNKNOWN_CONTENT_LENGTH);
         $serializer->writeTypeMarker($header->data);
     }
     // loop through the AMF bodies that need to be returned.
     $bodyCount = count($this->_bodies);
     $stream->writeInt($bodyCount);
     foreach ($this->_bodies as $body) {
         $serializer = new Zend_Amf_Parse_Amf0_Serializer($stream);
         $stream->writeUTF($body->getTargetURI());
         $stream->writeUTF($body->getResponseURI());
         $stream->writeLong(Zend_Amf_Constants::UNKNOWN_CONTENT_LENGTH);
         if ($this->_objectEncoding == Zend_Amf_Constants::AMF0_OBJECT_ENCODING) {
             $serializer->writeTypeMarker($body->getData());
         } else {
             // Content is AMF3
             $serializer->writeTypeMarker($body->getData(), Zend_Amf_Constants::AMF0_AMF3);
         }
     }
     return $this->post_data = $stream->getStream();
 }
Ejemplo n.º 8
0
 /**
  * Override writeMessage to use our extended serializer instead of the standard ZendAMF one.
  *
  * @param  Zend_Amf_Parse_OutputStream $stream
  * @return Zend_Amf_Response
  */
 public function writeMessage(Zend_Amf_Parse_OutputStream $stream)
 {
     $objectEncoding = $this->_objectEncoding;
     //Write encoding to start of stream. Preamble byte is written of two byte Unsigned Short
     $stream->writeByte(0x0);
     $stream->writeByte($objectEncoding);
     // Loop through the AMF Headers that need to be returned.
     $headerCount = count($this->_headers);
     $stream->writeInt($headerCount);
     foreach ($this->getAmfHeaders() as $header) {
         //$serializer = new Zend_Amf_Parse_Amf0_Serializer($stream);
         $serializer = new Flextrine_Amf_Parse_Amf0_Serializer($stream);
         $stream->writeUTF($header->name);
         $stream->writeByte($header->mustRead);
         $stream->writeLong(Zend_Amf_Constants::UNKNOWN_CONTENT_LENGTH);
         if (is_object($header->data)) {
             // Workaround for PHP5 with E_STRICT enabled complaining about
             // "Only variables should be passed by reference"
             $placeholder = null;
             $serializer->writeTypeMarker($placeholder, null, $header->data);
         } else {
             $serializer->writeTypeMarker($header->data);
         }
     }
     // loop through the AMF bodies that need to be returned.
     $bodyCount = count($this->_bodies);
     $stream->writeInt($bodyCount);
     foreach ($this->_bodies as $body) {
         //$serializer = new Zend_Amf_Parse_Amf0_Serializer($stream);
         $serializer = new Flextrine_Amf_Parse_Amf0_Serializer($stream);
         $stream->writeUTF($body->getTargetURI());
         $stream->writeUTF($body->getResponseURI());
         $stream->writeLong(Zend_Amf_Constants::UNKNOWN_CONTENT_LENGTH);
         $bodyData = $body->getData();
         $markerType = $this->_objectEncoding == Zend_Amf_Constants::AMF0_OBJECT_ENCODING ? null : Zend_Amf_Constants::AMF0_AMF3;
         if (is_object($bodyData)) {
             // Workaround for PHP5 with E_STRICT enabled complaining about
             // "Only variables should be passed by reference"
             $placeholder = null;
             $serializer->writeTypeMarker($placeholder, $markerType, $bodyData);
         } else {
             $serializer->writeTypeMarker($bodyData, $markerType);
         }
     }
     return $this;
 }