/** * Upload data to tracker * * @param string|StreamInterface|UploadedFileInterface $file * @param string $key * @param string $class * @param bool $use_file * * @return bool * @throws Exception */ public function put($file, $key, $class, $use_file = true) { if ($key === null) { throw new InvalidArgumentException(get_class($this) . "::put key cannot be null"); } if ($use_file) { if ($file instanceof UploadedFileInterface) { $fh = $file->getStream()->detach(); $length = $file->getSize(); } elseif ($file instanceof StreamInterface) { $fh = $file->detach(); $length = $file->getSize(); } elseif (is_resource($file) && get_resource_type($file) == 'stream') { $fh = $file; } else { $fh = fopen($file, 'r'); } if (!$fh) { throw new RuntimeException(get_class($this) . "::put failed to open file"); } if (!$length) { $length = filesize($file); } } else { $fh = fopen('php://memory', 'rw'); if ($fh === false) { throw new RuntimeException(get_class($this) . "::put failed to open memory stream"); } fwrite($fh, $file); rewind($fh); $length = strlen($file); } //CREATE_OPEN domain=%s&key=%s&class=%s&multi_dest=%d $location = $this->doRequest('CREATE_OPEN', ['domain' => $this->domain, 'key' => $key, 'class' => $class]); $uri = $location['path']; $ch = curl_init(); curl_setopt($ch, CURLOPT_INFILE, $fh); curl_setopt($ch, CURLOPT_INFILESIZE, $length); curl_setopt($ch, CURLOPT_TIMEOUT, $this->request_timeout); curl_setopt($ch, CURLOPT_PUT, $this->request_timeout); curl_setopt($ch, CURLOPT_URL, $uri); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Expect: ']); $response = curl_exec($ch); fclose($fh); if ($response === false) { $error = curl_error($ch); curl_close($ch); throw new RuntimeException(get_class($this) . "::put {$error}"); } curl_close($ch); $this->doRequest('CREATE_CLOSE', ['key' => $key, 'class' => $class, 'domain' => $this->domain, 'devid' => $location['devid'], 'fid' => $location['fid'], 'path' => urldecode($uri)]); return true; }
/** * {@inheritdoc} */ public function detach() { return $this->stream->detach(); }
/** * {@inheritdoc} */ public function getHashOfStream(StreamInterface $stream, $binary = false) { $res = hash_init($this->alg); hash_update_stream($res, $stream->detach()); return hash_final($res); }
public function __construct(StreamInterface $stream) { $this->socket = $stream->detach(); }
/** * {@inheritdoc} */ public function detach() { return $this->decoratedStream->detach(); }
/** * Parses csv. * * @param StreamInterface $body * * @return array */ protected function parseCsv(StreamInterface $body) { if ($body->isSeekable()) { $body->rewind(); } $stream = $body->detach(); $data = []; while (($row = fgetcsv($stream)) !== false) { $data[] = $row; } fclose($stream); return $data; }
public function testDetaches() { $this->b->detach(); $this->assertFalse($this->b->isReadable()); }