Server : Apache System : Linux pod-100823:apache2_74:v0.5.7 5.4.0-1138-gcp #147~18.04.1-Ubuntu SMP Mon Oct 7 21:46:26 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33.7 Disable Function : apache_child_terminate,apache_get_modules,apache_get_version,apache_getenv,apache_note,apache_setenv,disk_free_space,disk_total_space,diskfreespace,dl,exec,fastcgi_finish_request,link,opcache_compile_file,opcache_get_configuration,opcache_invalidate,opcache_is_script_cached,opcache_reset,passthru,pclose,pcntl_exec,popen,posix_getpid,posix_getppid,posix_getpwuid,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_uname,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,realpath_cache_get,shell_exec,show_source,symlink,system Directory : /nas/content/live/attorneyexperi/wp-content/plugins/ugslot/MWP/Http/ |
<?php /* * This file is part of the ManageWP Worker plugin. * * (c) ManageWP LLC <contact@managewp.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Constructs a Multipart response into string or stream. */ class MWP_Http_MultipartResponse extends MWP_Http_Response implements MWP_Http_StreamingResponseInterface { /** @var string Multipart boundary */ private $boundary = ''; public function __construct($parts, $boundary = null, $statusCode = 200, array $headers = array()) { if ($boundary === null) { $boundary = uniqid(); } $this->boundary = $boundary; $headers["content-type"] = "multipart/mixed; boundary=".$this->boundary; if (!isset($headers["content-transfer-encoding"])) { $headers["content-transfer-encoding"] = "binary"; } parent::__construct($parts, $statusCode, $headers); } /** * {@inheritdoc} */ public function getContentAsString() { /** @var MWP_Http_MultipartResponsePart[] $parts */ $parts = $this->content; // Multipart header $output = "\r\n".$this->getMultipartBoundary()."\r\n"; foreach ($parts as $part) { $output .= $this->createPartResponse($part).$this->getMultipartBoundary(); } // End multipart boundary $output .= '--'; return $output; } /** * @return MWP_Stream_Interface */ public function createResponseStream() { /** @var MWP_Http_MultipartResponsePart[] $parts */ $parts = $this->content; $stream = new MWP_Stream_Append(); $stream->addStream(MWP_Stream_Stream::factory("\r\n".$this->getMultipartBoundary())); foreach ($parts as $part) { $stream->addStream(MWP_Stream_Stream::factory("\r\n")); $stream->addStream($this->createPartStream($part)); $stream->addStream(MWP_Stream_Stream::factory("\r\n".$this->getMultipartBoundary())); } $stream->addStream(MWP_Stream_Stream::factory("--")); return $stream; } /** * @return string */ public function getBoundary() { return $this->boundary; } private function createPartResponse(MWP_Http_MultipartResponsePart $part) { $response = ''; foreach ($part->getHeaders() as $header => $value) { if (strcasecmp("content-location", $header) === 0) { // Content-Location can contain special characters (like \r\n for example) $value = urlencode($value); } $response .= sprintf("%s: %s\r\n", strtolower($header), $value); } $response .= sprintf("\r\n%s\r\n", (string) $part->getBody()); return $response; } private function createPartStream(MWP_Http_MultipartResponsePart $part) { $stream = new MWP_Stream_Append(); foreach ($part->getHeaders() as $header => $value) { if (strcasecmp("content-location", $header) === 0) { // Content-Location can contain special characters (like \r\n for example) $value = urlencode($value); } $stream->addStream(MWP_Stream_Stream::factory(sprintf("%s: %s\r\n", strtolower($header), $value))); } $body = $part->getBody(); // Manually output content-transfer-encoding header $stream->addStream(MWP_Stream_Stream::factory(sprintf("content-transfer-encoding: %s\r\n", $part->getEncoding()))); switch ($part->getEncoding()) { case 'binary': // No action required break; case 'base64': $body = new MWP_Stream_Base64EncodedStream($body); break; default: throw new MWP_Worker_Exception(MWP_Worker_Exception::GENERAL_ERROR, 'Encoding %s not supported.'); } $stream->addStream(MWP_Stream_Stream::factory("\r\n")); $stream->addStream($body); return $stream; } /** * @return string */ private function getMultipartBoundary() { return sprintf("--%s", $this->boundary); } }