Esempio n. 1
0
 /**
  * Calculate a hash of a Stream
  *
  * @param StreamInterface $stream    Stream to calculate the hash for
  * @param string          $algo      Hash algorithm (e.g. md5, crc32, etc)
  * @param bool            $rawOutput Whether or not to use raw output
  *
  * @return bool|string Returns false on failure or a hash string on success
  */
 public static function getHash(StreamInterface $stream, $algo, $rawOutput = false)
 {
     $pos = $stream->ftell();
     if (!$stream->seek(0)) {
         return false;
     }
     $ctx = hash_init($algo);
     while ($data = $stream->read(8192)) {
         hash_update($ctx, $data);
     }
     $out = hash_final($ctx, (bool) $rawOutput);
     $stream->seek($pos);
     return $out;
 }
Esempio n. 2
0
 /**
  * Send HTTP response headers and body
  *
  * @return \Slim\Interfaces\Http\Response Self
  * @api
  */
 public function send()
 {
     // Send headers
     if (headers_sent() === false) {
         if (strpos(PHP_SAPI, 'cgi') === 0) {
             header(sprintf('Status: %s', $this->getReasonPhrase()));
         } else {
             header(sprintf('%s %s', $this->getProtocolVersion(), $this->getReasonPhrase()));
         }
         foreach ($this->headers as $name => $value) {
             foreach ($value as $hVal) {
                 header("{$name}: {$hVal}", false);
             }
         }
     }
     // Send body
     $this->body->seek(0);
     while ($this->body->feof() === false) {
         echo $this->body->read(1024);
     }
     return $this;
 }
Esempio n. 3
0
 /**
  * Constructor
  *
  * @param \Slim\Interfaces\EnvironmentInterface  $env
  * @param \Slim\Interfaces\Http\HeadersInterface $headers
  * @param \Slim\Interfaces\Http\CookiesInterface $cookies
  * @param string                                 $body
  * @api
  */
 public function __construct(EnvironmentInterface $env, HeadersInterface $headers, CookiesInterface $cookies, $body = null)
 {
     $this->env = $env;
     $this->headers = $headers;
     $this->cookies = $cookies;
     $this->bodyRaw = new \Guzzle\Stream\Stream(fopen('php://temp', 'r+'));
     if (is_string($body) === true) {
         $this->bodyRaw->write($body);
     }
     $this->bodyRaw->seek(0);
 }
Esempio n. 4
0
 /**
  * {@inheritdoc}
  */
 protected function doRewind()
 {
     return $this->stream->seek(0);
 }
Esempio n. 5
0
 /**
  * {@inheritdoc}
  */
 protected function doSeek($offset, $whence)
 {
     return $this->stream->seek($offset, $whence);
 }