/** * 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; }
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'); } }
public function tell() { return $this->body ? $this->body->tell() : 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; }
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); }
/** * {@inheritdoc} */ public function flush() { return $this->_delegate->flush(); }