/** * Adds config values to the public properties when a new object is created. * * @param array $config Configuration options. Possible values are: * - `'version'` _string_ : (defaults `'1.1'`). * - `'scheme'` _string_ : (defaults `'http'`). * - `'type'` _string_ : (defaults `null`). * - `'headers'` _mixed_ : (defaults `[]`). */ public function __construct($config = []) { $defaults = ['version' => '1.1', 'type' => null, 'encoding' => null, 'format' => null, 'data' => null, 'headers' => [], 'classes' => ['auth' => 'Lead\\Net\\Http\\Auth', 'media' => 'Lead\\Net\\Http\\Media', 'stream' => 'Lead\\Storage\\Stream\\Stream', 'headers' => 'Lead\\Net\\Http\\Headers']]; $config = Set::merge($defaults, $config); $this->_classes = $config['classes']; $this->version($config['version']); if (is_object($config['headers'])) { $this->headers = $config['headers']; } else { $headers = $this->_classes['headers']; $this->headers = new $headers(['data' => $config['headers']]); } if ($config['type']) { $this->type($config['type']); } elseif (isset($this->headers['Content-Type'])) { $this->type($this->headers['Content-Type']->value()); } if ($config['encoding']) { $this->encoding($config['encoding']); } $this->format($config['format']); parent::__construct($config); if ($config['data'] !== null) { $this->set($config['data']); } }
$stream = $message->stream(); expect((string) $stream)->toBe('Hello World!'); }); it("sets the body using a stream", function () { $message = new Message(); $message->stream('Hello World!'); $stream = $message->stream(); expect((string) $stream)->toBe('Hello World!'); }); }); describe("->chunkSize()", function () { it("gets/sets the chunk size", function () { $message = new Message(); expect($message->chunkSize())->toBe(256); expect($message->chunkSize(512))->toBe($message); expect($message->chunkSize())->toBe(512); }); }); describe("->export()", function () { it("returns the query", function () { $message = new Message(['scheme' => 'http', 'host' => 'www.domain.com', 'port' => 80, 'username' => 'username', 'password' => 'password', 'path' => 'index.php']); expect($message->export())->toEqual(['body' => $message->stream()]); }); }); describe("->__toString", function () { it("casts to a string", function () { $message = new Message(['body' => 'Body Message']); expect((string) $message)->toBe('Body Message'); }); }); });