OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
reader
/
oauth
/
vendor
/
guzzlehttp
/
psr7
/
src
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
09/30/2021 11:53:24 AM
rwxr-xr-x
📄
AppendStream.php
5.77 KB
09/30/2021 11:53:19 AM
rw-r--r--
📄
BufferStream.php
3.1 KB
09/30/2021 11:53:16 AM
rw-r--r--
📄
CachingStream.php
4.31 KB
09/30/2021 11:53:11 AM
rw-r--r--
📄
DroppingStream.php
1.12 KB
09/30/2021 11:53:15 AM
rw-r--r--
📄
FnStream.php
4.31 KB
09/30/2021 11:53:09 AM
rw-r--r--
📄
Header.php
2.04 KB
09/30/2021 11:53:15 AM
rw-r--r--
📄
HttpFactory.php
3.02 KB
09/30/2021 11:53:16 AM
rw-r--r--
📄
InflateStream.php
1.3 KB
09/30/2021 11:53:13 AM
rw-r--r--
📄
LazyOpenStream.php
899 bytes
09/30/2021 11:53:15 AM
rw-r--r--
📄
LimitStream.php
4.14 KB
09/30/2021 11:53:20 AM
rw-r--r--
📄
Message.php
8.01 KB
09/30/2021 11:53:21 AM
rw-r--r--
📄
MessageTrait.php
6.46 KB
09/30/2021 11:53:10 AM
rw-r--r--
📄
MimeType.php
4.2 KB
09/30/2021 11:53:11 AM
rw-r--r--
📄
MultipartStream.php
4.67 KB
09/30/2021 11:53:21 AM
rw-r--r--
📄
NoSeekStream.php
470 bytes
09/30/2021 11:53:12 AM
rw-r--r--
📄
PumpStream.php
4.43 KB
09/30/2021 11:53:11 AM
rw-r--r--
📄
Query.php
3.55 KB
09/30/2021 11:53:18 AM
rw-r--r--
📄
Request.php
3.81 KB
09/30/2021 11:53:14 AM
rw-r--r--
📄
Response.php
4.79 KB
09/30/2021 11:53:12 AM
rw-r--r--
📄
Rfc7230.php
665 bytes
09/30/2021 11:53:22 AM
rw-r--r--
📄
ServerRequest.php
9.23 KB
09/30/2021 11:53:20 AM
rw-r--r--
📄
Stream.php
7.05 KB
09/30/2021 11:53:14 AM
rw-r--r--
📄
StreamDecoratorTrait.php
3.22 KB
09/30/2021 11:53:17 AM
rw-r--r--
📄
StreamWrapper.php
4.01 KB
09/30/2021 11:53:13 AM
rw-r--r--
📄
UploadedFile.php
4.75 KB
09/30/2021 11:53:18 AM
rw-r--r--
📄
Uri.php
21.3 KB
09/30/2021 11:53:17 AM
rw-r--r--
📄
UriNormalizer.php
8.22 KB
09/30/2021 11:53:10 AM
rw-r--r--
📄
UriResolver.php
8.36 KB
09/30/2021 11:53:19 AM
rw-r--r--
📄
Utils.php
13.9 KB
09/30/2021 11:53:18 AM
rw-r--r--
Editing: MultipartStream.php
Close
<?php declare(strict_types=1); namespace GuzzleHttp\Psr7; use Psr\Http\Message\StreamInterface; /** * Stream that when read returns bytes for a streaming multipart or * multipart/form-data stream. */ final class MultipartStream implements StreamInterface { use StreamDecoratorTrait; /** @var string */ private $boundary; /** * @param array $elements Array of associative arrays, each containing a * required "name" key mapping to the form field, * name, a required "contents" key mapping to a * StreamInterface/resource/string, an optional * "headers" associative array of custom headers, * and an optional "filename" key mapping to a * string to send as the filename in the part. * @param string $boundary You can optionally provide a specific boundary * * @throws \InvalidArgumentException */ public function __construct(array $elements = [], string $boundary = null) { $this->boundary = $boundary ?: sha1(uniqid('', true)); $this->stream = $this->createStream($elements); } public function getBoundary(): string { return $this->boundary; } public function isWritable(): bool { return false; } /** * Get the headers needed before transferring the content of a POST file * * @param array<string, string> $headers */ private function getHeaders(array $headers): string { $str = ''; foreach ($headers as $key => $value) { $str .= "{$key}: {$value}\r\n"; } return "--{$this->boundary}\r\n" . trim($str) . "\r\n\r\n"; } /** * Create the aggregate stream that will be used to upload the POST data */ protected function createStream(array $elements = []): StreamInterface { $stream = new AppendStream(); foreach ($elements as $element) { $this->addElement($stream, $element); } // Add the trailing boundary with CRLF $stream->addStream(Utils::streamFor("--{$this->boundary}--\r\n")); return $stream; } private function addElement(AppendStream $stream, array $element): void { foreach (['contents', 'name'] as $key) { if (!array_key_exists($key, $element)) { throw new \InvalidArgumentException("A '{$key}' key is required"); } } $element['contents'] = Utils::streamFor($element['contents']); if (empty($element['filename'])) { $uri = $element['contents']->getMetadata('uri'); if (substr($uri, 0, 6) !== 'php://') { $element['filename'] = $uri; } } [$body, $headers] = $this->createElement( $element['name'], $element['contents'], $element['filename'] ?? null, $element['headers'] ?? [] ); $stream->addStream(Utils::streamFor($this->getHeaders($headers))); $stream->addStream($body); $stream->addStream(Utils::streamFor("\r\n")); } private function createElement(string $name, StreamInterface $stream, ?string $filename, array $headers): array { // Set a default content-disposition header if one was no provided $disposition = $this->getHeader($headers, 'content-disposition'); if (!$disposition) { $headers['Content-Disposition'] = ($filename === '0' || $filename) ? sprintf( 'form-data; name="%s"; filename="%s"', $name, basename($filename) ) : "form-data; name=\"{$name}\""; } // Set a default content-length header if one was no provided $length = $this->getHeader($headers, 'content-length'); if (!$length) { if ($length = $stream->getSize()) { $headers['Content-Length'] = (string) $length; } } // Set a default Content-Type if one was not supplied $type = $this->getHeader($headers, 'content-type'); if (!$type && ($filename === '0' || $filename)) { if ($type = MimeType::fromFilename($filename)) { $headers['Content-Type'] = $type; } } return [$stream, $headers]; } private function getHeader(array $headers, string $key) { $lowercaseHeader = strtolower($key); foreach ($headers as $k => $v) { if (strtolower($k) === $lowercaseHeader) { return $v; } } return null; } }