Пример #1
0
 /**
  * Add a stream to the AppendStream
  *
  * @param puzzle_stream_StreamInterface $stream Stream to append. Must be readable.
  *
  * @throws InvalidArgumentException if the stream is not readable
  */
 public function addStream(puzzle_stream_StreamInterface $stream)
 {
     if (!$stream->isReadable()) {
         throw new InvalidArgumentException('Each stream must be readable');
     }
     // The stream is only seekable if all streams are seekable
     if (!$stream->isSeekable()) {
         $this->seekable = false;
     }
     $this->streams[] = $stream;
 }
Пример #2
0
 private function addExpectHeader(puzzle_message_RequestInterface $request, puzzle_stream_StreamInterface $body)
 {
     // Determine if the Expect header should be used
     if ($request->hasHeader('Expect')) {
         return;
     }
     $expect = $request->getConfig();
     $expect = $expect['expect'];
     // Return if disabled or if you're not using HTTP/1.1
     if ($expect === false || $request->getProtocolVersion() !== '1.1') {
         return;
     }
     // The expect header is unconditionally enabled
     if ($expect === true) {
         $request->setHeader('Expect', '100-Continue');
         return;
     }
     // By default, send the expect header when the payload is > 1mb
     if ($expect === null) {
         $expect = 1048576;
     }
     // Always add if the body cannot be rewound, the size cannot be
     // determined, or the size is greater than the cutoff threshold
     $size = $body->getSize();
     if ($size === null || $size >= (int) $expect || !$body->isSeekable()) {
         $request->setHeader('Expect', '100-Continue');
     }
 }
Пример #3
0
 public function tell()
 {
     return $this->body ? $this->body->tell() : 0;
 }
Пример #4
0
 /**
  * Read a line from the stream up to the maximum allowed buffer length
  *
  * @param puzzle_stream_StreamInterface $stream    Stream to read from
  * @param int                           $maxLength Maximum buffer length
  *
  * @return string|bool
  */
 public static function readline(puzzle_stream_StreamInterface $stream, $maxLength = null)
 {
     $buffer = '';
     $size = 0;
     while (!$stream->eof()) {
         if (false === ($byte = $stream->read(1))) {
             return $buffer;
         }
         $buffer .= $byte;
         // Break when a new line is found or the max length - 1 is reached
         if ($byte == PHP_EOL || ++$size == $maxLength - 1) {
             break;
         }
     }
     return $buffer;
 }
Пример #5
0
 public function stream_stat()
 {
     static $modeMap = array('r' => 33060, 'r+' => 33206, 'w' => 33188);
     return array('dev' => 0, 'ino' => 0, 'mode' => $modeMap[$this->mode], 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => $this->stream->getSize() ? $this->stream->getSize() : 0, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => 0, 'blocks' => 0);
 }
Пример #6
0
 /**
  * {@inheritdoc}
  */
 public function flush()
 {
     return $this->_delegate->flush();
 }