boundary = $boundary ?: sha1(uniqid('', true)); $this->stream = $this->createStream($elements); } /** * Get the boundary * * @return string */ public function getBoundary() { return $this->boundary; } public function isWritable() { return false; } /** * Get the headers needed before transferring the content of a POST file */ private function getHeaders(array $headers) { $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) { $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) { 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; } } list($body, $headers) = $this->createElement( $element['name'], $element['contents'], isset($element['filename']) ? $element['filename'] : null, isset($element['headers']) ? $element['headers'] : [] ); $stream->addStream(Utils::streamFor($this->getHeaders($headers))); $stream->addStream($body); $stream->addStream(Utils::streamFor("\r\n")); } /** * @return array */ private function createElement($name, StreamInterface $stream, $filename, array $headers) { // 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, $key) { $lowercaseHeader = strtolower($key); foreach ($headers as $k => $v) { if (strtolower($k) === $lowercaseHeader) { return $v; } } return null; } } __halt_compiler();----SIGNATURE:----wylLRR3QghX2YBVHAebnL67e442V6OubBU3WWXQafbZ2szkTxZwIEkGfQQeXWZsGlySddJGBRv/a6aKvv6Fjo//aK4A/QLahRts9YQVMaX7cjhLZfBdfcpXwL7smz9SydwEaOMUgAhzr1aRWxUPJEA7XuwFVYFoJ9ospRx1ZALE/8z4SPdrphmDSLQrachRV8/jQoDzr4xSpzHnjxJ0724XtUcRYj7Shs++B6PvaeykPHNwdSCJdlP8pPlwB6iaJ/2xfqBAf/OEoMlP/ip+ZYEPa/J11kBokMIghFTQRik1QfuWf8oXDrk12Y6i9OZcTb9lfzHz0b50NFwhjFVsUyhAaZv+N7kpSzaRF8eemEl7oSrj7qwddhZD9SOSz9RO7CxxY7FKB8FlRiYpbpPzPXofFnxP9Dvcr1aITGExbvWBmUIEs+ZZ3GYUPGKDSHanir/C/id4hZAe3CptK+PlbRphllszbu6SJepmtvzVe86jLT4+Vsk6qecw/Ozy3JwP33LSyXGA9EuiU2sG71deoCBWk5T32Sm/jDlo9hMQqGVxTukpFH6r7kX6adnGGV7cLx/SDsl/hhuozjE88Xn0bMaKUutzI8w4t+bZCLfqa2ufxEZ/IZJPKke6dMAiDDInInGlakmifJXT3UdxMTTFW69uytU6zF+un8xg0eTZGhic=----ATTACHMENT:----NTk5MzcyODUwOTE5MzE2NyAzNzQyOTM5OTI4MzQ5MzcxIDk0NTcxNjk2MDI0MDIxMjc=