* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class Multipart extends Writer { /** @var string */ protected $subType; /** @var string */ protected $boundary; /** @var \PSX\Http\ResponseInterface[] */ protected $parts; /** * @param string $subType * @param string|null $boundary */ public function __construct($subType = 'mixed', $boundary = null) { parent::__construct(null, null); $this->subType = $subType; $this->boundary = $boundary === null ? $this->generateBoundary() : $boundary; $this->parts = []; } /** * @return string */ public function getSubType() { return $this->subType; } /** * @return string|null */ public function getBoundary() { return $this->boundary; } /** * @param \PSX\Http\ResponseInterface $response */ public function addPart(ResponseInterface $response) { $this->parts[] = $response; } /** * @return \PSX\Http\ResponseInterface[] */ public function getParts() { return $this->parts; } /** * @inheritdoc */ public function writeTo(ResponseInterface $response) { $response->setHeader('Content-Type', 'multipart/' . $this->subType . '; boundary="' . $this->boundary . '"'); $parts = $this->getParts(); foreach ($parts as $part) { $out = '--' . $this->boundary . Http::NEW_LINE; $headers = ResponseParser::buildHeaderFromMessage($part); foreach ($headers as $header) { $out.= $header . Http::NEW_LINE; } $out.= Http::NEW_LINE; $out.= (string) $part->getBody(); $out.= Http::NEW_LINE; $response->getBody()->write($out); } $response->getBody()->write('--' . $this->boundary . '--' . Http::NEW_LINE); } private function generateBoundary() { return sha1(uniqid()); } } __halt_compiler();----SIGNATURE:----E5FbZwvGW3SIAYXNEJy5mftYAxBISrCxFCHtc0QUqVfdRPxoygLsWMcNdBkc5FO0KV2bCfT6ycPUvmcrKxV8SGC8vRepbg4IUGobbDODmyL867j5rf3XZkiXnSC62OEappcGutW1ZOBSm9gpWwbhCNxFjxMrAWbFYbD0UwIu1oKusG7GI1uf4cU5aUUMoocUlj2J4P+6LfpU/TznNspgEPdhqY6cPb4XV+xiJNo6Tzj8SdIwh08H51mEoH0b7+YBXhTnR7ghEfp0+2G4TbxSDt/l/1FCFE0NV83Zq2KoAeYG/rY+rnlaAV+oyuFSHqtPzvtlZOWBrdFR4/6GjuXnGEFLWvBUMS6OhRNPszyNrylTqDVWUVjBBHc4B/5+sTFo8Gr+f4t/Ru5lR5mvRqqxJvbP2btwSjUuD76ptYx8vFWrY9ggExuZSckTje19VcFW15e7kJqfgc7R7E00vu4TW1n+C020REHkDedZ1oEvCIWgOMhgZs5ncJjz05DZLNiqnOBBnJOUrMFNZOIQFwafPjWixHkJWb+/W2mNKLOsgnMC6a7FV1K8C9IaW6//mS3KQlHuY0AyjmucTl3QjvqUwQXLZkHjFH82NMkG1C8VLAgN371oLDVHe5ozvj1KkNL+DgV7q+2LuaMAcKrPq5Imk9+L8vnDPEAZVjOZ2koC1L4=----ATTACHMENT:----NjAwNTg0MTEzNDQ0MzMwMyAzODExOTQ3MTI4ODM1OTQ1IDkwNjc1NzQyNDg3OTMyMDM=