update v 1.0.7.5
This commit is contained in:
		
							
								
								
									
										8
									
								
								vendor/guzzlehttp/psr7/CHANGELOG.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/guzzlehttp/psr7/CHANGELOG.md
									
									
									
									
										vendored
									
									
								
							| @@ -1,5 +1,13 @@ | ||||
| # CHANGELOG | ||||
|  | ||||
| ## 1.3.0 - 2016-04-13 | ||||
|  | ||||
| * Added remaining interfaces needed for full PSR7 compatibility | ||||
|   (ServerRequestInterface, UploadedFileInterface, etc.). | ||||
| * Added support for stream_for from scalars. | ||||
| * Can now extend Uri. | ||||
| * Fixed a bug in validating request methods by making it more permissive. | ||||
|  | ||||
| ## 1.2.3 - 2016-02-18 | ||||
|  | ||||
| * Fixed support in `GuzzleHttp\Psr7\CachingStream` for seeking forward on remote | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/guzzlehttp/psr7/README.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/guzzlehttp/psr7/README.md
									
									
									
									
										vendored
									
									
								
							| @@ -95,7 +95,7 @@ $stream = Psr7\stream_for(); | ||||
| // Start dropping data when the stream has more than 10 bytes | ||||
| $dropping = new Psr7\DroppingStream($stream, 10); | ||||
|  | ||||
| $stream->write('01234567890123456789'); | ||||
| $dropping->write('01234567890123456789'); | ||||
| echo $stream; // 0123456789 | ||||
| ``` | ||||
|  | ||||
|   | ||||
							
								
								
									
										348
									
								
								vendor/guzzlehttp/psr7/src/ServerRequest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										348
									
								
								vendor/guzzlehttp/psr7/src/ServerRequest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,348 @@ | ||||
| <?php | ||||
|  | ||||
| namespace GuzzleHttp\Psr7; | ||||
|  | ||||
| use InvalidArgumentException; | ||||
| use Psr\Http\Message\ServerRequestInterface; | ||||
| use Psr\Http\Message\UriInterface; | ||||
| use Psr\Http\Message\StreamInterface; | ||||
| use Psr\Http\Message\UploadedFileInterface; | ||||
|  | ||||
| /** | ||||
|  * Server-side HTTP request | ||||
|  * | ||||
|  * Extends the Request definition to add methods for accessing incoming data, | ||||
|  * specifically server parameters, cookies, matched path parameters, query | ||||
|  * string arguments, body parameters, and upload file information. | ||||
|  * | ||||
|  * "Attributes" are discovered via decomposing the request (and usually | ||||
|  * specifically the URI path), and typically will be injected by the application. | ||||
|  * | ||||
|  * Requests are considered immutable; all methods that might change state are | ||||
|  * implemented such that they retain the internal state of the current | ||||
|  * message and return a new instance that contains the changed state. | ||||
|  */ | ||||
| class ServerRequest extends Request implements ServerRequestInterface | ||||
| { | ||||
|     /** | ||||
|      * @var array | ||||
|      */ | ||||
|     private $attributes = []; | ||||
|  | ||||
|     /** | ||||
|      * @var array | ||||
|      */ | ||||
|     private $cookieParams = []; | ||||
|  | ||||
|     /** | ||||
|      * @var null|array|object | ||||
|      */ | ||||
|     private $parsedBody; | ||||
|  | ||||
|     /** | ||||
|      * @var array | ||||
|      */ | ||||
|     private $queryParams = []; | ||||
|  | ||||
|     /** | ||||
|      * @var array | ||||
|      */ | ||||
|     private $serverParams; | ||||
|  | ||||
|     /** | ||||
|      * @var array | ||||
|      */ | ||||
|     private $uploadedFiles = []; | ||||
|  | ||||
|     /** | ||||
|      * @param null|string $method HTTP method for the request | ||||
|      * @param null|string|UriInterface $uri URI for the request | ||||
|      * @param array $headers Headers for the message | ||||
|      * @param string|resource|StreamInterface $body Message body | ||||
|      * @param string $protocolVersion HTTP protocol version | ||||
|      * @param array $serverParams the value of $_SERVER superglobal | ||||
|      * | ||||
|      * @throws InvalidArgumentException for an invalid URI | ||||
|      */ | ||||
|     public function __construct( | ||||
|         $method, | ||||
|         $uri, | ||||
|         array $headers = [], | ||||
|         $body = null, | ||||
|         $protocolVersion = '1.1', | ||||
|         array $serverParams = [] | ||||
|     ) { | ||||
|         $this->serverParams = $serverParams; | ||||
|  | ||||
|         parent::__construct($method, $uri, $headers, $body, $protocolVersion); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Return an UploadedFile instance array. | ||||
|      * | ||||
|      * @param array $files A array which respect $_FILES structure | ||||
|      * @throws InvalidArgumentException for unrecognized values | ||||
|      * @return array | ||||
|      */ | ||||
|     public static function normalizeFiles(array $files) | ||||
|     { | ||||
|         $normalized = []; | ||||
|  | ||||
|         foreach ($files as $key => $value) { | ||||
|             if ($value instanceof UploadedFileInterface) { | ||||
|                 $normalized[$key] = $value; | ||||
|             } elseif (is_array($value) && isset($value['tmp_name'])) { | ||||
|                 $normalized[$key] = self::createUploadedFileFromSpec($value); | ||||
|             } elseif (is_array($value)) { | ||||
|                 $normalized[$key] = self::normalizeFiles($value); | ||||
|                 continue; | ||||
|             } else { | ||||
|                 throw new InvalidArgumentException('Invalid value in files specification'); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return $normalized; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Create and return an UploadedFile instance from a $_FILES specification. | ||||
|      * | ||||
|      * If the specification represents an array of values, this method will | ||||
|      * delegate to normalizeNestedFileSpec() and return that return value. | ||||
|      * | ||||
|      * @param array $value $_FILES struct | ||||
|      * @return array|UploadedFileInterface | ||||
|      */ | ||||
|     private static function createUploadedFileFromSpec(array $value) | ||||
|     { | ||||
|         if (is_array($value['tmp_name'])) { | ||||
|             return self::normalizeNestedFileSpec($value); | ||||
|         } | ||||
|  | ||||
|         return new UploadedFile( | ||||
|             $value['tmp_name'], | ||||
|             (int) $value['size'], | ||||
|             (int) $value['error'], | ||||
|             $value['name'], | ||||
|             $value['type'] | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Normalize an array of file specifications. | ||||
|      * | ||||
|      * Loops through all nested files and returns a normalized array of | ||||
|      * UploadedFileInterface instances. | ||||
|      * | ||||
|      * @param array $files | ||||
|      * @return UploadedFileInterface[] | ||||
|      */ | ||||
|     private static function normalizeNestedFileSpec(array $files = []) | ||||
|     { | ||||
|         $normalizedFiles = []; | ||||
|  | ||||
|         foreach (array_keys($files['tmp_name']) as $key) { | ||||
|             $spec = [ | ||||
|                 'tmp_name' => $files['tmp_name'][$key], | ||||
|                 'size'     => $files['size'][$key], | ||||
|                 'error'    => $files['error'][$key], | ||||
|                 'name'     => $files['name'][$key], | ||||
|                 'type'     => $files['type'][$key], | ||||
|             ]; | ||||
|             $normalizedFiles[$key] = self::createUploadedFileFromSpec($spec); | ||||
|         } | ||||
|  | ||||
|         return $normalizedFiles; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Return a ServerRequest populated with superglobals: | ||||
|      * $_GET | ||||
|      * $_POST | ||||
|      * $_COOKIE | ||||
|      * $_FILES | ||||
|      * $_SERVER | ||||
|      * | ||||
|      * @return ServerRequestInterface | ||||
|      */ | ||||
|     public static function fromGlobals() | ||||
|     { | ||||
|         $method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET'; | ||||
|         $headers = function_exists('getallheaders') ? getallheaders() : []; | ||||
|         $uri = self::getUriFromGlobals(); | ||||
|         $body = new LazyOpenStream('php://input', 'r+'); | ||||
|         $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? str_replace('HTTP/', '', $_SERVER['SERVER_PROTOCOL']) : '1.1'; | ||||
|  | ||||
|         $serverRequest = new ServerRequest($method, $uri, $headers, $body, $protocol, $_SERVER); | ||||
|  | ||||
|         return $serverRequest | ||||
|             ->withCookieParams($_COOKIE) | ||||
|             ->withQueryParams($_GET) | ||||
|             ->withParsedBody($_POST) | ||||
|             ->withUploadedFiles(self::normalizeFiles($_FILES)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get a Uri populated with values from $_SERVER. | ||||
|      * | ||||
|      * @return UriInterface | ||||
|      */ | ||||
|     public static function getUriFromGlobals() { | ||||
|         $uri = new Uri(''); | ||||
|  | ||||
|         if (isset($_SERVER['HTTPS'])) { | ||||
|             $uri = $uri->withScheme($_SERVER['HTTPS'] == 'on' ? 'https' : 'http'); | ||||
|         } | ||||
|  | ||||
|         if (isset($_SERVER['HTTP_HOST'])) { | ||||
|             $uri = $uri->withHost($_SERVER['HTTP_HOST']); | ||||
|         } elseif (isset($_SERVER['SERVER_NAME'])) { | ||||
|             $uri = $uri->withHost($_SERVER['SERVER_NAME']); | ||||
|         } | ||||
|  | ||||
|         if (isset($_SERVER['SERVER_PORT'])) { | ||||
|             $uri = $uri->withPort($_SERVER['SERVER_PORT']); | ||||
|         } | ||||
|  | ||||
|         if (isset($_SERVER['REQUEST_URI'])) { | ||||
|             $uri = $uri->withPath(current(explode('?', $_SERVER['REQUEST_URI']))); | ||||
|         } | ||||
|  | ||||
|         if (isset($_SERVER['QUERY_STRING'])) { | ||||
|             $uri = $uri->withQuery($_SERVER['QUERY_STRING']); | ||||
|         } | ||||
|  | ||||
|         return $uri; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function getServerParams() | ||||
|     { | ||||
|         return $this->serverParams; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function getUploadedFiles() | ||||
|     { | ||||
|         return $this->uploadedFiles; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function withUploadedFiles(array $uploadedFiles) | ||||
|     { | ||||
|         $new = clone $this; | ||||
|         $new->uploadedFiles = $uploadedFiles; | ||||
|  | ||||
|         return $new; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function getCookieParams() | ||||
|     { | ||||
|         return $this->cookieParams; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function withCookieParams(array $cookies) | ||||
|     { | ||||
|         $new = clone $this; | ||||
|         $new->cookieParams = $cookies; | ||||
|  | ||||
|         return $new; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function getQueryParams() | ||||
|     { | ||||
|         return $this->queryParams; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function withQueryParams(array $query) | ||||
|     { | ||||
|         $new = clone $this; | ||||
|         $new->queryParams = $query; | ||||
|  | ||||
|         return $new; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function getParsedBody() | ||||
|     { | ||||
|         return $this->parsedBody; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function withParsedBody($data) | ||||
|     { | ||||
|         $new = clone $this; | ||||
|         $new->parsedBody = $data; | ||||
|  | ||||
|         return $new; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function getAttributes() | ||||
|     { | ||||
|         return $this->attributes; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function getAttribute($attribute, $default = null) | ||||
|     { | ||||
|         if (false === array_key_exists($attribute, $this->attributes)) { | ||||
|             return $default; | ||||
|         } | ||||
|  | ||||
|         return $this->attributes[$attribute]; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function withAttribute($attribute, $value) | ||||
|     { | ||||
|         $new = clone $this; | ||||
|         $new->attributes[$attribute] = $value; | ||||
|  | ||||
|         return $new; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function withoutAttribute($attribute) | ||||
|     { | ||||
|         if (false === isset($this->attributes[$attribute])) { | ||||
|             return clone $this; | ||||
|         } | ||||
|  | ||||
|         $new = clone $this; | ||||
|         unset($new->attributes[$attribute]); | ||||
|  | ||||
|         return $new; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										2
									
								
								vendor/guzzlehttp/psr7/src/Stream.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/guzzlehttp/psr7/src/Stream.php
									
									
									
									
										vendored
									
									
								
							| @@ -38,7 +38,7 @@ class Stream implements StreamInterface | ||||
|      * This constructor accepts an associative array of options. | ||||
|      * | ||||
|      * - size: (int) If a read stream would otherwise have an indeterminate | ||||
|      *   size, but the size is known due to foreknownledge, then you can | ||||
|      *   size, but the size is known due to foreknowledge, then you can | ||||
|      *   provide that size, in bytes. | ||||
|      * - metadata: (array) Any additional metadata to return when the metadata | ||||
|      *   of the stream is accessed. | ||||
|   | ||||
							
								
								
									
										316
									
								
								vendor/guzzlehttp/psr7/src/UploadedFile.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										316
									
								
								vendor/guzzlehttp/psr7/src/UploadedFile.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,316 @@ | ||||
| <?php | ||||
| namespace GuzzleHttp\Psr7; | ||||
|  | ||||
| use InvalidArgumentException; | ||||
| use Psr\Http\Message\StreamInterface; | ||||
| use Psr\Http\Message\UploadedFileInterface; | ||||
| use RuntimeException; | ||||
|  | ||||
| class UploadedFile implements UploadedFileInterface | ||||
| { | ||||
|     /** | ||||
|      * @var int[] | ||||
|      */ | ||||
|     private static $errors = [ | ||||
|         UPLOAD_ERR_OK, | ||||
|         UPLOAD_ERR_INI_SIZE, | ||||
|         UPLOAD_ERR_FORM_SIZE, | ||||
|         UPLOAD_ERR_PARTIAL, | ||||
|         UPLOAD_ERR_NO_FILE, | ||||
|         UPLOAD_ERR_NO_TMP_DIR, | ||||
|         UPLOAD_ERR_CANT_WRITE, | ||||
|         UPLOAD_ERR_EXTENSION, | ||||
|     ]; | ||||
|  | ||||
|     /** | ||||
|      * @var string | ||||
|      */ | ||||
|     private $clientFilename; | ||||
|  | ||||
|     /** | ||||
|      * @var string | ||||
|      */ | ||||
|     private $clientMediaType; | ||||
|  | ||||
|     /** | ||||
|      * @var int | ||||
|      */ | ||||
|     private $error; | ||||
|  | ||||
|     /** | ||||
|      * @var null|string | ||||
|      */ | ||||
|     private $file; | ||||
|  | ||||
|     /** | ||||
|      * @var bool | ||||
|      */ | ||||
|     private $moved = false; | ||||
|  | ||||
|     /** | ||||
|      * @var int | ||||
|      */ | ||||
|     private $size; | ||||
|  | ||||
|     /** | ||||
|      * @var StreamInterface|null | ||||
|      */ | ||||
|     private $stream; | ||||
|  | ||||
|     /** | ||||
|      * @param StreamInterface|string|resource $streamOrFile | ||||
|      * @param int $size | ||||
|      * @param int $errorStatus | ||||
|      * @param string|null $clientFilename | ||||
|      * @param string|null $clientMediaType | ||||
|      */ | ||||
|     public function __construct( | ||||
|         $streamOrFile, | ||||
|         $size, | ||||
|         $errorStatus, | ||||
|         $clientFilename = null, | ||||
|         $clientMediaType = null | ||||
|     ) { | ||||
|         $this->setError($errorStatus); | ||||
|         $this->setSize($size); | ||||
|         $this->setClientFilename($clientFilename); | ||||
|         $this->setClientMediaType($clientMediaType); | ||||
|  | ||||
|         if ($this->isOk()) { | ||||
|             $this->setStreamOrFile($streamOrFile); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Depending on the value set file or stream variable | ||||
|      * | ||||
|      * @param mixed $streamOrFile | ||||
|      * @throws InvalidArgumentException | ||||
|      */ | ||||
|     private function setStreamOrFile($streamOrFile) | ||||
|     { | ||||
|         if (is_string($streamOrFile)) { | ||||
|             $this->file = $streamOrFile; | ||||
|         } elseif (is_resource($streamOrFile)) { | ||||
|             $this->stream = new Stream($streamOrFile); | ||||
|         } elseif ($streamOrFile instanceof StreamInterface) { | ||||
|             $this->stream = $streamOrFile; | ||||
|         } else { | ||||
|             throw new InvalidArgumentException( | ||||
|                 'Invalid stream or file provided for UploadedFile' | ||||
|             ); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param int $error | ||||
|      * @throws InvalidArgumentException | ||||
|      */ | ||||
|     private function setError($error) | ||||
|     { | ||||
|         if (false === is_int($error)) { | ||||
|             throw new InvalidArgumentException( | ||||
|                 'Upload file error status must be an integer' | ||||
|             ); | ||||
|         } | ||||
|  | ||||
|         if (false === in_array($error, UploadedFile::$errors)) { | ||||
|             throw new InvalidArgumentException( | ||||
|                 'Invalid error status for UploadedFile' | ||||
|             ); | ||||
|         } | ||||
|  | ||||
|         $this->error = $error; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param int $size | ||||
|      * @throws InvalidArgumentException | ||||
|      */ | ||||
|     private function setSize($size) | ||||
|     { | ||||
|         if (false === is_int($size)) { | ||||
|             throw new InvalidArgumentException( | ||||
|                 'Upload file size must be an integer' | ||||
|             ); | ||||
|         } | ||||
|  | ||||
|         $this->size = $size; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param mixed $param | ||||
|      * @return boolean | ||||
|      */ | ||||
|     private function isStringOrNull($param) | ||||
|     { | ||||
|         return in_array(gettype($param), ['string', 'NULL']); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param mixed $param | ||||
|      * @return boolean | ||||
|      */ | ||||
|     private function isStringNotEmpty($param) | ||||
|     { | ||||
|         return is_string($param) && false === empty($param); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param string|null $clientFilename | ||||
|      * @throws InvalidArgumentException | ||||
|      */ | ||||
|     private function setClientFilename($clientFilename) | ||||
|     { | ||||
|         if (false === $this->isStringOrNull($clientFilename)) { | ||||
|             throw new InvalidArgumentException( | ||||
|                 'Upload file client filename must be a string or null' | ||||
|             ); | ||||
|         } | ||||
|  | ||||
|         $this->clientFilename = $clientFilename; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param string|null $clientMediaType | ||||
|      * @throws InvalidArgumentException | ||||
|      */ | ||||
|     private function setClientMediaType($clientMediaType) | ||||
|     { | ||||
|         if (false === $this->isStringOrNull($clientMediaType)) { | ||||
|             throw new InvalidArgumentException( | ||||
|                 'Upload file client media type must be a string or null' | ||||
|             ); | ||||
|         } | ||||
|  | ||||
|         $this->clientMediaType = $clientMediaType; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Return true if there is no upload error | ||||
|      * | ||||
|      * @return boolean | ||||
|      */ | ||||
|     private function isOk() | ||||
|     { | ||||
|         return $this->error === UPLOAD_ERR_OK; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return boolean | ||||
|      */ | ||||
|     public function isMoved() | ||||
|     { | ||||
|         return $this->moved; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @throws RuntimeException if is moved or not ok | ||||
|      */ | ||||
|     private function validateActive() | ||||
|     { | ||||
|         if (false === $this->isOk()) { | ||||
|             throw new RuntimeException('Cannot retrieve stream due to upload error'); | ||||
|         } | ||||
|  | ||||
|         if ($this->isMoved()) { | ||||
|             throw new RuntimeException('Cannot retrieve stream after it has already been moved'); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      * @throws RuntimeException if the upload was not successful. | ||||
|      */ | ||||
|     public function getStream() | ||||
|     { | ||||
|         $this->validateActive(); | ||||
|  | ||||
|         if ($this->stream instanceof StreamInterface) { | ||||
|             return $this->stream; | ||||
|         } | ||||
|  | ||||
|         return new LazyOpenStream($this->file, 'r+'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      * | ||||
|      * @see http://php.net/is_uploaded_file | ||||
|      * @see http://php.net/move_uploaded_file | ||||
|      * @param string $targetPath Path to which to move the uploaded file. | ||||
|      * @throws RuntimeException if the upload was not successful. | ||||
|      * @throws InvalidArgumentException if the $path specified is invalid. | ||||
|      * @throws RuntimeException on any error during the move operation, or on | ||||
|      *     the second or subsequent call to the method. | ||||
|      */ | ||||
|     public function moveTo($targetPath) | ||||
|     { | ||||
|         $this->validateActive(); | ||||
|  | ||||
|         if (false === $this->isStringNotEmpty($targetPath)) { | ||||
|             throw new InvalidArgumentException( | ||||
|                 'Invalid path provided for move operation; must be a non-empty string' | ||||
|             ); | ||||
|         } | ||||
|  | ||||
|         if ($this->file) { | ||||
|             $this->moved = php_sapi_name() == 'cli' | ||||
|                 ? rename($this->file, $targetPath) | ||||
|                 : move_uploaded_file($this->file, $targetPath); | ||||
|         } else { | ||||
|             copy_to_stream( | ||||
|                 $this->getStream(), | ||||
|                 new LazyOpenStream($targetPath, 'w') | ||||
|             ); | ||||
|  | ||||
|             $this->moved = true; | ||||
|         } | ||||
|  | ||||
|         if (false === $this->moved) { | ||||
|             throw new RuntimeException( | ||||
|                 sprintf('Uploaded file could not be moved to %s', $targetPath) | ||||
|             ); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      * | ||||
|      * @return int|null The file size in bytes or null if unknown. | ||||
|      */ | ||||
|     public function getSize() | ||||
|     { | ||||
|         return $this->size; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      * | ||||
|      * @see http://php.net/manual/en/features.file-upload.errors.php | ||||
|      * @return int One of PHP's UPLOAD_ERR_XXX constants. | ||||
|      */ | ||||
|     public function getError() | ||||
|     { | ||||
|         return $this->error; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      * | ||||
|      * @return string|null The filename sent by the client or null if none | ||||
|      *     was provided. | ||||
|      */ | ||||
|     public function getClientFilename() | ||||
|     { | ||||
|         return $this->clientFilename; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function getClientMediaType() | ||||
|     { | ||||
|         return $this->clientMediaType; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										4
									
								
								vendor/guzzlehttp/psr7/src/Uri.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/guzzlehttp/psr7/src/Uri.php
									
									
									
									
										vendored
									
									
								
							| @@ -174,7 +174,7 @@ class Uri implements UriInterface | ||||
|             $parts['fragment'] = $relParts['fragment']; | ||||
|         } | ||||
|  | ||||
|         return new self(static::createUriString( | ||||
|         return new self(self::createUriString( | ||||
|             $parts['scheme'], | ||||
|             $parts['authority'], | ||||
|             $parts['path'], | ||||
| @@ -528,7 +528,7 @@ class Uri implements UriInterface | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
|         return !isset(static::$schemes[$scheme]) || $port !== static::$schemes[$scheme]; | ||||
|         return !isset(self::$schemes[$scheme]) || $port !== self::$schemes[$scheme]; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|   | ||||
							
								
								
									
										22
									
								
								vendor/guzzlehttp/psr7/src/functions.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/guzzlehttp/psr7/src/functions.php
									
									
									
									
										vendored
									
									
								
							| @@ -68,22 +68,24 @@ function uri_for($uri) | ||||
|  * - metadata: Array of custom metadata. | ||||
|  * - size: Size of the stream. | ||||
|  * | ||||
|  * @param resource|string|StreamInterface $resource Entity body data | ||||
|  * @param array                           $options  Additional options | ||||
|  * @param resource|int|string|float|bool|StreamInterface $resource Entity body data | ||||
|  * @param array                                          $options  Additional options | ||||
|  * | ||||
|  * @return Stream | ||||
|  * @throws \InvalidArgumentException if the $resource arg is not valid. | ||||
|  */ | ||||
| function stream_for($resource = '', array $options = []) | ||||
| { | ||||
|     if (is_scalar($resource)) { | ||||
|         $stream = fopen('php://temp', 'r+'); | ||||
|         if ($resource !== '') { | ||||
|             fwrite($stream, $resource); | ||||
|             fseek($stream, 0); | ||||
|         } | ||||
|         return new Stream($stream, $options); | ||||
|     } | ||||
|  | ||||
|     switch (gettype($resource)) { | ||||
|         case 'string': | ||||
|             $stream = fopen('php://temp', 'r+'); | ||||
|             if ($resource !== '') { | ||||
|                 fwrite($stream, $resource); | ||||
|                 fseek($stream, 0); | ||||
|             } | ||||
|             return new Stream($stream, $options); | ||||
|         case 'resource': | ||||
|             return new Stream($resource, $options); | ||||
|         case 'object': | ||||
| @@ -449,7 +451,7 @@ function parse_request($message) | ||||
| { | ||||
|     $data = _parse_message($message); | ||||
|     $matches = []; | ||||
|     if (!preg_match('/^[a-zA-Z]+\s+([a-zA-Z]+:\/\/|\/).*/', $data['start-line'], $matches)) { | ||||
|     if (!preg_match('/^[\S]+\s+([a-zA-Z]+:\/\/|\/).*/', $data['start-line'], $matches)) { | ||||
|         throw new \InvalidArgumentException('Invalid request string'); | ||||
|     } | ||||
|     $parts = explode(' ', $data['start-line'], 3); | ||||
|   | ||||
| @@ -282,6 +282,13 @@ class FunctionsTest extends \PHPUnit_Framework_TestCase | ||||
|         $this->assertEquals('https://www.google.com/search?q=foobar', (string) $request->getUri()); | ||||
|     } | ||||
|  | ||||
|     public function testParsesRequestMessagesWithCustomMethod() | ||||
|     { | ||||
|         $req = "GET_DATA / HTTP/1.1\r\nFoo: Bar\r\nHost: foo.com\r\n\r\n"; | ||||
|         $request = Psr7\parse_request($req); | ||||
|         $this->assertEquals('GET_DATA', $request->getMethod()); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @expectedException \InvalidArgumentException | ||||
|      */ | ||||
|   | ||||
| @@ -66,6 +66,34 @@ class MultipartStreamTest extends \PHPUnit_Framework_TestCase | ||||
|             . "\r\n\r\nbam\r\n--boundary--\r\n", (string) $b); | ||||
|     } | ||||
|  | ||||
|     public function testSerializesNonStringFields() | ||||
|     { | ||||
|         $b = new MultipartStream([ | ||||
|             [ | ||||
|                 'name'     => 'int', | ||||
|                 'contents' => (int) 1 | ||||
|             ], | ||||
|             [ | ||||
|                 'name' => 'bool', | ||||
|                 'contents' => (boolean) false | ||||
|             ], | ||||
|             [ | ||||
|                 'name' => 'bool2', | ||||
|                 'contents' => (boolean) true | ||||
|             ], | ||||
|             [ | ||||
|                 'name' => 'float', | ||||
|                 'contents' => (float) 1.1 | ||||
|             ] | ||||
|         ], 'boundary'); | ||||
|         $this->assertEquals( | ||||
|             "--boundary\r\nContent-Disposition: form-data; name=\"int\"\r\nContent-Length: 1\r\n\r\n" | ||||
|             . "1\r\n--boundary\r\nContent-Disposition: form-data; name=\"bool\"\r\n\r\n\r\n--boundary" | ||||
|             . "\r\nContent-Disposition: form-data; name=\"bool2\"\r\nContent-Length: 1\r\n\r\n" | ||||
|             . "1\r\n--boundary\r\nContent-Disposition: form-data; name=\"float\"\r\nContent-Length: 3" | ||||
|             . "\r\n\r\n1.1\r\n--boundary--\r\n", (string) $b); | ||||
|     } | ||||
|  | ||||
|     public function testSerializesFiles() | ||||
|     { | ||||
|         $f1 = Psr7\FnStream::decorate(Psr7\stream_for('foo'), [ | ||||
|   | ||||
							
								
								
									
										519
									
								
								vendor/guzzlehttp/psr7/tests/ServerRequestTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										519
									
								
								vendor/guzzlehttp/psr7/tests/ServerRequestTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,519 @@ | ||||
| <?php | ||||
| namespace GuzzleHttp\Tests\Psr7; | ||||
|  | ||||
| use GuzzleHttp\Psr7\ServerRequest; | ||||
| use GuzzleHttp\Psr7\UploadedFile; | ||||
| use GuzzleHttp\Psr7\Uri; | ||||
|  | ||||
| /** | ||||
|  * @covers GuzzleHttp\Psr7\ServerRequest | ||||
|  */ | ||||
| class ServerRequestTest extends \PHPUnit_Framework_TestCase | ||||
| { | ||||
|     public function dataNormalizeFiles() | ||||
|     { | ||||
|         return [ | ||||
|             'Single file' => [ | ||||
|                 [ | ||||
|                     'file' => [ | ||||
|                         'name' => 'MyFile.txt', | ||||
|                         'type' => 'text/plain', | ||||
|                         'tmp_name' => '/tmp/php/php1h4j1o', | ||||
|                         'error' => '0', | ||||
|                         'size' => '123' | ||||
|                     ] | ||||
|                 ], | ||||
|                 [ | ||||
|                     'file' => new UploadedFile( | ||||
|                         '/tmp/php/php1h4j1o', | ||||
|                         123, | ||||
|                         UPLOAD_ERR_OK, | ||||
|                         'MyFile.txt', | ||||
|                         'text/plain' | ||||
|                     ) | ||||
|                 ] | ||||
|             ], | ||||
|             'Empty file' => [ | ||||
|                 [ | ||||
|                     'image_file' => [ | ||||
|                         'name' => '', | ||||
|                         'type' => '', | ||||
|                         'tmp_name' => '', | ||||
|                         'error' => '4', | ||||
|                         'size' => '0' | ||||
|                     ] | ||||
|                 ], | ||||
|                 [ | ||||
|                     'image_file' => new UploadedFile( | ||||
|                         '', | ||||
|                         0, | ||||
|                         UPLOAD_ERR_NO_FILE, | ||||
|                         '', | ||||
|                         '' | ||||
|                     ) | ||||
|                 ] | ||||
|             ], | ||||
|             'Already Converted' => [ | ||||
|                 [ | ||||
|                     'file' => new UploadedFile( | ||||
|                         '/tmp/php/php1h4j1o', | ||||
|                         123, | ||||
|                         UPLOAD_ERR_OK, | ||||
|                         'MyFile.txt', | ||||
|                         'text/plain' | ||||
|                     ) | ||||
|                 ], | ||||
|                 [ | ||||
|                     'file' => new UploadedFile( | ||||
|                         '/tmp/php/php1h4j1o', | ||||
|                         123, | ||||
|                         UPLOAD_ERR_OK, | ||||
|                         'MyFile.txt', | ||||
|                         'text/plain' | ||||
|                     ) | ||||
|                 ] | ||||
|             ], | ||||
|             'Already Converted array' => [ | ||||
|                 [ | ||||
|                     'file' => [ | ||||
|                         new UploadedFile( | ||||
|                             '/tmp/php/php1h4j1o', | ||||
|                             123, | ||||
|                             UPLOAD_ERR_OK, | ||||
|                             'MyFile.txt', | ||||
|                             'text/plain' | ||||
|                         ), | ||||
|                         new UploadedFile( | ||||
|                             '', | ||||
|                             0, | ||||
|                             UPLOAD_ERR_NO_FILE, | ||||
|                             '', | ||||
|                             '' | ||||
|                         ) | ||||
|                     ], | ||||
|                 ], | ||||
|                 [ | ||||
|                     'file' => [ | ||||
|                         new UploadedFile( | ||||
|                             '/tmp/php/php1h4j1o', | ||||
|                             123, | ||||
|                             UPLOAD_ERR_OK, | ||||
|                             'MyFile.txt', | ||||
|                             'text/plain' | ||||
|                         ), | ||||
|                         new UploadedFile( | ||||
|                             '', | ||||
|                             0, | ||||
|                             UPLOAD_ERR_NO_FILE, | ||||
|                             '', | ||||
|                             '' | ||||
|                         ) | ||||
|                     ], | ||||
|                 ] | ||||
|             ], | ||||
|             'Multiple files' => [ | ||||
|                 [ | ||||
|                     'text_file' => [ | ||||
|                         'name' => 'MyFile.txt', | ||||
|                         'type' => 'text/plain', | ||||
|                         'tmp_name' => '/tmp/php/php1h4j1o', | ||||
|                         'error' => '0', | ||||
|                         'size' => '123' | ||||
|                     ], | ||||
|                     'image_file' => [ | ||||
|                         'name' => '', | ||||
|                         'type' => '', | ||||
|                         'tmp_name' => '', | ||||
|                         'error' => '4', | ||||
|                         'size' => '0' | ||||
|                     ] | ||||
|                 ], | ||||
|                 [ | ||||
|                     'text_file' => new UploadedFile( | ||||
|                         '/tmp/php/php1h4j1o', | ||||
|                         123, | ||||
|                         UPLOAD_ERR_OK, | ||||
|                         'MyFile.txt', | ||||
|                         'text/plain' | ||||
|                     ), | ||||
|                     'image_file' => new UploadedFile( | ||||
|                         '', | ||||
|                         0, | ||||
|                         UPLOAD_ERR_NO_FILE, | ||||
|                         '', | ||||
|                         '' | ||||
|                     ) | ||||
|                 ] | ||||
|             ], | ||||
|             'Nested files' => [ | ||||
|                 [ | ||||
|                     'file' => [ | ||||
|                         'name' => [ | ||||
|                             0 => 'MyFile.txt', | ||||
|                             1 => 'Image.png', | ||||
|                         ], | ||||
|                         'type' => [ | ||||
|                             0 => 'text/plain', | ||||
|                             1 => 'image/png', | ||||
|                         ], | ||||
|                         'tmp_name' => [ | ||||
|                             0 => '/tmp/php/hp9hskjhf', | ||||
|                             1 => '/tmp/php/php1h4j1o', | ||||
|                         ], | ||||
|                         'error' => [ | ||||
|                             0 => '0', | ||||
|                             1 => '0', | ||||
|                         ], | ||||
|                         'size' => [ | ||||
|                             0 => '123', | ||||
|                             1 => '7349', | ||||
|                         ], | ||||
|                     ], | ||||
|                     'nested' => [ | ||||
|                         'name' => [ | ||||
|                             'other' => 'Flag.txt', | ||||
|                             'test' => [ | ||||
|                                 0 => 'Stuff.txt', | ||||
|                                 1 => '', | ||||
|                             ], | ||||
|                         ], | ||||
|                         'type' => [ | ||||
|                             'other' => 'text/plain', | ||||
|                             'test' => [ | ||||
|                                 0 => 'text/plain', | ||||
|                                 1 => '', | ||||
|                             ], | ||||
|                         ], | ||||
|                         'tmp_name' => [ | ||||
|                             'other' => '/tmp/php/hp9hskjhf', | ||||
|                             'test' => [ | ||||
|                                 0 => '/tmp/php/asifu2gp3', | ||||
|                                 1 => '', | ||||
|                             ], | ||||
|                         ], | ||||
|                         'error' => [ | ||||
|                             'other' => '0', | ||||
|                             'test' => [ | ||||
|                                 0 => '0', | ||||
|                                 1 => '4', | ||||
|                             ], | ||||
|                         ], | ||||
|                         'size' => [ | ||||
|                             'other' => '421', | ||||
|                             'test' => [ | ||||
|                                 0 => '32', | ||||
|                                 1 => '0', | ||||
|                             ] | ||||
|                         ] | ||||
|                     ], | ||||
|                 ], | ||||
|                 [ | ||||
|                     'file' => [ | ||||
|                         0 => new UploadedFile( | ||||
|                             '/tmp/php/hp9hskjhf', | ||||
|                             123, | ||||
|                             UPLOAD_ERR_OK, | ||||
|                             'MyFile.txt', | ||||
|                             'text/plain' | ||||
|                         ), | ||||
|                         1 => new UploadedFile( | ||||
|                             '/tmp/php/php1h4j1o', | ||||
|                             7349, | ||||
|                             UPLOAD_ERR_OK, | ||||
|                             'Image.png', | ||||
|                             'image/png' | ||||
|                         ), | ||||
|                     ], | ||||
|                     'nested' => [ | ||||
|                         'other' => new UploadedFile( | ||||
|                             '/tmp/php/hp9hskjhf', | ||||
|                             421, | ||||
|                             UPLOAD_ERR_OK, | ||||
|                             'Flag.txt', | ||||
|                             'text/plain' | ||||
|                         ), | ||||
|                         'test' => [ | ||||
|                             0 => new UploadedFile( | ||||
|                                 '/tmp/php/asifu2gp3', | ||||
|                                 32, | ||||
|                                 UPLOAD_ERR_OK, | ||||
|                                 'Stuff.txt', | ||||
|                                 'text/plain' | ||||
|                             ), | ||||
|                             1 => new UploadedFile( | ||||
|                                 '', | ||||
|                                 0, | ||||
|                                 UPLOAD_ERR_NO_FILE, | ||||
|                                 '', | ||||
|                                 '' | ||||
|                             ), | ||||
|                         ] | ||||
|                     ] | ||||
|                 ] | ||||
|             ] | ||||
|         ]; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @dataProvider dataNormalizeFiles | ||||
|      */ | ||||
|     public function testNormalizeFiles($files, $expected) | ||||
|     { | ||||
|         $result = ServerRequest::normalizeFiles($files); | ||||
|  | ||||
|         $this->assertEquals($expected, $result); | ||||
|     } | ||||
|  | ||||
|     public function testNormalizeFilesRaisesException() | ||||
|     { | ||||
|         $this->setExpectedException('InvalidArgumentException', 'Invalid value in files specification'); | ||||
|  | ||||
|         ServerRequest::normalizeFiles(['test' => 'something']); | ||||
|     } | ||||
|  | ||||
|     public function dataGetUriFromGlobals() | ||||
|     { | ||||
|         $server = [ | ||||
|             'PHP_SELF' => '/blog/article.php', | ||||
|             'GATEWAY_INTERFACE' => 'CGI/1.1', | ||||
|             'SERVER_ADDR' => 'Server IP: 217.112.82.20', | ||||
|             'SERVER_NAME' => 'www.blakesimpson.co.uk', | ||||
|             'SERVER_SOFTWARE' => 'Apache/2.2.15 (Win32) JRun/4.0 PHP/5.2.13', | ||||
|             'SERVER_PROTOCOL' => 'HTTP/1.0', | ||||
|             'REQUEST_METHOD' => 'POST', | ||||
|             'REQUEST_TIME' => 'Request start time: 1280149029', | ||||
|             'QUERY_STRING' => 'id=10&user=foo', | ||||
|             'DOCUMENT_ROOT' => '/path/to/your/server/root/', | ||||
|             'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', | ||||
|             'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', | ||||
|             'HTTP_ACCEPT_ENCODING' => 'gzip,deflate', | ||||
|             'HTTP_ACCEPT_LANGUAGE' => 'en-gb,en;q=0.5', | ||||
|             'HTTP_CONNECTION' => 'keep-alive', | ||||
|             'HTTP_HOST' => 'www.blakesimpson.co.uk', | ||||
|             'HTTP_REFERER' => 'http://previous.url.com', | ||||
|             'HTTP_USER_AGENT' => 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 ( .NET CLR 3.5.30729)', | ||||
|             'HTTPS' => '1', | ||||
|             'REMOTE_ADDR' => '193.60.168.69', | ||||
|             'REMOTE_HOST' => 'Client server\'s host name', | ||||
|             'REMOTE_PORT' => '5390', | ||||
|             'SCRIPT_FILENAME' => '/path/to/this/script.php', | ||||
|             'SERVER_ADMIN' => 'webmaster@blakesimpson.co.uk', | ||||
|             'SERVER_PORT' => '80', | ||||
|             'SERVER_SIGNATURE' => 'Version signature: 5.123', | ||||
|             'SCRIPT_NAME' => '/blog/article.php', | ||||
|             'REQUEST_URI' => '/blog/article.php?id=10&user=foo', | ||||
|         ]; | ||||
|  | ||||
|         return [ | ||||
|             'Normal request' => [ | ||||
|                 'http://www.blakesimpson.co.uk/blog/article.php?id=10&user=foo', | ||||
|                 $server, | ||||
|             ], | ||||
|             'Secure request' => [ | ||||
|                 'https://www.blakesimpson.co.uk/blog/article.php?id=10&user=foo', | ||||
|                 array_merge($server, ['HTTPS' => 'on', 'SERVER_PORT' => '443']), | ||||
|             ], | ||||
|             'HTTP_HOST missing' => [ | ||||
|                 'http://www.blakesimpson.co.uk/blog/article.php?id=10&user=foo', | ||||
|                 array_merge($server, ['HTTP_HOST' => null]), | ||||
|             ], | ||||
|             'No query String' => [ | ||||
|                 'http://www.blakesimpson.co.uk/blog/article.php', | ||||
|                 array_merge($server, ['REQUEST_URI' => '/blog/article.php', 'QUERY_STRING' => '']), | ||||
|             ], | ||||
|             'Different port' => [ | ||||
|                 'http://www.blakesimpson.co.uk:8324/blog/article.php?id=10&user=foo', | ||||
|                 array_merge($server, ['SERVER_PORT' => '8324']), | ||||
|             ], | ||||
|             'Empty server variable' => [ | ||||
|                 '', | ||||
|                 [], | ||||
|             ], | ||||
|         ]; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @dataProvider dataGetUriFromGlobals | ||||
|      */ | ||||
|     public function testGetUriFromGlobals($expected, $serverParams) | ||||
|     { | ||||
|         $_SERVER = $serverParams; | ||||
|  | ||||
|         $this->assertEquals(new Uri($expected), ServerRequest::getUriFromGlobals()); | ||||
|     } | ||||
|  | ||||
|     public function testFromGlobals() | ||||
|     { | ||||
|         $_SERVER = [ | ||||
|             'PHP_SELF' => '/blog/article.php', | ||||
|             'GATEWAY_INTERFACE' => 'CGI/1.1', | ||||
|             'SERVER_ADDR' => 'Server IP: 217.112.82.20', | ||||
|             'SERVER_NAME' => 'www.blakesimpson.co.uk', | ||||
|             'SERVER_SOFTWARE' => 'Apache/2.2.15 (Win32) JRun/4.0 PHP/5.2.13', | ||||
|             'SERVER_PROTOCOL' => 'HTTP/1.0', | ||||
|             'REQUEST_METHOD' => 'POST', | ||||
|             'REQUEST_TIME' => 'Request start time: 1280149029', | ||||
|             'QUERY_STRING' => 'id=10&user=foo', | ||||
|             'DOCUMENT_ROOT' => '/path/to/your/server/root/', | ||||
|             'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', | ||||
|             'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', | ||||
|             'HTTP_ACCEPT_ENCODING' => 'gzip,deflate', | ||||
|             'HTTP_ACCEPT_LANGUAGE' => 'en-gb,en;q=0.5', | ||||
|             'HTTP_CONNECTION' => 'keep-alive', | ||||
|             'HTTP_HOST' => 'www.blakesimpson.co.uk', | ||||
|             'HTTP_REFERER' => 'http://previous.url.com', | ||||
|             'HTTP_USER_AGENT' => 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 ( .NET CLR 3.5.30729)', | ||||
|             'HTTPS' => '1', | ||||
|             'REMOTE_ADDR' => '193.60.168.69', | ||||
|             'REMOTE_HOST' => 'Client server\'s host name', | ||||
|             'REMOTE_PORT' => '5390', | ||||
|             'SCRIPT_FILENAME' => '/path/to/this/script.php', | ||||
|             'SERVER_ADMIN' => 'webmaster@blakesimpson.co.uk', | ||||
|             'SERVER_PORT' => '80', | ||||
|             'SERVER_SIGNATURE' => 'Version signature: 5.123', | ||||
|             'SCRIPT_NAME' => '/blog/article.php', | ||||
|             'REQUEST_URI' => '/blog/article.php?id=10&user=foo', | ||||
|         ]; | ||||
|  | ||||
|         $_COOKIE = [ | ||||
|             'logged-in' => 'yes!' | ||||
|         ]; | ||||
|  | ||||
|         $_POST = [ | ||||
|             'name' => 'Pesho', | ||||
|             'email' => 'pesho@example.com', | ||||
|         ]; | ||||
|  | ||||
|         $_GET = [ | ||||
|             'id' => 10, | ||||
|             'user' => 'foo', | ||||
|         ]; | ||||
|  | ||||
|         $_FILES = [ | ||||
|             'file' => [ | ||||
|                 'name' => 'MyFile.txt', | ||||
|                 'type' => 'text/plain', | ||||
|                 'tmp_name' => '/tmp/php/php1h4j1o', | ||||
|                 'error' => UPLOAD_ERR_OK, | ||||
|                 'size' => 123, | ||||
|             ] | ||||
|         ]; | ||||
|  | ||||
|         $server = ServerRequest::fromGlobals(); | ||||
|  | ||||
|         $this->assertEquals('POST', $server->getMethod()); | ||||
|         $this->assertEquals(['Host' => ['www.blakesimpson.co.uk']], $server->getHeaders()); | ||||
|         $this->assertEquals('', (string) $server->getBody()); | ||||
|         $this->assertEquals('1.0', $server->getProtocolVersion()); | ||||
|         $this->assertEquals($_COOKIE, $server->getCookieParams()); | ||||
|         $this->assertEquals($_POST, $server->getParsedBody()); | ||||
|         $this->assertEquals($_GET, $server->getQueryParams()); | ||||
|  | ||||
|         $this->assertEquals( | ||||
|             new Uri('http://www.blakesimpson.co.uk/blog/article.php?id=10&user=foo'), | ||||
|             $server->getUri() | ||||
|         ); | ||||
|  | ||||
|         $expectedFiles = [ | ||||
|             'file' => new UploadedFile( | ||||
|                 '/tmp/php/php1h4j1o', | ||||
|                 123, | ||||
|                 UPLOAD_ERR_OK, | ||||
|                 'MyFile.txt', | ||||
|                 'text/plain' | ||||
|             ), | ||||
|         ]; | ||||
|  | ||||
|         $this->assertEquals($expectedFiles, $server->getUploadedFiles()); | ||||
|     } | ||||
|  | ||||
|     public function testUploadedFiles() | ||||
|     { | ||||
|         $request1 = new ServerRequest('GET', '/'); | ||||
|  | ||||
|         $files = [ | ||||
|             'file' => new UploadedFile('test', 123, UPLOAD_ERR_OK) | ||||
|         ]; | ||||
|  | ||||
|         $request2 = $request1->withUploadedFiles($files); | ||||
|  | ||||
|         $this->assertNotSame($request2, $request1); | ||||
|         $this->assertSame([], $request1->getUploadedFiles()); | ||||
|         $this->assertSame($files, $request2->getUploadedFiles()); | ||||
|     } | ||||
|  | ||||
|     public function testServerParams() | ||||
|     { | ||||
|         $params = ['name' => 'value']; | ||||
|  | ||||
|         $request = new ServerRequest('GET', '/', [], null, '1.1', $params); | ||||
|         $this->assertSame($params, $request->getServerParams()); | ||||
|     } | ||||
|  | ||||
|     public function testCookieParams() | ||||
|     { | ||||
|         $request1 = new ServerRequest('GET', '/'); | ||||
|  | ||||
|         $params = ['name' => 'value']; | ||||
|  | ||||
|         $request2 = $request1->withCookieParams($params); | ||||
|  | ||||
|         $this->assertNotSame($request2, $request1); | ||||
|         $this->assertEmpty($request1->getCookieParams()); | ||||
|         $this->assertSame($params, $request2->getCookieParams()); | ||||
|     } | ||||
|  | ||||
|     public function testQueryParams() | ||||
|     { | ||||
|         $request1 = new ServerRequest('GET', '/'); | ||||
|  | ||||
|         $params = ['name' => 'value']; | ||||
|  | ||||
|         $request2 = $request1->withQueryParams($params); | ||||
|  | ||||
|         $this->assertNotSame($request2, $request1); | ||||
|         $this->assertEmpty($request1->getQueryParams()); | ||||
|         $this->assertSame($params, $request2->getQueryParams()); | ||||
|     } | ||||
|  | ||||
|     public function testParsedBody() | ||||
|     { | ||||
|         $request1 = new ServerRequest('GET', '/'); | ||||
|  | ||||
|         $params = ['name' => 'value']; | ||||
|  | ||||
|         $request2 = $request1->withParsedBody($params); | ||||
|  | ||||
|         $this->assertNotSame($request2, $request1); | ||||
|         $this->assertEmpty($request1->getParsedBody()); | ||||
|         $this->assertSame($params, $request2->getParsedBody()); | ||||
|     } | ||||
|  | ||||
|     public function testAttributes() | ||||
|     { | ||||
|         $request1 = new ServerRequest('GET', '/'); | ||||
|  | ||||
|         $request2 = $request1->withAttribute('name', 'value'); | ||||
|         $request3 = $request2->withAttribute('other', 'otherValue'); | ||||
|         $request4 = $request3->withoutAttribute('other'); | ||||
|         $request5 = $request3->withoutAttribute('unknown'); | ||||
|  | ||||
|         $this->assertNotSame($request2, $request1); | ||||
|         $this->assertNotSame($request3, $request2); | ||||
|         $this->assertNotSame($request4, $request3); | ||||
|         $this->assertNotSame($request5, $request4); | ||||
|  | ||||
|         $this->assertEmpty($request1->getAttributes()); | ||||
|         $this->assertEmpty($request1->getAttribute('name')); | ||||
|         $this->assertEquals( | ||||
|             'something', | ||||
|             $request1->getAttribute('name', 'something'), | ||||
|             'Should return the default value' | ||||
|         ); | ||||
|  | ||||
|         $this->assertEquals('value', $request2->getAttribute('name')); | ||||
|         $this->assertEquals(['name' => 'value'], $request2->getAttributes()); | ||||
|         $this->assertEquals(['name' => 'value', 'other' => 'otherValue'], $request3->getAttributes()); | ||||
|         $this->assertEquals(['name' => 'value'], $request4->getAttributes()); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										280
									
								
								vendor/guzzlehttp/psr7/tests/UploadedFileTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										280
									
								
								vendor/guzzlehttp/psr7/tests/UploadedFileTest.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,280 @@ | ||||
| <?php | ||||
| namespace GuzzleHttp\Tests\Psr7; | ||||
|  | ||||
| use ReflectionProperty; | ||||
| use GuzzleHttp\Psr7\Stream; | ||||
| use GuzzleHttp\Psr7\UploadedFile; | ||||
|  | ||||
| /** | ||||
|  * @covers GuzzleHttp\Psr7\UploadedFile | ||||
|  */ | ||||
| class UploadedFileTest extends \PHPUnit_Framework_TestCase | ||||
| { | ||||
|     protected $cleanup; | ||||
|  | ||||
|     public function setUp() | ||||
|     { | ||||
|         $this->cleanup = []; | ||||
|     } | ||||
|  | ||||
|     public function tearDown() | ||||
|     { | ||||
|         foreach ($this->cleanup as $file) { | ||||
|             if (is_scalar($file) && file_exists($file)) { | ||||
|                 unlink($file); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public function invalidStreams() | ||||
|     { | ||||
|         return [ | ||||
|             'null'         => [null], | ||||
|             'true'         => [true], | ||||
|             'false'        => [false], | ||||
|             'int'          => [1], | ||||
|             'float'        => [1.1], | ||||
|             'array'        => [['filename']], | ||||
|             'object'       => [(object) ['filename']], | ||||
|         ]; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @dataProvider invalidStreams | ||||
|      */ | ||||
|     public function testRaisesExceptionOnInvalidStreamOrFile($streamOrFile) | ||||
|     { | ||||
|         $this->setExpectedException('InvalidArgumentException'); | ||||
|  | ||||
|         new UploadedFile($streamOrFile, 0, UPLOAD_ERR_OK); | ||||
|     } | ||||
|  | ||||
|     public function invalidSizes() | ||||
|     { | ||||
|         return [ | ||||
|             'null'   => [null], | ||||
|             'float'  => [1.1], | ||||
|             'array'  => [[1]], | ||||
|             'object' => [(object) [1]], | ||||
|         ]; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @dataProvider invalidSizes | ||||
|      */ | ||||
|     public function testRaisesExceptionOnInvalidSize($size) | ||||
|     { | ||||
|         $this->setExpectedException('InvalidArgumentException', 'size'); | ||||
|  | ||||
|         new UploadedFile(fopen('php://temp', 'wb+'), $size, UPLOAD_ERR_OK); | ||||
|     } | ||||
|  | ||||
|     public function invalidErrorStatuses() | ||||
|     { | ||||
|         return [ | ||||
|             'null'     => [null], | ||||
|             'true'     => [true], | ||||
|             'false'    => [false], | ||||
|             'float'    => [1.1], | ||||
|             'string'   => ['1'], | ||||
|             'array'    => [[1]], | ||||
|             'object'   => [(object) [1]], | ||||
|             'negative' => [-1], | ||||
|             'too-big'  => [9], | ||||
|         ]; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @dataProvider invalidErrorStatuses | ||||
|      */ | ||||
|     public function testRaisesExceptionOnInvalidErrorStatus($status) | ||||
|     { | ||||
|         $this->setExpectedException('InvalidArgumentException', 'status'); | ||||
|  | ||||
|         new UploadedFile(fopen('php://temp', 'wb+'), 0, $status); | ||||
|     } | ||||
|  | ||||
|     public function invalidFilenamesAndMediaTypes() | ||||
|     { | ||||
|         return [ | ||||
|             'true'   => [true], | ||||
|             'false'  => [false], | ||||
|             'int'    => [1], | ||||
|             'float'  => [1.1], | ||||
|             'array'  => [['string']], | ||||
|             'object' => [(object) ['string']], | ||||
|         ]; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @dataProvider invalidFilenamesAndMediaTypes | ||||
|      */ | ||||
|     public function testRaisesExceptionOnInvalidClientFilename($filename) | ||||
|     { | ||||
|         $this->setExpectedException('InvalidArgumentException', 'filename'); | ||||
|  | ||||
|         new UploadedFile(fopen('php://temp', 'wb+'), 0, UPLOAD_ERR_OK, $filename); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @dataProvider invalidFilenamesAndMediaTypes | ||||
|      */ | ||||
|     public function testRaisesExceptionOnInvalidClientMediaType($mediaType) | ||||
|     { | ||||
|         $this->setExpectedException('InvalidArgumentException', 'media type'); | ||||
|  | ||||
|         new UploadedFile(fopen('php://temp', 'wb+'), 0, UPLOAD_ERR_OK, 'foobar.baz', $mediaType); | ||||
|     } | ||||
|  | ||||
|     public function testGetStreamReturnsOriginalStreamObject() | ||||
|     { | ||||
|         $stream = new Stream(fopen('php://temp', 'r')); | ||||
|         $upload = new UploadedFile($stream, 0, UPLOAD_ERR_OK); | ||||
|  | ||||
|         $this->assertSame($stream, $upload->getStream()); | ||||
|     } | ||||
|  | ||||
|     public function testGetStreamReturnsWrappedPhpStream() | ||||
|     { | ||||
|         $stream = fopen('php://temp', 'wb+'); | ||||
|         $upload = new UploadedFile($stream, 0, UPLOAD_ERR_OK); | ||||
|         $uploadStream = $upload->getStream()->detach(); | ||||
|  | ||||
|         $this->assertSame($stream, $uploadStream); | ||||
|     } | ||||
|  | ||||
|     public function testGetStreamReturnsStreamForFile() | ||||
|     { | ||||
|         $this->cleanup[] = $stream = tempnam(sys_get_temp_dir(), 'stream_file'); | ||||
|         $upload = new UploadedFile($stream, 0, UPLOAD_ERR_OK); | ||||
|         $uploadStream = $upload->getStream(); | ||||
|         $r = new ReflectionProperty($uploadStream, 'filename'); | ||||
|         $r->setAccessible(true); | ||||
|  | ||||
|         $this->assertSame($stream, $r->getValue($uploadStream)); | ||||
|     } | ||||
|  | ||||
|     public function testSuccessful() | ||||
|     { | ||||
|         $stream = \GuzzleHttp\Psr7\stream_for('Foo bar!'); | ||||
|         $upload = new UploadedFile($stream, $stream->getSize(), UPLOAD_ERR_OK, 'filename.txt', 'text/plain'); | ||||
|  | ||||
|         $this->assertEquals($stream->getSize(), $upload->getSize()); | ||||
|         $this->assertEquals('filename.txt', $upload->getClientFilename()); | ||||
|         $this->assertEquals('text/plain', $upload->getClientMediaType()); | ||||
|  | ||||
|         $this->cleanup[] = $to = tempnam(sys_get_temp_dir(), 'successful'); | ||||
|         $upload->moveTo($to); | ||||
|         $this->assertFileExists($to); | ||||
|         $this->assertEquals($stream->__toString(), file_get_contents($to)); | ||||
|     } | ||||
|  | ||||
|     public function invalidMovePaths() | ||||
|     { | ||||
|         return [ | ||||
|             'null'   => [null], | ||||
|             'true'   => [true], | ||||
|             'false'  => [false], | ||||
|             'int'    => [1], | ||||
|             'float'  => [1.1], | ||||
|             'empty'  => [''], | ||||
|             'array'  => [['filename']], | ||||
|             'object' => [(object) ['filename']], | ||||
|         ]; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @dataProvider invalidMovePaths | ||||
|      */ | ||||
|     public function testMoveRaisesExceptionForInvalidPath($path) | ||||
|     { | ||||
|         $stream = \GuzzleHttp\Psr7\stream_for('Foo bar!'); | ||||
|         $upload = new UploadedFile($stream, 0, UPLOAD_ERR_OK); | ||||
|  | ||||
|         $this->cleanup[] = $path; | ||||
|  | ||||
|         $this->setExpectedException('InvalidArgumentException', 'path'); | ||||
|         $upload->moveTo($path); | ||||
|     } | ||||
|  | ||||
|     public function testMoveCannotBeCalledMoreThanOnce() | ||||
|     { | ||||
|         $stream = \GuzzleHttp\Psr7\stream_for('Foo bar!'); | ||||
|         $upload = new UploadedFile($stream, 0, UPLOAD_ERR_OK); | ||||
|  | ||||
|         $this->cleanup[] = $to = tempnam(sys_get_temp_dir(), 'diac'); | ||||
|         $upload->moveTo($to); | ||||
|         $this->assertTrue(file_exists($to)); | ||||
|  | ||||
|         $this->setExpectedException('RuntimeException', 'moved'); | ||||
|         $upload->moveTo($to); | ||||
|     } | ||||
|  | ||||
|     public function testCannotRetrieveStreamAfterMove() | ||||
|     { | ||||
|         $stream = \GuzzleHttp\Psr7\stream_for('Foo bar!'); | ||||
|         $upload = new UploadedFile($stream, 0, UPLOAD_ERR_OK); | ||||
|  | ||||
|         $this->cleanup[] = $to = tempnam(sys_get_temp_dir(), 'diac'); | ||||
|         $upload->moveTo($to); | ||||
|         $this->assertFileExists($to); | ||||
|  | ||||
|         $this->setExpectedException('RuntimeException', 'moved'); | ||||
|         $upload->getStream(); | ||||
|     } | ||||
|  | ||||
|     public function nonOkErrorStatus() | ||||
|     { | ||||
|         return [ | ||||
|             'UPLOAD_ERR_INI_SIZE'   => [ UPLOAD_ERR_INI_SIZE ], | ||||
|             'UPLOAD_ERR_FORM_SIZE'  => [ UPLOAD_ERR_FORM_SIZE ], | ||||
|             'UPLOAD_ERR_PARTIAL'    => [ UPLOAD_ERR_PARTIAL ], | ||||
|             'UPLOAD_ERR_NO_FILE'    => [ UPLOAD_ERR_NO_FILE ], | ||||
|             'UPLOAD_ERR_NO_TMP_DIR' => [ UPLOAD_ERR_NO_TMP_DIR ], | ||||
|             'UPLOAD_ERR_CANT_WRITE' => [ UPLOAD_ERR_CANT_WRITE ], | ||||
|             'UPLOAD_ERR_EXTENSION'  => [ UPLOAD_ERR_EXTENSION ], | ||||
|         ]; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @dataProvider nonOkErrorStatus | ||||
|      */ | ||||
|     public function testConstructorDoesNotRaiseExceptionForInvalidStreamWhenErrorStatusPresent($status) | ||||
|     { | ||||
|         $uploadedFile = new UploadedFile('not ok', 0, $status); | ||||
|         $this->assertSame($status, $uploadedFile->getError()); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @dataProvider nonOkErrorStatus | ||||
|      */ | ||||
|     public function testMoveToRaisesExceptionWhenErrorStatusPresent($status) | ||||
|     { | ||||
|         $uploadedFile = new UploadedFile('not ok', 0, $status); | ||||
|         $this->setExpectedException('RuntimeException', 'upload error'); | ||||
|         $uploadedFile->moveTo(__DIR__ . '/' . uniqid()); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @dataProvider nonOkErrorStatus | ||||
|      */ | ||||
|     public function testGetStreamRaisesExceptionWhenErrorStatusPresent($status) | ||||
|     { | ||||
|         $uploadedFile = new UploadedFile('not ok', 0, $status); | ||||
|         $this->setExpectedException('RuntimeException', 'upload error'); | ||||
|         $stream = $uploadedFile->getStream(); | ||||
|     } | ||||
|  | ||||
|     public function testMoveToCreatesStreamIfOnlyAFilenameWasProvided() | ||||
|     { | ||||
|         $this->cleanup[] = $from = tempnam(sys_get_temp_dir(), 'copy_from'); | ||||
|         $this->cleanup[] = $to = tempnam(sys_get_temp_dir(), 'copy_to'); | ||||
|  | ||||
|         copy(__FILE__, $from); | ||||
|  | ||||
|         $uploadedFile = new UploadedFile($from, 100, UPLOAD_ERR_OK, basename($from), 'text/plain'); | ||||
|         $uploadedFile->moveTo($to); | ||||
|  | ||||
|         $this->assertFileEquals(__FILE__, $to); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										15
									
								
								vendor/guzzlehttp/psr7/tests/UriTest.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								vendor/guzzlehttp/psr7/tests/UriTest.php
									
									
									
									
										vendored
									
									
								
							| @@ -278,4 +278,19 @@ class UriTest extends \PHPUnit_Framework_TestCase | ||||
|         $input = 'urn://example:animal:ferret:nose'; | ||||
|         $uri = new Uri($input); | ||||
|     } | ||||
|  | ||||
|     public function testExtendingClassesInstantiates() | ||||
|     { | ||||
|         // The non-standard port triggers a cascade of private methods which | ||||
|         //  should not use late static binding to access private static members. | ||||
|         // If they do, this will fatal. | ||||
|         $this->assertInstanceOf( | ||||
|             '\GuzzleHttp\Tests\Psr7\ExtendingClassTest', | ||||
|             new ExtendingClassTest('http://h:9/') | ||||
|         ); | ||||
|     } | ||||
| } | ||||
|  | ||||
| class ExtendingClassTest extends \GuzzleHttp\Psr7\Uri | ||||
| { | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sujit Prasad
					Sujit Prasad