diff --git a/composer.json b/composer.json index d6cdc7f..67095fe 100644 --- a/composer.json +++ b/composer.json @@ -25,6 +25,7 @@ "easyrdf/easyrdf": "0.8.*", "phpunit/phpunit": "4.1.*", "phpunit/phpunit-mock-objects": "dev-master#e60bb929c50ae4237aaf680a4f6773f4ee17f0a2", + "willdurand/negotiation": "1.3.*", "zendframework/zend-feed": "2.2.*", "mikey179/vfsStream": "1.*" }, diff --git a/composer.lock b/composer.lock index e1f9771..34ca670 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "2b2309c748ec92230880579aaedfa1e6", + "hash": "8f128351f51886eefcd4609510ba00f1", "packages": [ { "name": "doctrine/annotations", @@ -80,22 +80,34 @@ }, { "name": "doctrine/cache", - "version": "v1.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "v1.0" + "reference": "e16d7adf45664a50fa86f515b6d5e7f670130449" }, "dist": { "type": "zip", - "url": "https://github.com/doctrine/cache/archive/v1.0.zip", - "reference": "v1.0", + "url": "https://api.github.com/repos/doctrine/cache/zipball/e16d7adf45664a50fa86f515b6d5e7f670130449", + "reference": "e16d7adf45664a50fa86f515b6d5e7f670130449", "shasum": "" }, "require": { "php": ">=5.3.2" }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "phpunit/phpunit": ">=3.7", + "satooshi/php-coveralls": "~0.6" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-0": { "Doctrine\\Common\\Cache\\": "lib/" @@ -109,7 +121,8 @@ { "name": "Jonathan Wage", "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/" + "homepage": "http://www.jwage.com/", + "role": "Creator" }, { "name": "Guilherme Blanco", @@ -125,7 +138,7 @@ "email": "kontakt@beberlei.de" }, { - "name": "Johannes M. Schmitt", + "name": "Johannes Schmitt", "email": "schmittjoh@gmail.com", "homepage": "https://github.com/schmittjoh", "role": "Developer of wrapped JMSSerializerBundle" @@ -137,20 +150,20 @@ "cache", "caching" ], - "time": "2013-01-10 22:43:46" + "time": "2013-10-25 19:04:14" }, { "name": "doctrine/collections", - "version": "v1.1", + "version": "v1.2", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "v1.1" + "reference": "b99c5c46c87126201899afe88ec490a25eedd6a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/v1.1", - "reference": "v1.1", + "url": "https://api.github.com/repos/doctrine/collections/zipball/b99c5c46c87126201899afe88ec490a25eedd6a2", + "reference": "b99c5c46c87126201899afe88ec490a25eedd6a2", "shasum": "" }, "require": { @@ -159,7 +172,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -175,7 +188,8 @@ { "name": "Jonathan Wage", "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/" + "homepage": "http://www.jwage.com/", + "role": "Creator" }, { "name": "Guilherme Blanco", @@ -191,7 +205,7 @@ "email": "kontakt@beberlei.de" }, { - "name": "Johannes M. Schmitt", + "name": "Johannes Schmitt", "email": "schmittjoh@gmail.com", "homepage": "https://github.com/schmittjoh", "role": "Developer of wrapped JMSSerializerBundle" @@ -204,7 +218,7 @@ "collections", "iterator" ], - "time": "2013-03-07 12:15:54" + "time": "2014-02-03 23:07:43" }, { "name": "doctrine/common", @@ -459,21 +473,21 @@ }, { "name": "guzzlehttp/guzzle", - "version": "4.1.3", + "version": "4.1.5", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "012b2aecbda4e38f119c19580898685851015fa7" + "reference": "75e58ada121dffe1038331b808f8d3109499edc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/012b2aecbda4e38f119c19580898685851015fa7", - "reference": "012b2aecbda4e38f119c19580898685851015fa7", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/75e58ada121dffe1038331b808f8d3109499edc4", + "reference": "75e58ada121dffe1038331b808f8d3109499edc4", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/streams": "~1.3", + "guzzlehttp/streams": "~1.4", "php": ">=5.4.0" }, "require-dev": { @@ -520,20 +534,20 @@ "rest", "web service" ], - "time": "2014-07-16 03:01:02" + "time": "2014-08-02 22:52:37" }, { "name": "guzzlehttp/streams", - "version": "1.3.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/guzzle/streams.git", - "reference": "d6aaa91cfdbae86355dd2a168a3ca536755898a2" + "reference": "3b761a328e5ed6ed519e960aded95d7acbe77894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/streams/zipball/d6aaa91cfdbae86355dd2a168a3ca536755898a2", - "reference": "d6aaa91cfdbae86355dd2a168a3ca536755898a2", + "url": "https://api.github.com/repos/guzzle/streams/zipball/3b761a328e5ed6ed519e960aded95d7acbe77894", + "reference": "3b761a328e5ed6ed519e960aded95d7acbe77894", "shasum": "" }, "require": { @@ -545,7 +559,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.4.x-dev" } }, "autoload": { @@ -573,25 +587,25 @@ "Guzzle", "stream" ], - "time": "2014-07-15 22:02:02" + "time": "2014-07-19 18:43:42" }, { "name": "kriswallsmith/assetic", - "version": "v1.1.1", + "version": "v1.1.2", "source": { "type": "git", "url": "https://github.com/kriswallsmith/assetic.git", - "reference": "v1.1.1" + "reference": "735cffd3982c6e8cdebe292d5db39d077f65890f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/v1.1.1", - "reference": "v1.1.1", + "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/735cffd3982c6e8cdebe292d5db39d077f65890f", + "reference": "735cffd3982c6e8cdebe292d5db39d077f65890f", "shasum": "" }, "require": { "php": ">=5.3.1", - "symfony/process": ">=2.1,<3.0" + "symfony/process": "~2.1" }, "require-dev": { "cssmin/cssmin": "*", @@ -601,9 +615,9 @@ "leafo/scssphp": "*", "leafo/scssphp-compass": "*", "mrclay/minify": "*", - "phpunit/phpunit": ">=3.7,<4.0", + "phpunit/phpunit": "~3.7", "ptachoire/cssembed": "*", - "twig/twig": ">=1.6,<2.0" + "twig/twig": "~1.6" }, "suggest": { "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler", @@ -644,26 +658,34 @@ "compression", "minification" ], - "time": "2013-06-01 22:13:43" + "time": "2013-07-19 00:03:27" }, { "name": "mikey179/vfsStream", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/mikey179/vfsStream.git", - "reference": "063fb10633f10c5ccbcac26227e94f46d9336f90" + "reference": "8571f349567e02af1b7efc0fc4e3a4a1c98e664e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/063fb10633f10c5ccbcac26227e94f46d9336f90", - "reference": "063fb10633f10c5ccbcac26227e94f46d9336f90", + "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/8571f349567e02af1b7efc0fc4e3a4a1c98e664e", + "reference": "8571f349567e02af1b7efc0fc4e3a4a1c98e664e", "shasum": "" }, "require": { "php": ">=5.3.0" }, + "require-dev": { + "phpunit/phpunit": "~4.1" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, "autoload": { "psr-0": { "org\\bovigo\\vfs\\": "src/main/php" @@ -674,20 +696,133 @@ "BSD" ], "homepage": "http://vfs.bovigo.org/", - "time": "2013-04-01 10:41:02" + "time": "2014-07-21 20:15:54" + }, + { + "name": "ocramius/instantiator", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/Ocramius/Instantiator.git", + "reference": "cc754c2289ffd4483c319f6ed6ee88ce21676f64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Ocramius/Instantiator/zipball/cc754c2289ffd4483c319f6ed6ee88ce21676f64", + "reference": "cc754c2289ffd4483c319f6ed6ee88ce21676f64", + "shasum": "" + }, + "require": { + "ocramius/lazy-map": "1.0.*", + "php": "~5.3" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "2.0.*@ALPHA" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Instantiator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/", + "role": "Developer" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/Ocramius/Instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2014-06-15 11:44:46" + }, + { + "name": "ocramius/lazy-map", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/Ocramius/LazyMap.git", + "reference": "7fe3d347f5e618bcea7d39345ff83f3651d8b752" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Ocramius/LazyMap/zipball/7fe3d347f5e618bcea7d39345ff83f3651d8b752", + "reference": "7fe3d347f5e618bcea7d39345ff83f3651d8b752", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "athletic/athletic": "~0.1.6", + "phpmd/phpmd": "1.5.*", + "phpunit/phpunit": ">=3.7", + "satooshi/php-coveralls": "~0.6", + "squizlabs/php_codesniffer": "1.4.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "LazyMap\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/", + "role": "Developer" + } + ], + "description": "A library that provides lazy instantiation logic for a map of objects", + "homepage": "https://github.com/Ocramius/LazyMap", + "keywords": [ + "lazy", + "lazy instantiation", + "lazy loading", + "map", + "service location" + ], + "time": "2013-11-09 22:30:54" }, { "name": "phpunit/php-code-coverage", - "version": "2.0.8", + "version": "2.0.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "58401826c8cfc8fd689b60026e91c337df374bca" + "reference": "ed8ac99ce38c3fd134128c898f7ca74665abef7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/58401826c8cfc8fd689b60026e91c337df374bca", - "reference": "58401826c8cfc8fd689b60026e91c337df374bca", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ed8ac99ce38c3fd134128c898f7ca74665abef7f", + "reference": "ed8ac99ce38c3fd134128c898f7ca74665abef7f", "shasum": "" }, "require": { @@ -739,7 +874,7 @@ "testing", "xunit" ], - "time": "2014-05-26 14:55:24" + "time": "2014-06-29 08:14:40" }, { "name": "phpunit/php-file-iterator", @@ -926,16 +1061,16 @@ }, { "name": "phpunit/phpunit", - "version": "4.1.3", + "version": "4.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "939cb801b3b2aa253aedd0b279f40bb8f35cec91" + "reference": "a71c4842c5fb836d8b200624583b859ec34e8a26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/939cb801b3b2aa253aedd0b279f40bb8f35cec91", - "reference": "939cb801b3b2aa253aedd0b279f40bb8f35cec91", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a71c4842c5fb836d8b200624583b859ec34e8a26", + "reference": "a71c4842c5fb836d8b200624583b859ec34e8a26", "shasum": "" }, "require": { @@ -996,7 +1131,7 @@ "testing", "xunit" ], - "time": "2014-06-11 14:15:47" + "time": "2014-07-18 07:15:58" }, { "name": "phpunit/phpunit-mock-objects", @@ -1013,6 +1148,7 @@ "shasum": "" }, "require": { + "ocramius/instantiator": "~1.0", "php": ">=5.3.3", "phpunit/php-text-template": "~1.2" }, @@ -1095,21 +1231,25 @@ }, { "name": "sdboyer/gliph", - "version": "0.1.4", + "version": "0.1.8", "source": { "type": "git", "url": "https://github.com/sdboyer/gliph.git", - "reference": "aad932ef7d808105341cc9a36538e9fe2cb5ee82" + "reference": "db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sdboyer/gliph/zipball/aad932ef7d808105341cc9a36538e9fe2cb5ee82", - "reference": "aad932ef7d808105341cc9a36538e9fe2cb5ee82", + "url": "https://api.github.com/repos/sdboyer/gliph/zipball/db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e", + "reference": "db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e", "shasum": "" }, "require": { "php": ">=5.3" }, + "require-dev": { + "phpunit/phpunit": "3.7.*", + "satooshi/php-coveralls": "0.6.*" + }, "type": "library", "autoload": { "psr-0": { @@ -1135,7 +1275,7 @@ "php", "spl" ], - "time": "2013-09-27 01:15:21" + "time": "2014-08-03 14:34:47" }, { "name": "sebastian/comparator", @@ -1465,17 +1605,17 @@ }, { "name": "symfony/class-loader", - "version": "v2.4.1", + "version": "v2.4.8", "target-dir": "Symfony/Component/ClassLoader", "source": { "type": "git", "url": "https://github.com/symfony/ClassLoader.git", - "reference": "6a2ebedbc780130f07b3a15363743d08eb46820c" + "reference": "94b18e1beb7708872e237e1cab82c7369e817b0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ClassLoader/zipball/6a2ebedbc780130f07b3a15363743d08eb46820c", - "reference": "6a2ebedbc780130f07b3a15363743d08eb46820c", + "url": "https://api.github.com/repos/symfony/ClassLoader/zipball/94b18e1beb7708872e237e1cab82c7369e817b0a", + "reference": "94b18e1beb7708872e237e1cab82c7369e817b0a", "shasum": "" }, "require": { @@ -1502,7 +1642,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1511,21 +1653,21 @@ ], "description": "Symfony ClassLoader Component", "homepage": "http://symfony.com", - "time": "2013-11-26 16:40:27" + "time": "2014-07-09 09:04:55" }, { "name": "symfony/css-selector", - "version": "v2.4.4", + "version": "v2.4.8", "target-dir": "Symfony/Component/CssSelector", "source": { "type": "git", "url": "https://github.com/symfony/CssSelector.git", - "reference": "479a5b409723f596ffc3b5178034e4d76ce615b3" + "reference": "52c35be379ec341c15d2edc7f798f7fd69708645" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/CssSelector/zipball/479a5b409723f596ffc3b5178034e4d76ce615b3", - "reference": "479a5b409723f596ffc3b5178034e4d76ce615b3", + "url": "https://api.github.com/repos/symfony/CssSelector/zipball/52c35be379ec341c15d2edc7f798f7fd69708645", + "reference": "52c35be379ec341c15d2edc7f798f7fd69708645", "shasum": "" }, "require": { @@ -1564,21 +1706,21 @@ ], "description": "Symfony CssSelector Component", "homepage": "http://symfony.com", - "time": "2014-04-18 20:37:09" + "time": "2014-07-09 09:04:55" }, { "name": "symfony/debug", - "version": "v2.3.4", + "version": "v2.5.2", "target-dir": "Symfony/Component/Debug", "source": { "type": "git", - "url": "https://github.com/symfony/Debug.git", - "reference": "729f6d19cfc401c4942e43fcc1059103bd6df130" + "url": "git@github.com:symfony/Debug.git", + "reference": "a725879a4b1c0e9a242c7a0480e787cb6465cb8f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Debug/zipball/729f6d19cfc401c4942e43fcc1059103bd6df130", - "reference": "729f6d19cfc401c4942e43fcc1059103bd6df130", + "url": "https://api.github.com/repos/symfony/Debug/zipball/a725879a4b1c0e9a242c7a0480e787cb6465cb8f", + "reference": "a725879a4b1c0e9a242c7a0480e787cb6465cb8f", "shasum": "" }, "require": { @@ -1589,14 +1731,13 @@ "symfony/http-kernel": "~2.1" }, "suggest": { - "symfony/class-loader": "", "symfony/http-foundation": "", "symfony/http-kernel": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -1610,31 +1751,31 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Debug Component", "homepage": "http://symfony.com", - "time": "2013-08-08 14:16:10" + "time": "2014-07-09 09:05:48" }, { "name": "symfony/dependency-injection", - "version": "v2.4.1", + "version": "v2.4.8", "target-dir": "Symfony/Component/DependencyInjection", "source": { "type": "git", "url": "https://github.com/symfony/DependencyInjection.git", - "reference": "7e5bde3a607dde1f8ddef5180759068ad53d259c" + "reference": "0655a6b985d2ecb248825b7f5ed569a85a822e53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/7e5bde3a607dde1f8ddef5180759068ad53d259c", - "reference": "7e5bde3a607dde1f8ddef5180759068ad53d259c", + "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/0655a6b985d2ecb248825b7f5ed569a85a822e53", + "reference": "0655a6b985d2ecb248825b7f5ed569a85a822e53", "shasum": "" }, "require": { @@ -1668,7 +1809,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1677,21 +1820,21 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "http://symfony.com", - "time": "2014-01-01 09:02:49" + "time": "2014-07-09 09:04:55" }, { "name": "symfony/event-dispatcher", - "version": "v2.4.1", + "version": "v2.4.8", "target-dir": "Symfony/Component/EventDispatcher", "source": { "type": "git", "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "e3ba42f6a70554ed05749e61b829550f6ac33601" + "reference": "6008a029b6a3c0816d58be2ca8923e324cc89d93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/e3ba42f6a70554ed05749e61b829550f6ac33601", - "reference": "e3ba42f6a70554ed05749e61b829550f6ac33601", + "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/6008a029b6a3c0816d58be2ca8923e324cc89d93", + "reference": "6008a029b6a3c0816d58be2ca8923e324cc89d93", "shasum": "" }, "require": { @@ -1722,7 +1865,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1731,26 +1876,29 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "http://symfony.com", - "time": "2013-12-28 08:12:03" + "time": "2014-07-09 09:04:55" }, { "name": "symfony/http-foundation", - "version": "v2.4.1", + "version": "v2.4.8", "target-dir": "Symfony/Component/HttpFoundation", "source": { "type": "git", "url": "https://github.com/symfony/HttpFoundation.git", - "reference": "6c6b8a7bcd7e2cc920cd6acace563fdbf121d844" + "reference": "68abe34601c519359b60363b99c29ecfb6679bc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/6c6b8a7bcd7e2cc920cd6acace563fdbf121d844", - "reference": "6c6b8a7bcd7e2cc920cd6acace563fdbf121d844", + "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/68abe34601c519359b60363b99c29ecfb6679bc4", + "reference": "68abe34601c519359b60363b99c29ecfb6679bc4", "shasum": "" }, "require": { "php": ">=5.3.3" }, + "require-dev": { + "symfony/expression-language": "~2.4" + }, "type": "library", "extra": { "branch-alias": { @@ -1772,7 +1920,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1781,21 +1931,21 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "http://symfony.com", - "time": "2014-01-05 02:10:50" + "time": "2014-07-15 14:07:10" }, { "name": "symfony/http-kernel", - "version": "v2.4.1", + "version": "v2.4.8", "target-dir": "Symfony/Component/HttpKernel", "source": { "type": "git", "url": "https://github.com/symfony/HttpKernel.git", - "reference": "0605eedeb52c4d3a3144128d8336395a57be60d4" + "reference": "b2c3fc145e7b50c8e09daab303674126ca3a8c5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/0605eedeb52c4d3a3144128d8336395a57be60d4", - "reference": "0605eedeb52c4d3a3144128d8336395a57be60d4", + "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/b2c3fc145e7b50c8e09daab303674126ca3a8c5b", + "reference": "b2c3fc145e7b50c8e09daab303674126ca3a8c5b", "shasum": "" }, "require": { @@ -1843,7 +1993,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1852,21 +2004,21 @@ ], "description": "Symfony HttpKernel Component", "homepage": "http://symfony.com", - "time": "2014-01-05 02:12:11" + "time": "2014-07-15 14:52:02" }, { "name": "symfony/process", - "version": "v2.3.4", + "version": "v2.5.2", "target-dir": "Symfony/Component/Process", "source": { "type": "git", "url": "https://github.com/symfony/Process.git", - "reference": "1e91553e1cedd0b8fb1da6ea4f89b02e21713d5b" + "reference": "5e53efbf61a7fbf73c79e3e08feea50f64c20bfa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Process/zipball/1e91553e1cedd0b8fb1da6ea4f89b02e21713d5b", - "reference": "1e91553e1cedd0b8fb1da6ea4f89b02e21713d5b", + "url": "https://api.github.com/repos/symfony/Process/zipball/5e53efbf61a7fbf73c79e3e08feea50f64c20bfa", + "reference": "5e53efbf61a7fbf73c79e3e08feea50f64c20bfa", "shasum": "" }, "require": { @@ -1875,7 +2027,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -1890,7 +2042,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1899,21 +2053,21 @@ ], "description": "Symfony Process Component", "homepage": "http://symfony.com", - "time": "2013-08-22 06:42:25" + "time": "2014-07-09 09:05:48" }, { "name": "symfony/property-access", - "version": "v2.4.1", + "version": "v2.5.2", "target-dir": "Symfony/Component/PropertyAccess", "source": { "type": "git", "url": "https://github.com/symfony/PropertyAccess.git", - "reference": "274951234150e303c83099a2429be6be35629fe9" + "reference": "c80993206d5d842c46fc0bdb7da576a42845acfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/PropertyAccess/zipball/274951234150e303c83099a2429be6be35629fe9", - "reference": "274951234150e303c83099a2429be6be35629fe9", + "url": "https://api.github.com/repos/symfony/PropertyAccess/zipball/c80993206d5d842c46fc0bdb7da576a42845acfb", + "reference": "c80993206d5d842c46fc0bdb7da576a42845acfb", "shasum": "" }, "require": { @@ -1922,7 +2076,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -1937,7 +2091,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1957,21 +2113,21 @@ "property path", "reflection" ], - "time": "2013-11-13 21:30:16" + "time": "2014-07-09 09:05:48" }, { "name": "symfony/routing", - "version": "v2.4.1", + "version": "v2.4.8", "target-dir": "Symfony/Component/Routing", "source": { "type": "git", "url": "https://github.com/symfony/Routing.git", - "reference": "4abfb500aab8be458c9e3a227ea56b190584f78a" + "reference": "d290f15b7083cee926e17299ab6889210058b30e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Routing/zipball/4abfb500aab8be458c9e3a227ea56b190584f78a", - "reference": "4abfb500aab8be458c9e3a227ea56b190584f78a", + "url": "https://api.github.com/repos/symfony/Routing/zipball/d290f15b7083cee926e17299ab6889210058b30e", + "reference": "d290f15b7083cee926e17299ab6889210058b30e", "shasum": "" }, "require": { @@ -2008,7 +2164,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -2023,7 +2181,7 @@ "uri", "url" ], - "time": "2014-01-05 02:10:50" + "time": "2014-07-09 09:04:55" }, { "name": "symfony/serializer", @@ -2076,17 +2234,17 @@ }, { "name": "symfony/translation", - "version": "v2.3.4", + "version": "v2.5.2", "target-dir": "Symfony/Component/Translation", "source": { "type": "git", "url": "https://github.com/symfony/Translation.git", - "reference": "65f888291f0896ad492f9abc6dc05c998373aded" + "reference": "059d57c361043f5a06eb348b9b7554213f9ab8d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Translation/zipball/65f888291f0896ad492f9abc6dc05c998373aded", - "reference": "65f888291f0896ad492f9abc6dc05c998373aded", + "url": "https://api.github.com/repos/symfony/Translation/zipball/059d57c361043f5a06eb348b9b7554213f9ab8d1", + "reference": "059d57c361043f5a06eb348b9b7554213f9ab8d1", "shasum": "" }, "require": { @@ -2103,7 +2261,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -2118,7 +2276,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -2127,21 +2287,21 @@ ], "description": "Symfony Translation Component", "homepage": "http://symfony.com", - "time": "2013-08-26 05:49:51" + "time": "2014-07-15 14:22:44" }, { "name": "symfony/validator", - "version": "v2.4.1", + "version": "v2.4.8", "target-dir": "Symfony/Component/Validator", "source": { "type": "git", "url": "https://github.com/symfony/Validator.git", - "reference": "7ea4e53f8d68bf3ae9cca28765d49d7930618730" + "reference": "5b32e6d5c9ac1c454823348f4d9dc564975b2008" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Validator/zipball/7ea4e53f8d68bf3ae9cca28765d49d7930618730", - "reference": "7ea4e53f8d68bf3ae9cca28765d49d7930618730", + "url": "https://api.github.com/repos/symfony/Validator/zipball/5b32e6d5c9ac1c454823348f4d9dc564975b2008", + "reference": "5b32e6d5c9ac1c454823348f4d9dc564975b2008", "shasum": "" }, "require": { @@ -2183,7 +2343,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -2192,7 +2354,7 @@ ], "description": "Symfony Validator Component", "homepage": "http://symfony.com", - "time": "2014-01-01 08:14:50" + "time": "2014-07-15 14:07:10" }, { "name": "symfony/yaml", @@ -2245,16 +2407,16 @@ }, { "name": "twig/twig", - "version": "v1.15.0", + "version": "v1.15.1", "source": { "type": "git", "url": "https://github.com/fabpot/Twig.git", - "reference": "85e4ff98000157ff753d934b9f13659a953f5666" + "reference": "1fb5784662f438d7d96a541e305e28b812e2eeed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fabpot/Twig/zipball/85e4ff98000157ff753d934b9f13659a953f5666", - "reference": "85e4ff98000157ff753d934b9f13659a953f5666", + "url": "https://api.github.com/repos/fabpot/Twig/zipball/1fb5784662f438d7d96a541e305e28b812e2eeed", + "reference": "1fb5784662f438d7d96a541e305e28b812e2eeed", "shasum": "" }, "require": { @@ -2278,11 +2440,19 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com" + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "https://github.com/fabpot/Twig/graphs/contributors", + "role": "Contributors" } ], "description": "Twig, the flexible, fast, and secure template language for PHP", @@ -2290,21 +2460,71 @@ "keywords": [ "templating" ], - "time": "2013-12-06 07:47:10" + "time": "2014-02-13 10:19:29" + }, + { + "name": "willdurand/negotiation", + "version": "1.3.3", + "source": { + "type": "git", + "url": "https://github.com/willdurand/Negotiation.git", + "reference": "a98fb6b9808610c1aa326c736893d3d77d9383b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/a98fb6b9808610c1aa326c736893d3d77d9383b6", + "reference": "a98fb6b9808610c1aa326c736893d3d77d9383b6", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-0": { + "Negotiation": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "William Durand", + "email": "william.durand1@gmail.com", + "homepage": "http://www.willdurand.fr" + } + ], + "description": "Content Negotiation tools for PHP provided as a standalone library.", + "homepage": "http://williamdurand.fr/Negotiation/", + "keywords": [ + "accept", + "content", + "format", + "header", + "negotiation" + ], + "time": "2014-05-16 12:34:51" }, { "name": "zendframework/zend-escaper", - "version": "2.2.1", + "version": "2.2.6", "target-dir": "Zend/Escaper", "source": { "type": "git", "url": "https://github.com/zendframework/Component_ZendEscaper.git", - "reference": "release-2.2.1" + "reference": "80abc4bc1f48b9fe8ed603aaa9eebd6e6f30fd0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/Component_ZendEscaper/zipball/release-2.2.1", - "reference": "release-2.2.1", + "url": "https://api.github.com/repos/zendframework/Component_ZendEscaper/zipball/80abc4bc1f48b9fe8ed603aaa9eebd6e6f30fd0f", + "reference": "80abc4bc1f48b9fe8ed603aaa9eebd6e6f30fd0f", "shasum": "" }, "require": { @@ -2330,21 +2550,21 @@ "escaper", "zf2" ], - "time": "2013-05-01 21:53:03" + "time": "2014-01-04 13:00:13" }, { "name": "zendframework/zend-feed", - "version": "2.2.1", + "version": "2.2.6", "target-dir": "Zend/Feed", "source": { "type": "git", "url": "https://github.com/zendframework/Component_ZendFeed.git", - "reference": "release-2.2.1" + "reference": "8acb562d99dd0786d25c990530980d2d92b67b35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/Component_ZendFeed/zipball/release-2.2.1", - "reference": "release-2.2.1", + "url": "https://api.github.com/repos/zendframework/Component_ZendFeed/zipball/8acb562d99dd0786d25c990530980d2d92b67b35", + "reference": "8acb562d99dd0786d25c990530980d2d92b67b35", "shasum": "" }, "require": { @@ -2378,21 +2598,21 @@ "feed", "zf2" ], - "time": "2013-06-12 19:45:31" + "time": "2014-01-04 13:00:14" }, { "name": "zendframework/zend-stdlib", - "version": "2.2.1", + "version": "2.2.6", "target-dir": "Zend/Stdlib", "source": { "type": "git", "url": "https://github.com/zendframework/Component_ZendStdlib.git", - "reference": "release-2.2.1" + "reference": "e646729f2274f4552b6a92e38d8e458efe08ebc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/Component_ZendStdlib/zipball/release-2.2.1", - "reference": "release-2.2.1", + "url": "https://api.github.com/repos/zendframework/Component_ZendStdlib/zipball/e646729f2274f4552b6a92e38d8e458efe08ebc5", + "reference": "e646729f2274f4552b6a92e38d8e458efe08ebc5", "shasum": "" }, "require": { @@ -2422,11 +2642,15 @@ "stdlib", "zf2" ], - "time": "2013-06-12 19:46:58" + "time": "2014-01-04 13:00:28" } ], - "packages-dev": [], - "aliases": [], + "packages-dev": [ + + ], + "aliases": [ + + ], "minimum-stability": "stable", "stability-flags": { "symfony/yaml": 20, @@ -2440,5 +2664,7 @@ "platform": { "php": ">=5.4.2" }, - "platform-dev": [] + "platform-dev": [ + + ] } diff --git a/core/core.services.yml b/core/core.services.yml index a58f779..a5ec2a8 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -391,7 +391,7 @@ services: - { name: event_subscriber } router.route_preloader: class: Drupal\Core\Routing\RoutePreloader - arguments: ['@router.route_provider', '@state', '@content_negotiation'] + arguments: ['@router.route_provider', '@state'] tags: - { name: 'event_subscriber' } router.matcher.final_matcher: @@ -477,7 +477,6 @@ services: arguments: [16] accept_header_matcher: class: Drupal\Core\Routing\AcceptHeaderMatcher - arguments: ['@content_negotiation'] tags: - { name: route_filter } content_type_header_matcher: @@ -578,12 +577,12 @@ services: - { name: event_subscriber } arguments: ['@router', '@router.request_context', NULL, '@request_stack'] content_negotiation: - class: Drupal\Core\ContentNegotiation + class: Negotiation\FormatNegotiator view_subscriber: class: Drupal\Core\EventSubscriber\ViewSubscriber tags: - { name: event_subscriber } - arguments: ['@content_negotiation', '@title_resolver', '@ajax_response_renderer'] + arguments: ['@title_resolver', '@ajax_response_renderer'] html_view_subscriber: class: Drupal\Core\EventSubscriber\HtmlViewSubscriber tags: @@ -685,7 +684,7 @@ services: arguments: ['@config.manager', '@config.storage', '@config.storage.snapshot'] exception_controller: class: Drupal\Core\Controller\ExceptionController - arguments: ['@content_negotiation', '@title_resolver', '@html_page_renderer', '@html_fragment_renderer', '@string_translation', '@url_generator'] + arguments: ['@title_resolver', '@html_page_renderer', '@html_fragment_renderer', '@string_translation', '@url_generator'] calls: - [setContainer, ['@service_container']] exception_listener: diff --git a/core/lib/Drupal/Core/ContentNegotiation.php b/core/lib/Drupal/Core/ContentNegotiation.php deleted file mode 100644 index 500200c..0000000 --- a/core/lib/Drupal/Core/ContentNegotiation.php +++ /dev/null @@ -1,64 +0,0 @@ -. - if ($request->get('ajax_iframe_upload', FALSE)) { - return 'iframeupload'; - } - - // Check all formats, if priority format is found return it. - $first_found_format = FALSE; - $priority = array('html', 'drupal_ajax', 'drupal_modal', 'drupal_dialog'); - foreach ($request->getAcceptableContentTypes() as $mime_type) { - $format = $request->getFormat($mime_type); - if (in_array($format, $priority, TRUE)) { - return $format; - } - if (!is_null($format) && !$first_found_format) { - $first_found_format = $format; - } - } - - // No HTML found, return first found. - if ($first_found_format) { - return $first_found_format; - } - - if ($request->isXmlHttpRequest()) { - return 'ajax'; - } - - // Do HTML last so that it always wins. - return 'html'; - } -} diff --git a/core/lib/Drupal/Core/Controller/ExceptionController.php b/core/lib/Drupal/Core/Controller/ExceptionController.php index dbd227f..52ace0b 100644 --- a/core/lib/Drupal/Core/Controller/ExceptionController.php +++ b/core/lib/Drupal/Core/Controller/ExceptionController.php @@ -20,7 +20,6 @@ use Drupal\Component\Utility\SafeMarkup; use Drupal\Component\Utility\String; use Symfony\Component\Debug\Exception\FlattenException; -use Drupal\Core\ContentNegotiation; use Drupal\Core\Utility\Error; use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\Core\StringTranslation\TranslationInterface; @@ -32,13 +31,6 @@ class ExceptionController extends HtmlControllerBase implements ContainerAwareIn use StringTranslationTrait; /** - * The content negotiation library. - * - * @var \Drupal\Core\ContentNegotiation - */ - protected $negotiation; - - /** * The service container. * * @var \Symfony\Component\DependencyInjection\ContainerInterface @@ -62,9 +54,6 @@ class ExceptionController extends HtmlControllerBase implements ContainerAwareIn /** * Constructor. * - * @param \Drupal\Core\ContentNegotiation $negotiation - * The content negotiation library to use to determine the correct response - * format. * @param \Drupal\Core\Controller\TitleResolverInterface $title_resolver * The title resolver. * @param \Drupal\Core\Page\HtmlPageRendererInterface $renderer @@ -75,9 +64,8 @@ class ExceptionController extends HtmlControllerBase implements ContainerAwareIn * The url generator. * @param \Drupal\Core\Routing\UrlGeneratorInterface $url_generator */ - public function __construct(ContentNegotiation $negotiation, TitleResolverInterface $title_resolver, HtmlPageRendererInterface $renderer, HtmlFragmentRendererInterface $fragment_renderer, TranslationInterface $string_translation, UrlGeneratorInterface $url_generator) { + public function __construct(TitleResolverInterface $title_resolver, HtmlPageRendererInterface $renderer, HtmlFragmentRendererInterface $fragment_renderer, TranslationInterface $string_translation, UrlGeneratorInterface $url_generator) { parent::__construct($title_resolver, $url_generator); - $this->negotiation = $negotiation; $this->htmlPageRenderer = $renderer; $this->fragmentRenderer = $fragment_renderer; $this->stringTranslation = $string_translation; @@ -107,7 +95,7 @@ public function setContainer(ContainerInterface $container = NULL) { * A response object. */ public function execute(FlattenException $exception, Request $request) { - $method = 'on' . $exception->getStatusCode() . $this->negotiation->getContentType($request); + $method = 'on' . $exception->getStatusCode() . $request->getRequestFormat(); if (method_exists($this, $method)) { return $this->$method($exception, $request); diff --git a/core/lib/Drupal/Core/EventSubscriber/ContentControllerSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ContentControllerSubscriber.php index 377ae93..9fae03e 100644 --- a/core/lib/Drupal/Core/EventSubscriber/ContentControllerSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/ContentControllerSubscriber.php @@ -7,7 +7,7 @@ namespace Drupal\Core\EventSubscriber; -use Drupal\Core\ContentNegotiation; +use Negotiation\FormatNegotiatorInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\KernelEvents; @@ -20,17 +20,17 @@ class ContentControllerSubscriber implements EventSubscriberInterface { /** * Content negotiation library. * - * @var \Drupal\Core\ContentNegotiation + * @var \Negotiation\FormatNegotiatorInterface */ protected $negotiation; /** * Constructs a new ContentControllerSubscriber object. * - * @param \Drupal\Core\ContentNegotiation $negotiation + * @param \Negotiation\FormatNegotiatorInterface $negotiation * The Content Negotiation service. */ - public function __construct(ContentNegotiation $negotiation) { + public function __construct(FormatNegotiatorInterface $negotiation) { $this->negotiation = $negotiation; } @@ -56,7 +56,16 @@ public function onRequestDeriveFormat(GetResponseEvent $event) { $request = $event->getRequest(); if (!$request->attributes->get('_format')) { - $request->setRequestFormat($this->negotiation->getContentType($request)); + // The following formats have special high-priority according to Drupal. + // Any other formats should negotiate in order as appropriate. + $priorities = array('text/html', 'application/vnd.drupal-ajax', 'application/vnd.drupal-modal', 'application/vnd.drupal-dialog'); + + // Because we're registering new formats on the Request object, we will + // retrieve the raw mime type and then let the request map that to + // the format machine name. That way we only need to register new formats + // on the one object. + $format = $this->negotiation->getBest($accept_header = $request->headers->get('Accept'), $priorities); + $request->setRequestFormat($request->getFormat($format->getValue())); } } @@ -84,7 +93,7 @@ public function onRequestDeriveContentWrapper(GetResponseEvent $event) { * An array of event listener definitions. */ static function getSubscribedEvents() { - $events[KernelEvents::REQUEST][] = array('onRequestDeriveFormat', 31); + $events[KernelEvents::REQUEST][] = array('onRequestDeriveFormat', 33); $events[KernelEvents::REQUEST][] = array('onRequestDeriveContentWrapper', 30); return $events; diff --git a/core/lib/Drupal/Core/EventSubscriber/ViewSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ViewSubscriber.php index 84b94c9..696b104 100644 --- a/core/lib/Drupal/Core/EventSubscriber/ViewSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/ViewSubscriber.php @@ -18,8 +18,6 @@ use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Drupal\Core\ContentNegotiation; - /** * Main subscriber for VIEW HTTP responses. * @@ -30,13 +28,6 @@ class ViewSubscriber implements EventSubscriberInterface { /** - * The content negotiation. - * - * @var \Drupal\Core\ContentNegotiation - */ - protected $negotiation; - - /** * The title resolver. * * @var \Drupal\Core\Controller\TitleResolverInterface @@ -53,15 +44,12 @@ class ViewSubscriber implements EventSubscriberInterface { /** * Constructs a new ViewSubscriber. * - * @param \Drupal\Core\ContentNegotiation $negotiation - * The content negotiation. * @param \Drupal\Core\Controller\TitleResolverInterface $title_resolver * The title resolver. * @param \Drupal\Core\Ajax\AjaxResponseRenderer $ajax_renderer * The ajax response renderer. */ - public function __construct(ContentNegotiation $negotiation, TitleResolverInterface $title_resolver, AjaxResponseRenderer $ajax_renderer) { - $this->negotiation = $negotiation; + public function __construct(TitleResolverInterface $title_resolver, AjaxResponseRenderer $ajax_renderer) { $this->titleResolver = $title_resolver; $this->ajaxRenderer = $ajax_renderer; } @@ -88,7 +76,7 @@ public function onView(GetResponseForControllerResultEvent $event) { // object. The subrequest's response will get dissected and placed into // the larger page as needed. if ($event->getRequestType() == HttpKernelInterface::MASTER_REQUEST) { - $method = 'on' . $this->negotiation->getContentType($request); + $method = 'on' . $request->getRequestFormat(); if (method_exists($this, $method)) { $event->setResponse($this->$method($event)); diff --git a/core/lib/Drupal/Core/Routing/AcceptHeaderMatcher.php b/core/lib/Drupal/Core/Routing/AcceptHeaderMatcher.php index 34f0ae5..5ba6285 100644 --- a/core/lib/Drupal/Core/Routing/AcceptHeaderMatcher.php +++ b/core/lib/Drupal/Core/Routing/AcceptHeaderMatcher.php @@ -8,7 +8,7 @@ namespace Drupal\Core\Routing; use Drupal\Component\Utility\String; -use Drupal\Core\ContentNegotiation; +use Negotiation\FormatNegotiatorInterface; use Symfony\Cmf\Component\Routing\NestedMatcher\RouteFilterInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException; @@ -20,23 +20,6 @@ class AcceptHeaderMatcher implements RouteFilterInterface { /** - * The content negotiation library. - * - * @var \Drupal\Core\ContentNegotiation - */ - protected $contentNegotiation; - - /** - * Constructs a new AcceptHeaderMatcher. - * - * @param \Drupal\Core\ContentNegotiation $cotent_negotiation - * The content negotiation library. - */ - public function __construct(ContentNegotiation $content_negotiation) { - $this->contentNegotiation = $content_negotiation; - } - - /** * {@inheritdoc} */ public function filter(RouteCollection $collection, Request $request) { @@ -44,11 +27,11 @@ public function filter(RouteCollection $collection, Request $request) { // @todo replace by proper content negotiation library. $acceptable_mime_types = $request->getAcceptableContentTypes(); $acceptable_formats = array_filter(array_map(array($request, 'getFormat'), $acceptable_mime_types)); - $primary_format = $this->contentNegotiation->getContentType($request); + $primary_format = $request->getRequestFormat(); foreach ($collection as $name => $route) { // _format could be a |-delimited list of supported formats. - $supported_formats = array_filter(explode('|', $route->getRequirement('_format'))); + $supported_formats = array_unique(array_filter(explode('|', $route->getRequirement('_format')))); if (empty($supported_formats)) { // No format restriction on the route, so it always matches. Move it to diff --git a/core/lib/Drupal/Core/Routing/Enhancer/AjaxEnhancer.php b/core/lib/Drupal/Core/Routing/Enhancer/AjaxEnhancer.php index 4d0c707..be82238 100644 --- a/core/lib/Drupal/Core/Routing/Enhancer/AjaxEnhancer.php +++ b/core/lib/Drupal/Core/Routing/Enhancer/AjaxEnhancer.php @@ -9,7 +9,6 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Cmf\Component\Routing\Enhancer\RouteEnhancerInterface; -use Drupal\Core\ContentNegotiation; /** * Enhances an ajax route with the appropriate controller. @@ -17,30 +16,13 @@ class AjaxEnhancer implements RouteEnhancerInterface { /** - * Content negotiation library. - * - * @var \Drupal\CoreContentNegotiation - */ - protected $negotiation; - - /** - * Constructs a new \Drupal\Core\Routing\Enhancer\AjaxEnhancer object. - * - * @param \Drupal\Core\ContentNegotiation $negotiation - * The Content Negotiation service. - */ - public function __construct(ContentNegotiation $negotiation) { - $this->negotiation = $negotiation; - } - - /** * {@inheritdoc} */ public function enhance(array $defaults, Request $request) { // A request can have the 'ajax' content type when the controller supports // basically both simple HTML and Ajax routes by returning a render array. // In those cases we want to convert it to a proper ajax response as well. - if (empty($defaults['_content']) && $defaults['_controller'] != 'controller.ajax:content' && in_array($this->negotiation->getContentType($request), array('drupal_ajax', 'ajax', 'iframeupload'))) { + if (empty($defaults['_content']) && $defaults['_controller'] != 'controller.ajax:content' && in_array($request->getRequestFormat(), array('drupal_ajax', 'ajax', 'iframeupload'))) { $defaults['_content'] = isset($defaults['_controller']) ? $defaults['_controller'] : NULL; $defaults['_controller'] = 'controller.ajax:content'; } diff --git a/core/lib/Drupal/Core/Routing/RoutePreloader.php b/core/lib/Drupal/Core/Routing/RoutePreloader.php index 7952d17..8e8d230 100644 --- a/core/lib/Drupal/Core/Routing/RoutePreloader.php +++ b/core/lib/Drupal/Core/Routing/RoutePreloader.php @@ -38,13 +38,6 @@ class RoutePreloader implements EventSubscriberInterface { protected $state; /** - * The content negotiation. - * - * @var \Drupal\Core\ContentNegotiation - */ - protected $negotiation; - - /** * Contains the non-admin routes while rebuilding the routes. * * @var array @@ -58,13 +51,10 @@ class RoutePreloader implements EventSubscriberInterface { * The route provider. * @param \Drupal\Core\State\StateInterface $state * The state key value store. - * @param \Drupal\Core\ContentNegotiation $negotiation - * The content negotiation. */ - public function __construct(RouteProviderInterface $route_provider, StateInterface $state, ContentNegotiation $negotiation) { + public function __construct(RouteProviderInterface $route_provider, StateInterface $state) { $this->routeProvider = $route_provider; $this->state = $state; - $this->negotiation = $negotiation; } /** @@ -75,7 +65,7 @@ public function __construct(RouteProviderInterface $route_provider, StateInterfa */ public function onRequest(KernelEvent $event) { // Just preload on normal HTML pages, as they will display menu links. - if ($this->negotiation->getContentType($event->getRequest()) == 'html') { + if ($event->getRequest()->getRequestFormat() == 'html') { $this->loadNonAdminRoutes(); } } diff --git a/core/modules/rest/src/Plugin/views/display/RestExport.php b/core/modules/rest/src/Plugin/views/display/RestExport.php index e41fef0..ac7485d 100644 --- a/core/modules/rest/src/Plugin/views/display/RestExport.php +++ b/core/modules/rest/src/Plugin/views/display/RestExport.php @@ -11,7 +11,6 @@ use Drupal\Core\Form\FormErrorInterface; use Drupal\Core\State\StateInterface; use Drupal\Core\Routing\RouteProviderInterface; -use Drupal\Core\ContentNegotiation; use Drupal\views\ViewExecutable; use Drupal\views\Plugin\views\display\PathPluginBase; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -73,13 +72,6 @@ class RestExport extends PathPluginBase { protected $mimeType; /** - * The content negotiation library. - * - * @var \Drupal\Core\ContentNegotiation - */ - protected $contentNegotiation; - - /** * Constructs a Drupal\rest\Plugin\ResourceBase object. * * @param array $configuration @@ -94,12 +86,9 @@ class RestExport extends PathPluginBase { * The state key value store. * @param \Drupal\Core\Form\FormErrorInterface $form_error * The form error helper. - * @param \Drupal\Core\ContentNegotiation $content_negotiation - * The content negotiation library. */ - public function __construct(array $configuration, $plugin_id, $plugin_definition, RouteProviderInterface $route_provider, StateInterface $state, FormErrorInterface $form_error, ContentNegotiation $content_negotiation) { + public function __construct(array $configuration, $plugin_id, $plugin_definition, RouteProviderInterface $route_provider, StateInterface $state, FormErrorInterface $form_error) { parent::__construct($configuration, $plugin_id, $plugin_definition, $route_provider, $state, $form_error); - $this->contentNegotiation = $content_negotiation; } /** @@ -112,8 +101,7 @@ public static function create(ContainerInterface $container, array $configuratio $plugin_definition, $container->get('router.route_provider'), $container->get('state'), - $container->get('form_validator'), - $container->get('content_negotiation') + $container->get('form_validator') ); } @@ -123,7 +111,7 @@ public static function create(ContainerInterface $container, array $configuratio public function initDisplay(ViewExecutable $view, array &$display, array &$options = NULL) { parent::initDisplay($view, $display, $options); - $request_content_type = $this->contentNegotiation->getContentType($this->view->getRequest()); + $request_content_type = $this->view->getRequest()->getRequestFormat(); // Only use the requested content type if it's not 'html'. If it is then // default to 'json' to aid debugging. // @todo Remove the need for this when we have better content negotiation. diff --git a/core/modules/rest/tests/src/CollectRoutesTest.php b/core/modules/rest/tests/src/CollectRoutesTest.php index 5a0cac6..c010364 100644 --- a/core/modules/rest/tests/src/CollectRoutesTest.php +++ b/core/modules/rest/tests/src/CollectRoutesTest.php @@ -40,16 +40,10 @@ protected function setUp() { $container = new ContainerBuilder(); - $content_negotiation = $this->getMockBuilder('\Drupal\Core\ContentNegotiation') - ->disableOriginalConstructor() - ->getMock(); - $request = $this->getMockBuilder('\Symfony\Component\HttpFoundation\Request') ->disableOriginalConstructor() ->getMock(); - $container->set('content_negotiation', $content_negotiation); - $this->view = $this->getMock('\Drupal\views\Entity\View', array('initHandlers'), array( array('id' => 'test_view'), 'view', diff --git a/core/tests/Drupal/Tests/Core/Controller/ExceptionControllerTest.php b/core/tests/Drupal/Tests/Core/Controller/ExceptionControllerTest.php index 7307780..64e210e 100644 --- a/core/tests/Drupal/Tests/Core/Controller/ExceptionControllerTest.php +++ b/core/tests/Drupal/Tests/Core/Controller/ExceptionControllerTest.php @@ -30,13 +30,11 @@ public function test405HTML() { $translation = $this->getMock('Drupal\Core\StringTranslation\TranslationInterface'); $url_generator = $this->getMock('Drupal\Core\Routing\UrlGeneratorInterface'); - $content_negotiation = $this->getMock('Drupal\Core\ContentNegotiation'); - $content_negotiation->expects($this->any()) - ->method('getContentType') - ->will($this->returnValue('html')); + $request = new Request(); + $request->setRequestFormat('html'); - $exception_controller = new ExceptionController($content_negotiation, $title_resolver, $html_page_renderer, $html_fragment_renderer, $translation, $url_generator); - $response = $exception_controller->execute($flat_exception, new Request()); + $exception_controller = new ExceptionController($title_resolver, $html_page_renderer, $html_fragment_renderer, $translation, $url_generator); + $response = $exception_controller->execute($flat_exception, $request); $this->assertEquals($response->getStatusCode(), 405, 'HTTP status of response is correct.'); $this->assertEquals($response->getContent(), 'Method Not Allowed', 'HTTP response body is correct.'); } diff --git a/core/tests/Drupal/Tests/Core/Routing/AcceptHeaderMatcherTest.php b/core/tests/Drupal/Tests/Core/Routing/AcceptHeaderMatcherTest.php index 22ffa8f..bb1feb2 100644 --- a/core/tests/Drupal/Tests/Core/Routing/AcceptHeaderMatcherTest.php +++ b/core/tests/Drupal/Tests/Core/Routing/AcceptHeaderMatcherTest.php @@ -7,10 +7,10 @@ namespace Drupal\Tests\Core\Routing; -use Drupal\Core\ContentNegotiation; use Drupal\Core\Routing\AcceptHeaderMatcher; use Drupal\Tests\Core\Routing\RoutingFixtures; use Drupal\Tests\UnitTestCase; +use Negotiation\FormatNegotiator; use Symfony\Component\HttpFoundation\Request; /** @@ -35,13 +35,21 @@ class AcceptHeaderMatcherTest extends UnitTestCase { protected $matcher; /** + * The content type negotiation library. + * + * @var \Negotiation\FormatNegotiator + */ + protected $negotiator; + + /** * {@inheritdoc} */ public function setUp() { parent::setUp(); $this->fixtures = new RoutingFixtures(); - $this->matcher = new AcceptHeaderMatcher(new ContentNegotiation()); + $this->matcher = new AcceptHeaderMatcher(); + $this->negotiator = new FormatNegotiator(); } /** @@ -77,6 +85,9 @@ public function testAcceptFiltering($accept_header, $included_route, $excluded_r $request = Request::create('path/two', 'GET'); $request->headers->set('Accept', $accept_header); + + $format = $this->negotiator->getBest($accept_header = $request->headers->get('Accept')); + $request->setRequestFormat($request->getFormat($format->getValue())); $routes = $this->matcher->filter($collection, $request); $this->assertEquals(count($routes), 4, 'The correct number of routes was found.'); $this->assertNotNull($routes->get($included_route), "Route $included_route was found when matching $accept_header."); @@ -103,8 +114,9 @@ public function testNoRouteFound() { $request = Request::create('path/two', 'GET'); $request->headers->set('Accept', 'application/json, text/xml;q=0.9'); + $format = $this->negotiator->getBest($accept_header = $request->headers->get('Accept')); + $request->setRequestFormat($request->getFormat($format->getValue())); $this->matcher->filter($routes, $request); $this->fail('No exception was thrown.'); } - } diff --git a/core/tests/Drupal/Tests/Core/Routing/RoutePreloaderTest.php b/core/tests/Drupal/Tests/Core/Routing/RoutePreloaderTest.php index a928c97..98bfdcd 100644 --- a/core/tests/Drupal/Tests/Core/Routing/RoutePreloaderTest.php +++ b/core/tests/Drupal/Tests/Core/Routing/RoutePreloaderTest.php @@ -34,12 +34,6 @@ class RoutePreloaderTest extends UnitTestCase { */ protected $state; - /** - * The mocked content negotiator. - * - * @var \Drupal\Core\ContentNegotiation|\PHPUnit_Framework_MockObject_MockObject - */ - protected $negotiation; /** * The tested preloader. @@ -54,10 +48,7 @@ class RoutePreloaderTest extends UnitTestCase { protected function setUp() { $this->routeProvider = $this->getMock('Drupal\Core\Routing\RouteProviderInterface'); $this->state = $this->getMock('\Drupal\Core\State\StateInterface'); - $this->negotiation = $this->getMockBuilder('\Drupal\Core\ContentNegotiation') - ->disableOriginalConstructor() - ->getMock(); - $this->preloader = new RoutePreloader($this->routeProvider, $this->state, $this->negotiation); + $this->preloader = new RoutePreloader($this->routeProvider, $this->state); } /** @@ -136,12 +127,10 @@ public function testOnRequestNonHtml() { ->disableOriginalConstructor() ->getMock(); $request = new Request(); + $request->setRequestFormat('non-html'); $event->expects($this->any()) ->method('getRequest') ->will($this->returnValue($request)); - $this->negotiation->expects($this->once()) - ->method('getContentType') - ->will($this->returnValue('non-html')); $this->routeProvider->expects($this->never()) ->method('getRoutesByNames'); @@ -159,12 +148,10 @@ public function testOnRequestOnHtml() { ->disableOriginalConstructor() ->getMock(); $request = new Request(); + $request->setRequestFormat('html'); $event->expects($this->any()) ->method('getRequest') ->will($this->returnValue($request)); - $this->negotiation->expects($this->once()) - ->method('getContentType') - ->will($this->returnValue('html')); $this->routeProvider->expects($this->once()) ->method('getRoutesByNames') diff --git a/core/vendor/composer/ClassLoader.php b/core/vendor/composer/ClassLoader.php index 4433649..88684c5 100644 --- a/core/vendor/composer/ClassLoader.php +++ b/core/vendor/composer/ClassLoader.php @@ -143,8 +143,6 @@ public function add($prefix, $paths, $prepend = false) * @param string $prefix The prefix/namespace, with trailing '\\' * @param array|string $paths The PSR-0 base directories * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException */ public function addPsr4($prefix, $paths, $prepend = false) { @@ -206,8 +204,6 @@ public function set($prefix, $paths) * * @param string $prefix The prefix/namespace, with trailing '\\' * @param array|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException */ public function setPsr4($prefix, $paths) { diff --git a/core/vendor/composer/autoload_classmap.php b/core/vendor/composer/autoload_classmap.php index 87d8298..52ced84 100644 --- a/core/vendor/composer/autoload_classmap.php +++ b/core/vendor/composer/autoload_classmap.php @@ -391,5 +391,6 @@ 'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php', 'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php', 'SessionHandlerInterface' => $vendorDir . '/symfony/http-foundation/Symfony/Component/HttpFoundation/Resources/stubs/SessionHandlerInterface.php', + 'Symfony\\Component\\HttpFoundation\\Resources\\stubs\\FakeFile' => $vendorDir . '/symfony/http-foundation/Symfony/Component/HttpFoundation/Resources/stubs/FakeFile.php', 'Text_Template' => $vendorDir . '/phpunit/php-text-template/Text/Template.php', ); diff --git a/core/vendor/composer/autoload_files.php b/core/vendor/composer/autoload_files.php index 2ca5d44..ae1a45a 100644 --- a/core/vendor/composer/autoload_files.php +++ b/core/vendor/composer/autoload_files.php @@ -7,7 +7,7 @@ return array( $vendorDir . '/guzzlehttp/streams/src/functions.php', - $vendorDir . '/kriswallsmith/assetic/src/functions.php', $vendorDir . '/guzzlehttp/guzzle/src/functions.php', + $vendorDir . '/kriswallsmith/assetic/src/functions.php', $baseDir . '/core/lib/Drupal.php', ); diff --git a/core/vendor/composer/autoload_namespaces.php b/core/vendor/composer/autoload_namespaces.php index f49ab2c..dc6370d 100644 --- a/core/vendor/composer/autoload_namespaces.php +++ b/core/vendor/composer/autoload_namespaces.php @@ -27,6 +27,9 @@ 'Symfony\\Component\\ClassLoader\\' => array($vendorDir . '/symfony/class-loader'), 'Symfony\\Cmf\\Component\\Routing' => array($vendorDir . '/symfony-cmf/routing'), 'Psr\\Log\\' => array($vendorDir . '/psr/log'), + 'Negotiation' => array($vendorDir . '/willdurand/negotiation/src'), + 'LazyMap\\' => array($vendorDir . '/ocramius/lazy-map/src'), + 'Instantiator\\' => array($vendorDir . '/ocramius/instantiator/src'), 'Gliph' => array($vendorDir . '/sdboyer/gliph/src'), 'EasyRdf_' => array($vendorDir . '/easyrdf/easyrdf/lib'), 'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib'), diff --git a/core/vendor/composer/include_paths.php b/core/vendor/composer/include_paths.php index 951fdb1..1cc995d 100644 --- a/core/vendor/composer/include_paths.php +++ b/core/vendor/composer/include_paths.php @@ -10,8 +10,8 @@ $vendorDir . '/phpunit/php-timer', $vendorDir . '/phpunit/php-token-stream', $vendorDir . '/phpunit/php-file-iterator', + $vendorDir . '/phpunit/phpunit-mock-objects', $vendorDir . '/phpunit/php-code-coverage', $vendorDir . '/phpunit/phpunit', $vendorDir . '/symfony/yaml', - $vendorDir . '/phpunit/phpunit-mock-objects', ); diff --git a/core/vendor/composer/installed.json b/core/vendor/composer/installed.json index fbc00eb..d49c849 100644 --- a/core/vendor/composer/installed.json +++ b/core/vendor/composer/installed.json @@ -40,217 +40,6 @@ ] }, { - "name": "kriswallsmith/assetic", - "version": "v1.1.1", - "version_normalized": "1.1.1.0", - "source": { - "type": "git", - "url": "https://github.com/kriswallsmith/assetic.git", - "reference": "v1.1.1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/v1.1.1", - "reference": "v1.1.1", - "shasum": "" - }, - "require": { - "php": ">=5.3.1", - "symfony/process": ">=2.1,<3.0" - }, - "require-dev": { - "cssmin/cssmin": "*", - "joliclic/javascript-packer": "*", - "kamicane/packager": "*", - "leafo/lessphp": "*", - "leafo/scssphp": "*", - "leafo/scssphp-compass": "*", - "mrclay/minify": "*", - "phpunit/phpunit": ">=3.7,<4.0", - "ptachoire/cssembed": "*", - "twig/twig": ">=1.6,<2.0" - }, - "suggest": { - "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler", - "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler", - "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin", - "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris", - "twig/twig": "Assetic provides the integration with the Twig templating engine" - }, - "time": "2013-06-01 22:13:43", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Assetic": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kris Wallsmith", - "email": "kris.wallsmith@gmail.com", - "homepage": "http://kriswallsmith.net/" - } - ], - "description": "Asset Management for PHP", - "homepage": "https://github.com/kriswallsmith/assetic", - "keywords": [ - "assets", - "compression", - "minification" - ] - }, - { - "name": "zendframework/zend-stdlib", - "version": "2.2.1", - "version_normalized": "2.2.1.0", - "target-dir": "Zend/Stdlib", - "source": { - "type": "git", - "url": "https://github.com/zendframework/Component_ZendStdlib.git", - "reference": "release-2.2.1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/Component_ZendStdlib/zipball/release-2.2.1", - "reference": "release-2.2.1", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "zendframework/zend-eventmanager": "To support aggregate hydrator usage", - "zendframework/zend-servicemanager": "To support hydrator plugin manager usage" - }, - "time": "2013-06-12 19:46:58", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2-dev", - "dev-develop": "2.3-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Zend\\Stdlib\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "keywords": [ - "stdlib", - "zf2" - ] - }, - { - "name": "zendframework/zend-escaper", - "version": "2.2.1", - "version_normalized": "2.2.1.0", - "target-dir": "Zend/Escaper", - "source": { - "type": "git", - "url": "https://github.com/zendframework/Component_ZendEscaper.git", - "reference": "release-2.2.1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/Component_ZendEscaper/zipball/release-2.2.1", - "reference": "release-2.2.1", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2013-05-01 21:53:03", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2-dev", - "dev-develop": "2.3-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Zend\\Escaper\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "keywords": [ - "escaper", - "zf2" - ] - }, - { - "name": "zendframework/zend-feed", - "version": "2.2.1", - "version_normalized": "2.2.1.0", - "target-dir": "Zend/Feed", - "source": { - "type": "git", - "url": "https://github.com/zendframework/Component_ZendFeed.git", - "reference": "release-2.2.1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/Component_ZendFeed/zipball/release-2.2.1", - "reference": "release-2.2.1", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "zendframework/zend-escaper": "self.version", - "zendframework/zend-stdlib": "self.version" - }, - "suggest": { - "zendframework/zend-http": "Zend\\Http for PubSubHubbub, and optionally for use with Zend\\Feed\\Reader", - "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for default/recommended ExtensionManager implementations", - "zendframework/zend-validator": "Zend\\Validator component" - }, - "time": "2013-06-12 19:45:31", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2-dev", - "dev-develop": "2.3-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Zend\\Feed\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "provides functionality for consuming RSS and Atom feeds", - "keywords": [ - "feed", - "zf2" - ] - }, - { "name": "doctrine/lexer", "version": "v1.0", "version_normalized": "1.0.0.0", @@ -305,34 +94,29 @@ ] }, { - "name": "doctrine/collections", - "version": "v1.1", - "version_normalized": "1.1.0.0", + "name": "doctrine/inflector", + "version": "v1.0", + "version_normalized": "1.0.0.0", "source": { "type": "git", - "url": "https://github.com/doctrine/collections.git", - "reference": "v1.1" + "url": "https://github.com/doctrine/inflector.git", + "reference": "v1.0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/v1.1", - "reference": "v1.1", + "url": "https://github.com/doctrine/inflector/archive/v1.0.zip", + "reference": "v1.0", "shasum": "" }, "require": { "php": ">=5.3.2" }, - "time": "2013-03-07 12:15:54", + "time": "2013-01-10 21:49:15", "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, "installation-source": "dist", "autoload": { "psr-0": { - "Doctrine\\Common\\Collections\\": "lib/" + "Doctrine\\Common\\Inflector\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", @@ -365,38 +149,56 @@ "role": "Developer of wrapped JMSSerializerBundle" } ], - "description": "Collections Abstraction library", + "description": "Common String Manipulations with regard to casing and singular/plural rules.", "homepage": "http://www.doctrine-project.org", "keywords": [ - "array", - "collections", - "iterator" + "inflection", + "pluarlize", + "singuarlize", + "string" ] }, { - "name": "doctrine/cache", - "version": "v1.0", - "version_normalized": "1.0.0.0", + "name": "symfony-cmf/routing", + "version": "1.1.0", + "version_normalized": "1.1.0.0", + "target-dir": "Symfony/Cmf/Component/Routing", "source": { "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "v1.0" + "url": "https://github.com/symfony-cmf/Routing.git", + "reference": "9f8607950cbf888ec678713a35f3d0088857c85f" }, "dist": { "type": "zip", - "url": "https://github.com/doctrine/cache/archive/v1.0.zip", - "reference": "v1.0", + "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/9f8607950cbf888ec678713a35f3d0088857c85f", + "reference": "9f8607950cbf888ec678713a35f3d0088857c85f", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": ">=5.3.3", + "psr/log": "~1.0", + "symfony/http-kernel": "~2.2", + "symfony/routing": "~2.2" + }, + "require-dev": { + "symfony/config": "~2.2", + "symfony/dependency-injection": "~2.0", + "symfony/event-dispatcher": "~2.1" + }, + "suggest": { + "symfony/event-dispatcher": "DynamicRouter can optionally trigger an event at the start of matching. Minimal version ~2.1" }, - "time": "2013-01-10 22:43:46", + "time": "2013-10-14 15:32:46", "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, "installation-source": "dist", "autoload": { "psr-0": { - "Doctrine\\Common\\Cache\\": "lib/" + "Symfony\\Cmf\\Component\\Routing": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -405,61 +207,50 @@ ], "authors": [ { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com", - "homepage": "http://www.instaclick.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh", - "role": "Developer of wrapped JMSSerializerBundle" + "name": "Symfony CMF Community", + "homepage": "https://github.com/symfony-cmf/Routing/contributors" } ], - "description": "Caching library offering an object-oriented API for many cache backends", - "homepage": "http://www.doctrine-project.org", + "description": "Extends the Symfony2 routing component for dynamic routes and chaining several routers", + "homepage": "http://cmf.symfony.com", "keywords": [ - "cache", - "caching" + "database", + "routing" ] }, { - "name": "doctrine/inflector", - "version": "v1.0", - "version_normalized": "1.0.0.0", + "name": "doctrine/annotations", + "version": "dev-master", + "version_normalized": "9999999-dev", "source": { "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "v1.0" + "url": "https://github.com/doctrine/annotations.git", + "reference": "463d926a8dcc49271cb7db5a08364a70ed6e3cd3" }, "dist": { "type": "zip", - "url": "https://github.com/doctrine/inflector/archive/v1.0.zip", - "reference": "v1.0", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/463d926a8dcc49271cb7db5a08364a70ed6e3cd3", + "reference": "463d926a8dcc49271cb7db5a08364a70ed6e3cd3", "shasum": "" }, "require": { + "doctrine/lexer": "1.*", "php": ">=5.3.2" }, - "time": "2013-01-10 21:49:15", + "require-dev": { + "doctrine/cache": "1.*" + }, + "time": "2013-11-19 05:59:59", "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "installation-source": "dist", "autoload": { "psr-0": { - "Doctrine\\Common\\Inflector\\": "lib/" + "Doctrine\\Common\\Annotations\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", @@ -470,7 +261,8 @@ { "name": "Jonathan Wage", "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/" + "homepage": "http://www.jwage.com/", + "role": "Creator" }, { "name": "Guilherme Blanco", @@ -486,60 +278,57 @@ "email": "kontakt@beberlei.de" }, { - "name": "Johannes M. Schmitt", + "name": "Johannes Schmitt", "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh", + "homepage": "http://jmsyst.com", "role": "Developer of wrapped JMSSerializerBundle" } ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", + "description": "Docblock Annotations Parser", "homepage": "http://www.doctrine-project.org", "keywords": [ - "inflection", - "pluarlize", - "singuarlize", - "string" + "annotations", + "docblock", + "parser" ] }, { - "name": "symfony/debug", - "version": "v2.3.4", - "version_normalized": "2.3.4.0", - "target-dir": "Symfony/Component/Debug", + "name": "doctrine/common", + "version": "dev-master", + "version_normalized": "9999999-dev", "source": { "type": "git", - "url": "https://github.com/symfony/Debug.git", - "reference": "729f6d19cfc401c4942e43fcc1059103bd6df130" + "url": "https://github.com/doctrine/common.git", + "reference": "a45d110f71c323e29f41eb0696fa230e3fa1b1b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Debug/zipball/729f6d19cfc401c4942e43fcc1059103bd6df130", - "reference": "729f6d19cfc401c4942e43fcc1059103bd6df130", + "url": "https://api.github.com/repos/doctrine/common/zipball/a45d110f71c323e29f41eb0696fa230e3fa1b1b5", + "reference": "a45d110f71c323e29f41eb0696fa230e3fa1b1b5", "shasum": "" }, "require": { - "php": ">=5.3.3" + "doctrine/annotations": "1.*", + "doctrine/cache": "1.*", + "doctrine/collections": "1.*", + "doctrine/inflector": "1.*", + "doctrine/lexer": "1.*", + "php": ">=5.3.2" }, "require-dev": { - "symfony/http-foundation": "~2.1", - "symfony/http-kernel": "~2.1" - }, - "suggest": { - "symfony/class-loader": "", - "symfony/http-foundation": "", - "symfony/http-kernel": "" + "phpunit/phpunit": "~3.7" }, - "time": "2013-08-08 14:16:10", + "time": "2014-01-12 22:00:08", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "2.5.x-dev" } }, "installation-source": "dist", "autoload": { "psr-0": { - "Symfony\\Component\\Debug\\": "" + "Doctrine\\Common\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", @@ -548,104 +337,131 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Jonathan Wage", + "email": "jonwage@gmail.com", + "homepage": "http://www.jwage.com/", + "role": "Creator" }, { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com", + "homepage": "http://www.instaclick.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "http://jmsyst.com", + "role": "Developer of wrapped JMSSerializerBundle" } ], - "description": "Symfony Debug Component", - "homepage": "http://symfony.com" + "description": "Common Library for Doctrine projects", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "collections", + "eventmanager", + "persistence", + "spl" + ] }, { - "name": "symfony/translation", - "version": "v2.3.4", - "version_normalized": "2.3.4.0", - "target-dir": "Symfony/Component/Translation", + "name": "easyrdf/easyrdf", + "version": "0.8.0", + "version_normalized": "0.8.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/Translation.git", - "reference": "65f888291f0896ad492f9abc6dc05c998373aded" + "url": "https://github.com/njh/easyrdf.git", + "reference": "3e43ab7274004e9f4192e06b9fc147781e1f85c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Translation/zipball/65f888291f0896ad492f9abc6dc05c998373aded", - "reference": "65f888291f0896ad492f9abc6dc05c998373aded", + "url": "https://api.github.com/repos/njh/easyrdf/zipball/3e43ab7274004e9f4192e06b9fc147781e1f85c2", + "reference": "3e43ab7274004e9f4192e06b9fc147781e1f85c2", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.2.8" + }, + "replace": { + "njh/easyrdf": "self.version" }, "require-dev": { - "symfony/config": "~2.0", - "symfony/yaml": "~2.2" + "phpunit/phpunit": ">=3.5.15", + "sami/sami": "dev-master", + "squizlabs/php_codesniffer": ">=1.4.3" }, "suggest": { - "symfony/config": "", - "symfony/yaml": "" + "ml/json-ld": "dev-master" }, - "time": "2013-08-26 05:49:51", + "time": "2013-12-30 22:31:37", "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, "installation-source": "dist", "autoload": { "psr-0": { - "Symfony\\Component\\Translation\\": "" + "EasyRdf_": "lib/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "name": "Nicholas Humfrey", + "email": "njh@aelius.com", + "homepage": "http://www.aelius.com/njh/", + "role": "Developer" } ], - "description": "Symfony Translation Component", - "homepage": "http://symfony.com" + "description": "EasyRdf is a PHP library designed to make it easy to consume and produce RDF.", + "homepage": "http://www.easyrdf.org/", + "keywords": [ + "Linked Data", + "RDF", + "Semantic Web", + "Turtle", + "rdfa", + "sparql" + ] }, { - "name": "symfony/process", - "version": "v2.3.4", - "version_normalized": "2.3.4.0", - "target-dir": "Symfony/Component/Process", + "name": "symfony/yaml", + "version": "dev-master", + "version_normalized": "9999999-dev", + "target-dir": "Symfony/Component/Yaml", "source": { "type": "git", - "url": "https://github.com/symfony/Process.git", - "reference": "1e91553e1cedd0b8fb1da6ea4f89b02e21713d5b" + "url": "https://github.com/symfony/Yaml.git", + "reference": "e49a47d60348665261f6e279ba383241deb73cab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Process/zipball/1e91553e1cedd0b8fb1da6ea4f89b02e21713d5b", - "reference": "1e91553e1cedd0b8fb1da6ea4f89b02e21713d5b", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/e49a47d60348665261f6e279ba383241deb73cab", + "reference": "e49a47d60348665261f6e279ba383241deb73cab", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "time": "2013-08-22 06:42:25", + "time": "2014-02-24 16:21:51", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "2.5-dev" } }, "installation-source": "dist", "autoload": { "psr-0": { - "Symfony\\Component\\Process\\": "" + "Symfony\\Component\\Yaml\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -655,103 +471,577 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" } ], - "description": "Symfony Process Component", + "description": "Symfony Yaml Component", "homepage": "http://symfony.com" }, { - "name": "sdboyer/gliph", - "version": "0.1.4", - "version_normalized": "0.1.4.0", + "name": "sebastian/version", + "version": "1.0.3", + "version_normalized": "1.0.3.0", "source": { "type": "git", - "url": "https://github.com/sdboyer/gliph.git", - "reference": "aad932ef7d808105341cc9a36538e9fe2cb5ee82" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sdboyer/gliph/zipball/aad932ef7d808105341cc9a36538e9fe2cb5ee82", - "reference": "aad932ef7d808105341cc9a36538e9fe2cb5ee82", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43", + "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43", "shasum": "" }, - "require": { - "php": ">=5.3" - }, - "time": "2013-09-27 01:15:21", + "time": "2014-03-07 15:35:33", "type": "library", "installation-source": "dist", "autoload": { - "psr-0": { - "Gliph": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Sam Boyer", - "email": "tech@samboyer.org" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "A graph library for PHP.", - "homepage": "http://github.com/sdboyer/gliph", - "keywords": [ - "gliph", - "graph", - "library", - "php", - "spl" - ] + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version" }, { - "name": "symfony-cmf/routing", - "version": "1.1.0", - "version_normalized": "1.1.0.0", - "target-dir": "Symfony/Cmf/Component/Routing", + "name": "sebastian/exporter", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529", + "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "4.0.*@dev" + }, + "time": "2014-02-16 08:26:31", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net", + "role": "Lead" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ] + }, + { + "name": "sebastian/environment", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/79517609ec01139cd7e9fded0dd7ce08c952ef6a", + "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "4.0.*@dev" + }, + "time": "2014-02-18 16:17:19", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ] + }, + { + "name": "sebastian/diff", + "version": "1.1.0", + "version_normalized": "1.1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d", + "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2013-08-03 16:46:33", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "http://www.github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ] + }, + { + "name": "sebastian/comparator", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2", + "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.1", + "sebastian/exporter": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.1" + }, + "time": "2014-05-02 07:05:58", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ] + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.0", + "version_normalized": "1.2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2014-01-30 17:20:04", + "type": "library", + "installation-source": "dist", + "autoload": { + "classmap": [ + "Text/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ] + }, + { + "name": "phpunit/php-timer", + "version": "1.0.5", + "version_normalized": "1.0.5.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2013-08-02 07:42:54", + "type": "library", + "installation-source": "dist", + "autoload": { + "classmap": [ + "PHP/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ] + }, + { + "name": "phpunit/php-token-stream", + "version": "1.2.2", + "version_normalized": "1.2.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ad4e1e23ae01b483c16f600ff1bebec184588e32", + "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "time": "2014-03-03 05:10:30", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "PHP/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ] + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.3.4", + "version_normalized": "1.3.4.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2013-10-10 15:34:57", + "type": "library", + "installation-source": "dist", + "autoload": { + "classmap": [ + "File/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ] + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "dev-master", + "version_normalized": "9999999-dev", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "e60bb929c50ae4237aaf680a4f6773f4ee17f0a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/32f97c9198be565b6051983c70dc8d8e758725f4", + "reference": "e60bb929c50ae4237aaf680a4f6773f4ee17f0a2", + "shasum": "" + }, + "require": { + "ocramius/instantiator": "~1.0", + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "4.3.*@dev" + }, + "suggest": { + "ext-soap": "*" + }, + "time": "2014-06-12 07:22:27", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ] + }, + { + "name": "symfony/serializer", + "version": "v2.5.2", + "version_normalized": "2.5.2.0", + "target-dir": "Symfony/Component/Serializer", "source": { "type": "git", - "url": "https://github.com/symfony-cmf/Routing.git", - "reference": "9f8607950cbf888ec678713a35f3d0088857c85f" + "url": "https://github.com/symfony/Serializer.git", + "reference": "33185b290310ab1fd8283fb8ed2a434cdb88b9b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/9f8607950cbf888ec678713a35f3d0088857c85f", - "reference": "9f8607950cbf888ec678713a35f3d0088857c85f", + "url": "https://api.github.com/repos/symfony/Serializer/zipball/33185b290310ab1fd8283fb8ed2a434cdb88b9b9", + "reference": "33185b290310ab1fd8283fb8ed2a434cdb88b9b9", "shasum": "" }, "require": { - "php": ">=5.3.3", - "psr/log": "~1.0", - "symfony/http-kernel": "~2.2", - "symfony/routing": "~2.2" - }, - "require-dev": { - "symfony/config": "~2.2", - "symfony/dependency-injection": "~2.0", - "symfony/event-dispatcher": "~2.1" - }, - "suggest": { - "symfony/event-dispatcher": "DynamicRouter can optionally trigger an event at the start of matching. Minimal version ~2.1" + "php": ">=5.3.3" }, - "time": "2013-10-14 15:32:46", + "time": "2014-07-09 09:05:48", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.5-dev" } }, "installation-source": "dist", "autoload": { "psr-0": { - "Symfony\\Cmf\\Component\\Routing": "" + "Symfony\\Component\\Serializer\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -760,50 +1050,47 @@ ], "authors": [ { - "name": "Symfony CMF Community", - "homepage": "https://github.com/symfony-cmf/Routing/contributors" + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" } ], - "description": "Extends the Symfony2 routing component for dynamic routes and chaining several routers", - "homepage": "http://cmf.symfony.com", - "keywords": [ - "database", - "routing" - ] + "description": "Symfony Serializer Component", + "homepage": "http://symfony.com" }, { - "name": "doctrine/annotations", - "version": "dev-master", - "version_normalized": "9999999-dev", + "name": "sdboyer/gliph", + "version": "0.1.8", + "version_normalized": "0.1.8.0", "source": { "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "463d926a8dcc49271cb7db5a08364a70ed6e3cd3" + "url": "https://github.com/sdboyer/gliph.git", + "reference": "db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/463d926a8dcc49271cb7db5a08364a70ed6e3cd3", - "reference": "463d926a8dcc49271cb7db5a08364a70ed6e3cd3", + "url": "https://api.github.com/repos/sdboyer/gliph/zipball/db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e", + "reference": "db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", - "php": ">=5.3.2" + "php": ">=5.3" }, "require-dev": { - "doctrine/cache": "1.*" + "phpunit/phpunit": "3.7.*", + "satooshi/php-coveralls": "0.6.*" }, - "time": "2013-11-19 05:59:59", + "time": "2014-08-03 14:34:47", "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "installation-source": "dist", "autoload": { "psr-0": { - "Doctrine\\Common\\Annotations\\": "lib/" + "Gliph": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -812,127 +1099,104 @@ ], "authors": [ { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/", - "role": "Creator" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com", - "homepage": "http://www.instaclick.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "http://jmsyst.com", - "role": "Developer of wrapped JMSSerializerBundle" + "name": "Sam Boyer", + "email": "tech@samboyer.org" } ], - "description": "Docblock Annotations Parser", - "homepage": "http://www.doctrine-project.org", + "description": "A graph library for PHP.", + "homepage": "http://github.com/sdboyer/gliph", "keywords": [ - "annotations", - "docblock", - "parser" + "gliph", + "graph", + "library", + "php", + "spl" ] }, { - "name": "twig/twig", - "version": "v1.15.0", - "version_normalized": "1.15.0.0", + "name": "symfony/class-loader", + "version": "v2.4.8", + "version_normalized": "2.4.8.0", + "target-dir": "Symfony/Component/ClassLoader", "source": { "type": "git", - "url": "https://github.com/fabpot/Twig.git", - "reference": "85e4ff98000157ff753d934b9f13659a953f5666" + "url": "https://github.com/symfony/ClassLoader.git", + "reference": "94b18e1beb7708872e237e1cab82c7369e817b0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fabpot/Twig/zipball/85e4ff98000157ff753d934b9f13659a953f5666", - "reference": "85e4ff98000157ff753d934b9f13659a953f5666", + "url": "https://api.github.com/repos/symfony/ClassLoader/zipball/94b18e1beb7708872e237e1cab82c7369e817b0a", + "reference": "94b18e1beb7708872e237e1cab82c7369e817b0a", "shasum": "" }, "require": { - "php": ">=5.2.4" + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/finder": "~2.0" }, - "time": "2013-12-06 07:47:10", + "time": "2014-07-09 09:04:55", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "2.4-dev" } }, "installation-source": "dist", "autoload": { "psr-0": { - "Twig_": "lib/" + "Symfony\\Component\\ClassLoader\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com" + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" } ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "http://twig.sensiolabs.org", - "keywords": [ - "templating" - ] + "description": "Symfony ClassLoader Component", + "homepage": "http://symfony.com" }, { - "name": "doctrine/common", - "version": "dev-master", - "version_normalized": "9999999-dev", + "name": "symfony/css-selector", + "version": "v2.4.8", + "version_normalized": "2.4.8.0", + "target-dir": "Symfony/Component/CssSelector", "source": { "type": "git", - "url": "https://github.com/doctrine/common.git", - "reference": "a45d110f71c323e29f41eb0696fa230e3fa1b1b5" + "url": "https://github.com/symfony/CssSelector.git", + "reference": "52c35be379ec341c15d2edc7f798f7fd69708645" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/a45d110f71c323e29f41eb0696fa230e3fa1b1b5", - "reference": "a45d110f71c323e29f41eb0696fa230e3fa1b1b5", + "url": "https://api.github.com/repos/symfony/CssSelector/zipball/52c35be379ec341c15d2edc7f798f7fd69708645", + "reference": "52c35be379ec341c15d2edc7f798f7fd69708645", "shasum": "" }, "require": { - "doctrine/annotations": "1.*", - "doctrine/cache": "1.*", - "doctrine/collections": "1.*", - "doctrine/inflector": "1.*", - "doctrine/lexer": "1.*", - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~3.7" + "php": ">=5.3.3" }, - "time": "2014-01-12 22:00:08", + "time": "2014-07-09 09:04:55", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5.x-dev" + "dev-master": "2.4-dev" } }, "installation-source": "dist", "autoload": { "psr-0": { - "Doctrine\\Common\\": "lib/" + "Symfony\\Component\\CssSelector\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -941,64 +1205,53 @@ ], "authors": [ { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/", - "role": "Creator" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com", - "homepage": "http://www.instaclick.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" }, { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "http://jmsyst.com", - "role": "Developer of wrapped JMSSerializerBundle" + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" } ], - "description": "Common Library for Doctrine projects", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "annotations", - "collections", - "eventmanager", - "persistence", - "spl" - ] + "description": "Symfony CssSelector Component", + "homepage": "http://symfony.com" }, { - "name": "symfony/class-loader", - "version": "v2.4.1", - "version_normalized": "2.4.1.0", - "target-dir": "Symfony/Component/ClassLoader", + "name": "symfony/dependency-injection", + "version": "v2.4.8", + "version_normalized": "2.4.8.0", + "target-dir": "Symfony/Component/DependencyInjection", "source": { "type": "git", - "url": "https://github.com/symfony/ClassLoader.git", - "reference": "6a2ebedbc780130f07b3a15363743d08eb46820c" + "url": "https://github.com/symfony/DependencyInjection.git", + "reference": "0655a6b985d2ecb248825b7f5ed569a85a822e53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ClassLoader/zipball/6a2ebedbc780130f07b3a15363743d08eb46820c", - "reference": "6a2ebedbc780130f07b3a15363743d08eb46820c", + "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/0655a6b985d2ecb248825b7f5ed569a85a822e53", + "reference": "0655a6b985d2ecb248825b7f5ed569a85a822e53", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { - "symfony/finder": "~2.0" + "symfony/config": "~2.2", + "symfony/expression-language": "~2.4", + "symfony/yaml": "~2.0" + }, + "suggest": { + "symfony/config": "", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" }, - "time": "2013-11-26 16:40:27", + "time": "2014-07-09 09:04:55", "type": "library", "extra": { "branch-alias": { @@ -1008,7 +1261,7 @@ "installation-source": "dist", "autoload": { "psr-0": { - "Symfony\\Component\\ClassLoader\\": "" + "Symfony\\Component\\DependencyInjection\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -1018,56 +1271,56 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" } ], - "description": "Symfony ClassLoader Component", + "description": "Symfony DependencyInjection Component", "homepage": "http://symfony.com" }, { - "name": "symfony/dependency-injection", - "version": "v2.4.1", - "version_normalized": "2.4.1.0", - "target-dir": "Symfony/Component/DependencyInjection", + "name": "symfony/debug", + "version": "v2.5.2", + "version_normalized": "2.5.2.0", + "target-dir": "Symfony/Component/Debug", "source": { "type": "git", - "url": "https://github.com/symfony/DependencyInjection.git", - "reference": "7e5bde3a607dde1f8ddef5180759068ad53d259c" + "url": "git@github.com:symfony/Debug.git", + "reference": "a725879a4b1c0e9a242c7a0480e787cb6465cb8f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/7e5bde3a607dde1f8ddef5180759068ad53d259c", - "reference": "7e5bde3a607dde1f8ddef5180759068ad53d259c", + "url": "https://api.github.com/repos/symfony/Debug/zipball/a725879a4b1c0e9a242c7a0480e787cb6465cb8f", + "reference": "a725879a4b1c0e9a242c7a0480e787cb6465cb8f", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { - "symfony/config": "~2.2", - "symfony/expression-language": "~2.4", - "symfony/yaml": "~2.0" + "symfony/http-foundation": "~2.1", + "symfony/http-kernel": "~2.1" }, "suggest": { - "symfony/config": "", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" + "symfony/http-foundation": "", + "symfony/http-kernel": "" }, - "time": "2014-01-01 09:02:49", + "time": "2014-07-09 09:05:48", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.5-dev" } }, "installation-source": "dist", "autoload": { "psr-0": { - "Symfony\\Component\\DependencyInjection\\": "" + "Symfony\\Component\\Debug\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -1076,37 +1329,40 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Symfony DependencyInjection Component", + "description": "Symfony Debug Component", "homepage": "http://symfony.com" }, { "name": "symfony/http-foundation", - "version": "v2.4.1", - "version_normalized": "2.4.1.0", + "version": "v2.4.8", + "version_normalized": "2.4.8.0", "target-dir": "Symfony/Component/HttpFoundation", "source": { "type": "git", "url": "https://github.com/symfony/HttpFoundation.git", - "reference": "6c6b8a7bcd7e2cc920cd6acace563fdbf121d844" + "reference": "68abe34601c519359b60363b99c29ecfb6679bc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/6c6b8a7bcd7e2cc920cd6acace563fdbf121d844", - "reference": "6c6b8a7bcd7e2cc920cd6acace563fdbf121d844", + "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/68abe34601c519359b60363b99c29ecfb6679bc4", + "reference": "68abe34601c519359b60363b99c29ecfb6679bc4", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "time": "2014-01-05 02:10:50", + "require-dev": { + "symfony/expression-language": "~2.4" + }, + "time": "2014-07-15 14:07:10", "type": "library", "extra": { "branch-alias": { @@ -1129,7 +1385,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1141,18 +1399,18 @@ }, { "name": "symfony/event-dispatcher", - "version": "v2.4.1", - "version_normalized": "2.4.1.0", + "version": "v2.4.8", + "version_normalized": "2.4.8.0", "target-dir": "Symfony/Component/EventDispatcher", "source": { "type": "git", "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "e3ba42f6a70554ed05749e61b829550f6ac33601" + "reference": "6008a029b6a3c0816d58be2ca8923e324cc89d93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/e3ba42f6a70554ed05749e61b829550f6ac33601", - "reference": "e3ba42f6a70554ed05749e61b829550f6ac33601", + "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/6008a029b6a3c0816d58be2ca8923e324cc89d93", + "reference": "6008a029b6a3c0816d58be2ca8923e324cc89d93", "shasum": "" }, "require": { @@ -1165,7 +1423,7 @@ "symfony/dependency-injection": "", "symfony/http-kernel": "" }, - "time": "2013-12-28 08:12:03", + "time": "2014-07-09 09:04:55", "type": "library", "extra": { "branch-alias": { @@ -1185,7 +1443,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1197,18 +1457,18 @@ }, { "name": "symfony/http-kernel", - "version": "v2.4.1", - "version_normalized": "2.4.1.0", + "version": "v2.4.8", + "version_normalized": "2.4.8.0", "target-dir": "Symfony/Component/HttpKernel", "source": { "type": "git", "url": "https://github.com/symfony/HttpKernel.git", - "reference": "0605eedeb52c4d3a3144128d8336395a57be60d4" + "reference": "b2c3fc145e7b50c8e09daab303674126ca3a8c5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/0605eedeb52c4d3a3144128d8336395a57be60d4", - "reference": "0605eedeb52c4d3a3144128d8336395a57be60d4", + "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/b2c3fc145e7b50c8e09daab303674126ca3a8c5b", + "reference": "b2c3fc145e7b50c8e09daab303674126ca3a8c5b", "shasum": "" }, "require": { @@ -1238,7 +1498,7 @@ "symfony/dependency-injection": "", "symfony/finder": "" }, - "time": "2014-01-05 02:12:11", + "time": "2014-07-15 14:52:02", "type": "library", "extra": { "branch-alias": { @@ -1258,7 +1518,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1270,18 +1532,18 @@ }, { "name": "symfony/routing", - "version": "v2.4.1", - "version_normalized": "2.4.1.0", + "version": "v2.4.8", + "version_normalized": "2.4.8.0", "target-dir": "Symfony/Component/Routing", "source": { "type": "git", "url": "https://github.com/symfony/Routing.git", - "reference": "4abfb500aab8be458c9e3a227ea56b190584f78a" + "reference": "d290f15b7083cee926e17299ab6889210058b30e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Routing/zipball/4abfb500aab8be458c9e3a227ea56b190584f78a", - "reference": "4abfb500aab8be458c9e3a227ea56b190584f78a", + "url": "https://api.github.com/repos/symfony/Routing/zipball/d290f15b7083cee926e17299ab6889210058b30e", + "reference": "d290f15b7083cee926e17299ab6889210058b30e", "shasum": "" }, "require": { @@ -1300,7 +1562,7 @@ "symfony/expression-language": "For using expression matching", "symfony/yaml": "For using the YAML loader" }, - "time": "2014-01-05 02:10:50", + "time": "2014-07-09 09:04:55", "type": "library", "extra": { "branch-alias": { @@ -1320,7 +1582,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1338,28 +1602,28 @@ }, { "name": "symfony/property-access", - "version": "v2.4.1", - "version_normalized": "2.4.1.0", + "version": "v2.5.2", + "version_normalized": "2.5.2.0", "target-dir": "Symfony/Component/PropertyAccess", "source": { "type": "git", "url": "https://github.com/symfony/PropertyAccess.git", - "reference": "274951234150e303c83099a2429be6be35629fe9" + "reference": "c80993206d5d842c46fc0bdb7da576a42845acfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/PropertyAccess/zipball/274951234150e303c83099a2429be6be35629fe9", - "reference": "274951234150e303c83099a2429be6be35629fe9", + "url": "https://api.github.com/repos/symfony/PropertyAccess/zipball/c80993206d5d842c46fc0bdb7da576a42845acfb", + "reference": "c80993206d5d842c46fc0bdb7da576a42845acfb", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "time": "2013-11-13 21:30:16", + "time": "2014-07-09 09:05:48", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.5-dev" } }, "installation-source": "dist", @@ -1375,7 +1639,9 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", @@ -1397,377 +1663,163 @@ ] }, { - "name": "symfony/validator", - "version": "v2.4.1", - "version_normalized": "2.4.1.0", - "target-dir": "Symfony/Component/Validator", + "name": "symfony/translation", + "version": "v2.5.2", + "version_normalized": "2.5.2.0", + "target-dir": "Symfony/Component/Translation", "source": { "type": "git", - "url": "https://github.com/symfony/Validator.git", - "reference": "7ea4e53f8d68bf3ae9cca28765d49d7930618730" + "url": "https://github.com/symfony/Translation.git", + "reference": "059d57c361043f5a06eb348b9b7554213f9ab8d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Validator/zipball/7ea4e53f8d68bf3ae9cca28765d49d7930618730", - "reference": "7ea4e53f8d68bf3ae9cca28765d49d7930618730", + "url": "https://api.github.com/repos/symfony/Translation/zipball/059d57c361043f5a06eb348b9b7554213f9ab8d1", + "reference": "059d57c361043f5a06eb348b9b7554213f9ab8d1", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/property-access": "~2.2", - "symfony/translation": "~2.0" + "php": ">=5.3.3" }, "require-dev": { - "doctrine/annotations": "~1.0", - "doctrine/cache": "~1.0", - "symfony/config": "~2.2", - "symfony/http-foundation": "~2.1", - "symfony/intl": "~2.3", - "symfony/yaml": "~2.0" + "symfony/config": "~2.0", + "symfony/yaml": "~2.2" }, "suggest": { - "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", - "doctrine/cache": "For using the default cached annotation reader", "symfony/config": "", - "symfony/http-foundation": "", - "symfony/intl": "", "symfony/yaml": "" }, - "time": "2014-01-01 08:14:50", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\Validator\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "Symfony Validator Component", - "homepage": "http://symfony.com" - }, - { - "name": "easyrdf/easyrdf", - "version": "0.8.0", - "version_normalized": "0.8.0.0", - "source": { - "type": "git", - "url": "https://github.com/njh/easyrdf.git", - "reference": "3e43ab7274004e9f4192e06b9fc147781e1f85c2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/njh/easyrdf/zipball/3e43ab7274004e9f4192e06b9fc147781e1f85c2", - "reference": "3e43ab7274004e9f4192e06b9fc147781e1f85c2", - "shasum": "" - }, - "require": { - "php": ">=5.2.8" - }, - "replace": { - "njh/easyrdf": "self.version" - }, - "require-dev": { - "phpunit/phpunit": ">=3.5.15", - "sami/sami": "dev-master", - "squizlabs/php_codesniffer": ">=1.4.3" - }, - "suggest": { - "ml/json-ld": "dev-master" - }, - "time": "2013-12-30 22:31:37", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "EasyRdf_": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nicholas Humfrey", - "email": "njh@aelius.com", - "homepage": "http://www.aelius.com/njh/", - "role": "Developer" - } - ], - "description": "EasyRdf is a PHP library designed to make it easy to consume and produce RDF.", - "homepage": "http://www.easyrdf.org/", - "keywords": [ - "Linked Data", - "RDF", - "Semantic Web", - "Turtle", - "rdfa", - "sparql" - ] - }, - { - "name": "symfony/yaml", - "version": "dev-master", - "version_normalized": "9999999-dev", - "target-dir": "Symfony/Component/Yaml", - "source": { - "type": "git", - "url": "https://github.com/symfony/Yaml.git", - "reference": "e49a47d60348665261f6e279ba383241deb73cab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/e49a47d60348665261f6e279ba383241deb73cab", - "reference": "e49a47d60348665261f6e279ba383241deb73cab", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2014-02-24 16:21:51", + "time": "2014-07-15 14:22:44", "type": "library", "extra": { "branch-alias": { "dev-master": "2.5-dev" } }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\Yaml\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "http://symfony.com" - }, - { - "name": "symfony/css-selector", - "version": "v2.4.4", - "version_normalized": "2.4.4.0", - "target-dir": "Symfony/Component/CssSelector", - "source": { - "type": "git", - "url": "https://github.com/symfony/CssSelector.git", - "reference": "479a5b409723f596ffc3b5178034e4d76ce615b3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/CssSelector/zipball/479a5b409723f596ffc3b5178034e4d76ce615b3", - "reference": "479a5b409723f596ffc3b5178034e4d76ce615b3", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2014-04-18 20:37:09", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\CssSelector\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - } - ], - "description": "Symfony CssSelector Component", - "homepage": "http://symfony.com" - }, - { - "name": "sebastian/version", - "version": "1.0.3", - "version_normalized": "1.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43", - "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43", - "shasum": "" - }, - "time": "2014-03-07 15:35:33", - "type": "library", - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\Translation\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version" + "description": "Symfony Translation Component", + "homepage": "http://symfony.com" }, { - "name": "sebastian/exporter", - "version": "1.0.1", - "version_normalized": "1.0.1.0", + "name": "symfony/validator", + "version": "v2.4.8", + "version_normalized": "2.4.8.0", + "target-dir": "Symfony/Component/Validator", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529" + "url": "https://github.com/symfony/Validator.git", + "reference": "5b32e6d5c9ac1c454823348f4d9dc564975b2008" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529", - "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529", + "url": "https://api.github.com/repos/symfony/Validator/zipball/5b32e6d5c9ac1c454823348f4d9dc564975b2008", + "reference": "5b32e6d5c9ac1c454823348f4d9dc564975b2008", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.3", + "symfony/property-access": "~2.2", + "symfony/translation": "~2.0" }, "require-dev": { - "phpunit/phpunit": "4.0.*@dev" + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "symfony/config": "~2.2", + "symfony/http-foundation": "~2.1", + "symfony/intl": "~2.3", + "symfony/yaml": "~2.0" }, - "time": "2014-02-16 08:26:31", + "suggest": { + "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", + "doctrine/cache": "For using the default cached annotation reader", + "symfony/config": "", + "symfony/http-foundation": "", + "symfony/intl": "", + "symfony/yaml": "" + }, + "time": "2014-07-15 14:07:10", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.4-dev" } }, "installation-source": "dist", "autoload": { - "classmap": [ - "src/" - ] + "psr-0": { + "Symfony\\Component\\Validator\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net", - "role": "Lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" } ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ] + "description": "Symfony Validator Component", + "homepage": "http://symfony.com" }, { - "name": "sebastian/environment", - "version": "1.0.0", - "version_normalized": "1.0.0.0", + "name": "twig/twig", + "version": "v1.15.1", + "version_normalized": "1.15.1.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a" + "url": "https://github.com/fabpot/Twig.git", + "reference": "1fb5784662f438d7d96a541e305e28b812e2eeed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/79517609ec01139cd7e9fded0dd7ce08c952ef6a", - "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a", + "url": "https://api.github.com/repos/fabpot/Twig/zipball/1fb5784662f438d7d96a541e305e28b812e2eeed", + "reference": "1fb5784662f438d7d96a541e305e28b812e2eeed", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "4.0.*@dev" + "php": ">=5.2.4" }, - "time": "2014-02-18 16:17:19", + "time": "2014-02-13 10:19:29", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.15-dev" } }, "installation-source": "dist", "autoload": { - "classmap": [ - "src/" - ] + "psr-0": { + "Twig_": "lib/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1775,342 +1827,404 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "https://github.com/fabpot/Twig/graphs/contributors", + "role": "Contributors" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "http://twig.sensiolabs.org", "keywords": [ - "Xdebug", - "environment", - "hhvm" + "templating" ] }, { - "name": "sebastian/diff", - "version": "1.1.0", - "version_normalized": "1.1.0.0", + "name": "guzzlehttp/streams", + "version": "1.4.0", + "version_normalized": "1.4.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d" + "url": "https://github.com/guzzle/streams.git", + "reference": "3b761a328e5ed6ed519e960aded95d7acbe77894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d", - "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d", + "url": "https://api.github.com/repos/guzzle/streams/zipball/3b761a328e5ed6ed519e960aded95d7acbe77894", + "reference": "3b761a328e5ed6ed519e960aded95d7acbe77894", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.4.0" }, - "time": "2013-08-03 16:46:33", + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "time": "2014-07-19 18:43:42", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "1.4.x-dev" } }, "installation-source": "dist", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "GuzzleHttp\\Stream\\": "src/" + }, + "files": [ + "src/functions.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" } ], - "description": "Diff implementation", - "homepage": "http://www.github.com/sebastianbergmann/diff", + "description": "Provides a simple abstraction over streams of data (Guzzle 4+)", + "homepage": "http://guzzlephp.org/", "keywords": [ - "diff" + "Guzzle", + "stream" ] }, { - "name": "sebastian/comparator", - "version": "1.0.0", - "version_normalized": "1.0.0.0", + "name": "guzzlehttp/guzzle", + "version": "4.1.5", + "version_normalized": "4.1.5.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2" + "url": "https://github.com/guzzle/guzzle.git", + "reference": "75e58ada121dffe1038331b808f8d3109499edc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2", - "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/75e58ada121dffe1038331b808f8d3109499edc4", + "reference": "75e58ada121dffe1038331b808f8d3109499edc4", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.1", - "sebastian/exporter": "~1.0" + "ext-json": "*", + "guzzlehttp/streams": "~1.4", + "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "~4.1" + "ext-curl": "*", + "phpunit/phpunit": "~4.0", + "psr/log": "~1.0" }, - "time": "2014-05-02 07:05:58", + "suggest": { + "ext-curl": "Guzzle will use specific adapters if cURL is present" + }, + "time": "2014-08-02 22:52:37", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "4.1.x-dev" } }, "installation-source": "dist", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "GuzzleHttp\\": "src/" + }, + "files": [ + "src/functions.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" } ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients", + "homepage": "http://guzzlephp.org/", "keywords": [ - "comparator", - "compare", - "equality" + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" ] }, { - "name": "phpunit/php-text-template", - "version": "1.2.0", - "version_normalized": "1.2.0.0", + "name": "symfony/process", + "version": "v2.5.2", + "version_normalized": "2.5.2.0", + "target-dir": "Symfony/Component/Process", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" + "url": "https://github.com/symfony/Process.git", + "reference": "5e53efbf61a7fbf73c79e3e08feea50f64c20bfa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "url": "https://api.github.com/repos/symfony/Process/zipball/5e53efbf61a7fbf73c79e3e08feea50f64c20bfa", + "reference": "5e53efbf61a7fbf73c79e3e08feea50f64c20bfa", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "time": "2014-01-30 17:20:04", + "time": "2014-07-09 09:05:48", "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, "installation-source": "dist", "autoload": { - "classmap": [ - "Text/" - ] + "psr-0": { + "Symfony\\Component\\Process\\": "" + } }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ] + "description": "Symfony Process Component", + "homepage": "http://symfony.com" }, { - "name": "phpunit/php-timer", - "version": "1.0.5", - "version_normalized": "1.0.5.0", + "name": "kriswallsmith/assetic", + "version": "v1.1.2", + "version_normalized": "1.1.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" + "url": "https://github.com/kriswallsmith/assetic.git", + "reference": "735cffd3982c6e8cdebe292d5db39d077f65890f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/735cffd3982c6e8cdebe292d5db39d077f65890f", + "reference": "735cffd3982c6e8cdebe292d5db39d077f65890f", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.1", + "symfony/process": "~2.1" }, - "time": "2013-08-02 07:42:54", + "require-dev": { + "cssmin/cssmin": "*", + "joliclic/javascript-packer": "*", + "kamicane/packager": "*", + "leafo/lessphp": "*", + "leafo/scssphp": "*", + "leafo/scssphp-compass": "*", + "mrclay/minify": "*", + "phpunit/phpunit": "~3.7", + "ptachoire/cssembed": "*", + "twig/twig": "~1.6" + }, + "suggest": { + "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler", + "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler", + "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin", + "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris", + "twig/twig": "Assetic provides the integration with the Twig templating engine" + }, + "time": "2013-07-19 00:03:27", "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, "installation-source": "dist", "autoload": { - "classmap": [ - "PHP/" + "psr-0": { + "Assetic": "src/" + }, + "files": [ + "src/functions.php" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "name": "Kris Wallsmith", + "email": "kris.wallsmith@gmail.com", + "homepage": "http://kriswallsmith.net/" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "Asset Management for PHP", + "homepage": "https://github.com/kriswallsmith/assetic", "keywords": [ - "timer" + "assets", + "compression", + "minification" ] }, { - "name": "phpunit/php-token-stream", - "version": "1.2.2", - "version_normalized": "1.2.2.0", + "name": "ocramius/lazy-map", + "version": "1.0.0", + "version_normalized": "1.0.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32" + "url": "https://github.com/Ocramius/LazyMap.git", + "reference": "7fe3d347f5e618bcea7d39345ff83f3651d8b752" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ad4e1e23ae01b483c16f600ff1bebec184588e32", - "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32", + "url": "https://api.github.com/repos/Ocramius/LazyMap/zipball/7fe3d347f5e618bcea7d39345ff83f3651d8b752", + "reference": "7fe3d347f5e618bcea7d39345ff83f3651d8b752", "shasum": "" }, "require": { - "ext-tokenizer": "*", "php": ">=5.3.3" }, - "time": "2014-03-03 05:10:30", + "require-dev": { + "athletic/athletic": "~0.1.6", + "phpmd/phpmd": "1.5.*", + "phpunit/phpunit": ">=3.7", + "satooshi/php-coveralls": "~0.6", + "squizlabs/php_codesniffer": "1.4.*" + }, + "time": "2013-11-09 22:30:54", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.0.x-dev" } }, "installation-source": "dist", "autoload": { - "classmap": [ - "PHP/" - ] + "psr-0": { + "LazyMap\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/", + "role": "Developer" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "description": "A library that provides lazy instantiation logic for a map of objects", + "homepage": "https://github.com/Ocramius/LazyMap", "keywords": [ - "tokenizer" + "lazy", + "lazy instantiation", + "lazy loading", + "map", + "service location" ] }, { - "name": "phpunit/php-file-iterator", - "version": "1.3.4", - "version_normalized": "1.3.4.0", + "name": "ocramius/instantiator", + "version": "1.0.0", + "version_normalized": "1.0.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" + "url": "https://github.com/Ocramius/Instantiator.git", + "reference": "cc754c2289ffd4483c319f6ed6ee88ce21676f64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", + "url": "https://api.github.com/repos/Ocramius/Instantiator/zipball/cc754c2289ffd4483c319f6ed6ee88ce21676f64", + "reference": "cc754c2289ffd4483c319f6ed6ee88ce21676f64", "shasum": "" }, "require": { - "php": ">=5.3.3" + "ocramius/lazy-map": "1.0.*", + "php": "~5.3" }, - "time": "2013-10-10 15:34:57", + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "2.0.*@ALPHA" + }, + "time": "2014-06-15 11:44:46", "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "installation-source": "dist", "autoload": { - "classmap": [ - "File/" - ] + "psr-0": { + "Instantiator\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/", + "role": "Developer" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/Ocramius/Instantiator", "keywords": [ - "filesystem", - "iterator" + "constructor", + "instantiate" ] }, { "name": "phpunit/php-code-coverage", - "version": "2.0.8", - "version_normalized": "2.0.8.0", + "version": "2.0.9", + "version_normalized": "2.0.9.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "58401826c8cfc8fd689b60026e91c337df374bca" + "reference": "ed8ac99ce38c3fd134128c898f7ca74665abef7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/58401826c8cfc8fd689b60026e91c337df374bca", - "reference": "58401826c8cfc8fd689b60026e91c337df374bca", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ed8ac99ce38c3fd134128c898f7ca74665abef7f", + "reference": "ed8ac99ce38c3fd134128c898f7ca74665abef7f", "shasum": "" }, "require": { @@ -2130,7 +2244,7 @@ "ext-xdebug": ">=2.2.1", "ext-xmlwriter": "*" }, - "time": "2014-05-26 14:55:24", + "time": "2014-06-29 08:14:40", "type": "library", "extra": { "branch-alias": { @@ -2167,17 +2281,17 @@ }, { "name": "phpunit/phpunit", - "version": "4.1.3", - "version_normalized": "4.1.3.0", + "version": "4.1.4", + "version_normalized": "4.1.4.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "939cb801b3b2aa253aedd0b279f40bb8f35cec91" + "reference": "a71c4842c5fb836d8b200624583b859ec34e8a26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/939cb801b3b2aa253aedd0b279f40bb8f35cec91", - "reference": "939cb801b3b2aa253aedd0b279f40bb8f35cec91", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a71c4842c5fb836d8b200624583b859ec34e8a26", + "reference": "a71c4842c5fb836d8b200624583b859ec34e8a26", "shasum": "" }, "require": { @@ -2199,205 +2313,263 @@ "sebastian/version": "~1.0", "symfony/yaml": "~2.0" }, - "suggest": { - "phpunit/php-invoker": "~1.1" + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "time": "2014-07-18 07:15:58", + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "", + "../../symfony/yaml/" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "http://www.phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ] + }, + { + "name": "zendframework/zend-stdlib", + "version": "2.2.6", + "version_normalized": "2.2.6.0", + "target-dir": "Zend/Stdlib", + "source": { + "type": "git", + "url": "https://github.com/zendframework/Component_ZendStdlib.git", + "reference": "e646729f2274f4552b6a92e38d8e458efe08ebc5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/Component_ZendStdlib/zipball/e646729f2274f4552b6a92e38d8e458efe08ebc5", + "reference": "e646729f2274f4552b6a92e38d8e458efe08ebc5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "zendframework/zend-eventmanager": "To support aggregate hydrator usage", + "zendframework/zend-servicemanager": "To support hydrator plugin manager usage" + }, + "time": "2014-01-04 13:00:28", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev", + "dev-develop": "2.3-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Zend\\Stdlib\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "keywords": [ + "stdlib", + "zf2" + ] + }, + { + "name": "zendframework/zend-escaper", + "version": "2.2.6", + "version_normalized": "2.2.6.0", + "target-dir": "Zend/Escaper", + "source": { + "type": "git", + "url": "https://github.com/zendframework/Component_ZendEscaper.git", + "reference": "80abc4bc1f48b9fe8ed603aaa9eebd6e6f30fd0f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/Component_ZendEscaper/zipball/80abc4bc1f48b9fe8ed603aaa9eebd6e6f30fd0f", + "reference": "80abc4bc1f48b9fe8ed603aaa9eebd6e6f30fd0f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" }, - "time": "2014-06-11 14:15:47", - "bin": [ - "phpunit" - ], + "time": "2014-01-04 13:00:13", "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1.x-dev" + "dev-master": "2.2-dev", + "dev-develop": "2.3-dev" } }, "installation-source": "dist", "autoload": { - "classmap": [ - "src/" - ] + "psr-0": { + "Zend\\Escaper\\": "" + } }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "", - "../../symfony/yaml/" - ], "license": [ "BSD-3-Clause" ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "http://www.phpunit.de/", "keywords": [ - "phpunit", - "testing", - "xunit" + "escaper", + "zf2" ] }, { - "name": "phpunit/phpunit-mock-objects", - "version": "dev-master", - "version_normalized": "9999999-dev", + "name": "zendframework/zend-feed", + "version": "2.2.6", + "version_normalized": "2.2.6.0", + "target-dir": "Zend/Feed", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "e60bb929c50ae4237aaf680a4f6773f4ee17f0a2" + "url": "https://github.com/zendframework/Component_ZendFeed.git", + "reference": "8acb562d99dd0786d25c990530980d2d92b67b35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/32f97c9198be565b6051983c70dc8d8e758725f4", - "reference": "e60bb929c50ae4237aaf680a4f6773f4ee17f0a2", + "url": "https://api.github.com/repos/zendframework/Component_ZendFeed/zipball/8acb562d99dd0786d25c990530980d2d92b67b35", + "reference": "8acb562d99dd0786d25c990530980d2d92b67b35", "shasum": "" }, "require": { "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2" - }, - "require-dev": { - "phpunit/phpunit": "4.3.*@dev" + "zendframework/zend-escaper": "self.version", + "zendframework/zend-stdlib": "self.version" }, "suggest": { - "ext-soap": "*" + "zendframework/zend-http": "Zend\\Http for PubSubHubbub, and optionally for use with Zend\\Feed\\Reader", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for default/recommended ExtensionManager implementations", + "zendframework/zend-validator": "Zend\\Validator component" }, - "time": "2014-06-12 07:22:27", + "time": "2014-01-04 13:00:14", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3.x-dev" + "dev-master": "2.2-dev", + "dev-develop": "2.3-dev" } }, "installation-source": "dist", "autoload": { - "classmap": [ - "src/" - ] + "psr-0": { + "Zend\\Feed\\": "" + } }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "description": "provides functionality for consuming RSS and Atom feeds", "keywords": [ - "mock", - "xunit" + "feed", + "zf2" ] }, { - "name": "guzzlehttp/streams", - "version": "1.3.0", + "name": "mikey179/vfsStream", + "version": "v1.3.0", "version_normalized": "1.3.0.0", "source": { "type": "git", - "url": "https://github.com/guzzle/streams.git", - "reference": "d6aaa91cfdbae86355dd2a168a3ca536755898a2" + "url": "https://github.com/mikey179/vfsStream.git", + "reference": "8571f349567e02af1b7efc0fc4e3a4a1c98e664e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/streams/zipball/d6aaa91cfdbae86355dd2a168a3ca536755898a2", - "reference": "d6aaa91cfdbae86355dd2a168a3ca536755898a2", + "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/8571f349567e02af1b7efc0fc4e3a4a1c98e664e", + "reference": "8571f349567e02af1b7efc0fc4e3a4a1c98e664e", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": ">=5.3.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "~4.1" }, - "time": "2014-07-15 22:02:02", + "time": "2014-07-21 20:15:54", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.3.x-dev" } }, "installation-source": "dist", "autoload": { - "psr-4": { - "GuzzleHttp\\Stream\\": "src/" - }, - "files": [ - "src/functions.php" - ] + "psr-0": { + "org\\bovigo\\vfs\\": "src/main/php" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } + "BSD" ], - "description": "Provides a simple abstraction over streams of data (Guzzle 4+)", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "Guzzle", - "stream" - ] + "homepage": "http://vfs.bovigo.org/" }, { - "name": "guzzlehttp/guzzle", - "version": "4.1.3", - "version_normalized": "4.1.3.0", + "name": "doctrine/cache", + "version": "v1.3.0", + "version_normalized": "1.3.0.0", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "012b2aecbda4e38f119c19580898685851015fa7" + "url": "https://github.com/doctrine/cache.git", + "reference": "e16d7adf45664a50fa86f515b6d5e7f670130449" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/012b2aecbda4e38f119c19580898685851015fa7", - "reference": "012b2aecbda4e38f119c19580898685851015fa7", + "url": "https://api.github.com/repos/doctrine/cache/zipball/e16d7adf45664a50fa86f515b6d5e7f670130449", + "reference": "e16d7adf45664a50fa86f515b6d5e7f670130449", "shasum": "" }, "require": { - "ext-json": "*", - "guzzlehttp/streams": "~1.3", - "php": ">=5.4.0" + "php": ">=5.3.2" }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "~4.0", - "psr/log": "~1.0" + "conflict": { + "doctrine/common": ">2.2,<2.4" }, - "suggest": { - "ext-curl": "Guzzle will use specific adapters if cURL is present" + "require-dev": { + "phpunit/phpunit": ">=3.7", + "satooshi/php-coveralls": "~0.6" }, - "time": "2014-07-16 03:01:02", + "time": "2013-10-25 19:04:14", "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1.x-dev" + "dev-master": "1.0.x-dev" } }, "installation-source": "dist", "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions.php" - ] + "psr-0": { + "Doctrine\\Common\\Cache\\": "lib/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2405,85 +2577,137 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Jonathan Wage", + "email": "jonwage@gmail.com", + "homepage": "http://www.jwage.com/", + "role": "Creator" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com", + "homepage": "http://www.instaclick.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh", + "role": "Developer of wrapped JMSSerializerBundle" } ], - "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients", - "homepage": "http://guzzlephp.org/", + "description": "Caching library offering an object-oriented API for many cache backends", + "homepage": "http://www.doctrine-project.org", "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" + "cache", + "caching" ] }, { - "name": "mikey179/vfsStream", - "version": "v1.2.0", + "name": "doctrine/collections", + "version": "v1.2", "version_normalized": "1.2.0.0", "source": { "type": "git", - "url": "https://github.com/mikey179/vfsStream.git", - "reference": "063fb10633f10c5ccbcac26227e94f46d9336f90" + "url": "https://github.com/doctrine/collections.git", + "reference": "b99c5c46c87126201899afe88ec490a25eedd6a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/063fb10633f10c5ccbcac26227e94f46d9336f90", - "reference": "063fb10633f10c5ccbcac26227e94f46d9336f90", + "url": "https://api.github.com/repos/doctrine/collections/zipball/b99c5c46c87126201899afe88ec490a25eedd6a2", + "reference": "b99c5c46c87126201899afe88ec490a25eedd6a2", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.3.2" }, - "time": "2013-04-01 10:41:02", + "time": "2014-02-03 23:07:43", "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, "installation-source": "dist", "autoload": { "psr-0": { - "org\\bovigo\\vfs\\": "src/main/php" + "Doctrine\\Common\\Collections\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD" + "MIT" ], - "homepage": "http://vfs.bovigo.org/" + "authors": [ + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com", + "homepage": "http://www.jwage.com/", + "role": "Creator" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com", + "homepage": "http://www.instaclick.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh", + "role": "Developer of wrapped JMSSerializerBundle" + } + ], + "description": "Collections Abstraction library", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "array", + "collections", + "iterator" + ] }, { - "name": "symfony/serializer", - "version": "v2.5.2", - "version_normalized": "2.5.2.0", - "target-dir": "Symfony/Component/Serializer", + "name": "willdurand/negotiation", + "version": "1.3.3", + "version_normalized": "1.3.3.0", "source": { "type": "git", - "url": "https://github.com/symfony/Serializer.git", - "reference": "33185b290310ab1fd8283fb8ed2a434cdb88b9b9" + "url": "https://github.com/willdurand/Negotiation.git", + "reference": "a98fb6b9808610c1aa326c736893d3d77d9383b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Serializer/zipball/33185b290310ab1fd8283fb8ed2a434cdb88b9b9", - "reference": "33185b290310ab1fd8283fb8ed2a434cdb88b9b9", + "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/a98fb6b9808610c1aa326c736893d3d77d9383b6", + "reference": "a98fb6b9808610c1aa326c736893d3d77d9383b6", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.0" }, - "time": "2014-07-09 09:05:48", + "time": "2014-05-16 12:34:51", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "1.3-dev" } }, "installation-source": "dist", "autoload": { "psr-0": { - "Symfony\\Component\\Serializer\\": "" + "Negotiation": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2492,17 +2716,19 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "name": "William Durand", + "email": "william.durand1@gmail.com", + "homepage": "http://www.willdurand.fr" } ], - "description": "Symfony Serializer Component", - "homepage": "http://symfony.com" + "description": "Content Negotiation tools for PHP provided as a standalone library.", + "homepage": "http://williamdurand.fr/Negotiation/", + "keywords": [ + "accept", + "content", + "format", + "header", + "negotiation" + ] } ] diff --git a/core/vendor/willdurand/negotiation/.gitignore b/core/vendor/willdurand/negotiation/.gitignore new file mode 100644 index 0000000..57872d0 --- /dev/null +++ b/core/vendor/willdurand/negotiation/.gitignore @@ -0,0 +1 @@ +/vendor/ diff --git a/core/vendor/willdurand/negotiation/.travis.yml b/core/vendor/willdurand/negotiation/.travis.yml new file mode 100644 index 0000000..0253fd1 --- /dev/null +++ b/core/vendor/willdurand/negotiation/.travis.yml @@ -0,0 +1,18 @@ +language: php + +php: + - 5.3 + - 5.4 + - 5.5 + - 5.6 + - hhvm + +matrix: + allow_failures: + - php: hhvm + +before_script: + - composer self-update + - composer install --dev --prefer-dist --no-interaction + +script: phpunit --coverage-text diff --git a/core/vendor/willdurand/negotiation/CONTRIBUTING.md b/core/vendor/willdurand/negotiation/CONTRIBUTING.md new file mode 100644 index 0000000..3677a2c --- /dev/null +++ b/core/vendor/willdurand/negotiation/CONTRIBUTING.md @@ -0,0 +1,33 @@ +Contributing +============ + +First of all, **thank you** for contributing, **you are awesome**! + +Here are a few rules to follow in order to ease code reviews, and discussions before +maintainers accept and merge your work. + +You MUST follow the [PSR-1](http://www.php-fig.org/psr/1/) and +[PSR-2](http://www.php-fig.org/psr/2/). If you don't know about any of them, you +should really read the recommendations. Can't wait? Use the [PHP-CS-Fixer +tool](http://cs.sensiolabs.org/). + +You MUST run the test suite. + +You MUST write (or update) unit tests. + +You SHOULD write documentation. + +Please, write [commit messages that make +sense](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html), +and [rebase your branch](http://git-scm.com/book/en/Git-Branching-Rebasing) +before submitting your Pull Request. + +One may ask you to [squash your +commits](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html) +too. This is used to "clean" your Pull Request before merging it (we don't want +commits such as `fix tests`, `fix 2`, `fix 3`, etc.). + +Also, while creating your Pull Request on GitHub, you MUST write a description +which gives the context and/or explains why you are creating it. + +Thank you! diff --git a/core/vendor/willdurand/negotiation/LICENSE b/core/vendor/willdurand/negotiation/LICENSE new file mode 100644 index 0000000..a27c662 --- /dev/null +++ b/core/vendor/willdurand/negotiation/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2013 William Durand + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/core/vendor/willdurand/negotiation/README.md b/core/vendor/willdurand/negotiation/README.md new file mode 100644 index 0000000..2e78516 --- /dev/null +++ b/core/vendor/willdurand/negotiation/README.md @@ -0,0 +1,162 @@ +Negotiation +=========== + +[![Build Status](https://travis-ci.org/willdurand/Negotiation.png?branch=master)](http://travis-ci.org/willdurand/Negotiation) +[![Total Downloads](https://poser.pugx.org/willdurand/Negotiation/downloads.png)](https://packagist.org/packages/willdurand/Negotiation) +[![Latest Stable Version](https://poser.pugx.org/willdurand/Negotiation/v/stable.png)](https://packagist.org/packages/willdurand/Negotiation) + +**Negotiation** is a standalone library without any dependencies that allows you +to implement [content +negotiation](http://www.w3.org/Protocols/rfc2616/rfc2616-sec12.html) in your +application, whatever framework you use. +This library is based on [RFC +2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html). Negotiation is +easy to use, and extensively unit tested. + + +Installation +------------ + +The recommended way to install Negotiation is through +[Composer](http://getcomposer.org/): + +``` json +{ + "require": { + "willdurand/negotiation": "@stable" + } +} +``` + +**Protip:** you should browse the +[`willdurand/negotiation`](https://packagist.org/packages/willdurand/negotiation) +page to choose a stable version to use, avoid the `@stable` meta constraint. + + +Usage +----- + +In a nutshell: + +``` php +getBest('en; q=0.1, fr; q=0.4, fu; q=0.9, de; q=0.2'); +// $bestHeader = 'fu'; +``` + +The `getBest()` method, part of the `NegotiatorInterface`, returns either `null` +or `AcceptHeader` instances. An `AcceptHeader` object owns a `value` and a +`quality`. + + +### Format Negotiation + +The **Format Negotiation** is handled by the `FormatNegotiator` class. +Basically, pass an `Accept` header and optionally a set of preferred media types +to the `getBest()` method in order to retrieve the best **media type**: + +``` php +getBest($acceptHeader, $priorities); +// $format->getValue() = text/html +``` + +The `FormatNegotiator` class also provides a `getBestFormat()` method that +returns the best format given an `Accept` header string and a set of +preferred/allowed formats or mime types: + +``` php +getBestFormat($acceptHeader, $priorities); +// $format = html +``` + +#### Other Methods + +* `registerFormat($format, array $mimeTypes, $override = false)`: registers a new + format with its mime types; +* `getFormat($mimeType)`: returns the format for a given mime type, or null if +not found; +* `normalizePriorities($priorities)`: ensures that any formats are converted to + mime types. + +### Language Negotiation + +Language negotiation is handled by the `LanguageNegotiator` class: + +``` php +getBest('da, en-gb;q=0.8, en;q=0.7'); +// $language = da +``` + + +### Charset/Encoding Negotiation + +Charset/Encoding negotiation works out of the box using the `Negotiator` class: + +``` php +getBest('ISO-8859-1, Big5;q=0.6,utf-8;q=0.7, *;q=0.5', $priorities); +// $bestHeader = 'utf-8' +``` + + +Unit Tests +---------- + +Setup the test suite using Composer: + + $ composer install --dev + +Run it using PHPUnit: + + $ phpunit + + +Contributing +------------ + +See CONTRIBUTING file. + + +Credits +------- + +* Some parts of this library are inspired by: + + * [Symfony](http://github.com/symfony/symfony) framework; + * [FOSRest](http://github.com/FriendsOfSymfony/FOSRest); + * [PEAR HTTP2](https://github.com/pear/HTTP2). + +* William Durand + + +License +------- + +Negotiation is released under the MIT License. See the bundled LICENSE file for details. diff --git a/core/vendor/willdurand/negotiation/composer.json b/core/vendor/willdurand/negotiation/composer.json new file mode 100644 index 0000000..5490534 --- /dev/null +++ b/core/vendor/willdurand/negotiation/composer.json @@ -0,0 +1,24 @@ +{ + "name": "willdurand/negotiation", + "description": "Content Negotiation tools for PHP provided as a standalone library.", + "keywords": [ "content", "negotiation", "format", "accept", "header" ], + "license": "MIT", + "homepage": "http://williamdurand.fr/Negotiation/", + "authors": [ + { + "name": "William Durand", + "email": "william.durand1@gmail.com" + } + ], + "require": { + "php": ">=5.3.0" + }, + "autoload": { + "psr-0": { "Negotiation": "src/" } + }, + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + } +} diff --git a/core/vendor/willdurand/negotiation/phpunit.xml.dist b/core/vendor/willdurand/negotiation/phpunit.xml.dist new file mode 100644 index 0000000..ac6f0f9 --- /dev/null +++ b/core/vendor/willdurand/negotiation/phpunit.xml.dist @@ -0,0 +1,23 @@ + + + + + ./tests/ + + + + + ./src/Negotiation/ + + + diff --git a/core/vendor/willdurand/negotiation/src/Negotiation/AcceptHeader.php b/core/vendor/willdurand/negotiation/src/Negotiation/AcceptHeader.php new file mode 100644 index 0000000..b05e391 --- /dev/null +++ b/core/vendor/willdurand/negotiation/src/Negotiation/AcceptHeader.php @@ -0,0 +1,89 @@ + + */ +class AcceptHeader +{ + /** + * @var string + */ + private $value; + + /** + * @var float + */ + private $quality; + + /** + * @var array + */ + private $parameters; + + /** + * @param string $value + * @param float $quality + * @param array $parameters + */ + public function __construct($value, $quality, array $parameters = array()) + { + $this->value = $value; + $this->quality = $quality; + $this->parameters = $parameters; + } + + /** + @return string + */ + public function getValue() + { + return $this->value; + } + + /** + * @return float + */ + public function getQuality() + { + return $this->quality; + } + + /** + * @return array + */ + public function getParameters() + { + return $this->parameters; + } + + /** + * @param string $key + * @param mixed $default + * + * @return string|null + */ + public function getParameter($key, $default = null) + { + return $this->hasParameter($key) ? $this->parameters[$key] : $default; + } + + /** + * @param string $key + * + * @return boolean + */ + public function hasParameter($key) + { + return isset($this->parameters[$key]); + } + + /** + * @return boolean + */ + public function isMediaRange() + { + return false !== strpos($this->value, '*'); + } +} diff --git a/core/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiator.php b/core/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiator.php new file mode 100644 index 0000000..4fc68ae --- /dev/null +++ b/core/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiator.php @@ -0,0 +1,184 @@ + + */ +class FormatNegotiator extends Negotiator implements FormatNegotiatorInterface +{ + // https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/Request.php + protected $formats = array( + 'html' => array('text/html', 'application/xhtml+xml'), + 'txt' => array('text/plain'), + 'js' => array('application/javascript', 'application/x-javascript', 'text/javascript'), + 'css' => array('text/css'), + 'json' => array('application/json', 'application/x-json'), + 'xml' => array('text/xml', 'application/xml', 'application/x-xml'), + 'rdf' => array('application/rdf+xml'), + 'atom' => array('application/atom+xml'), + 'rss' => array('application/rss+xml'), + ); + + /** + * {@inheritDoc} + */ + public function getBest($header, array $priorities = array()) + { + $acceptHeaders = $this->parseHeader($header); + $priorities = $this->sanitize($priorities); + $catchAllEnabled = $this->isCatchAllEnabled($priorities); + $catchAllHeader = null; + + foreach ($acceptHeaders as $accept) { + $mimeType = $accept->getValue(); + + if (self::CATCH_ALL_VALUE === $mimeType) { + $catchAllHeader = $accept; + } + + if ('/*' !== substr($mimeType, -2)) { + if (in_array($mimeType, $priorities)) { + return $accept; + } + + $regex = '#^' . preg_quote($mimeType) . '#'; + + foreach ($priorities as $priority) { + if (self::CATCH_ALL_VALUE !== $priority && 1 === preg_match($regex, $priority)) { + return new AcceptHeader($priority, $accept->getQuality(), $this->parseParameters($priority)); + } + } + + continue; + } + + if (false === $catchAllEnabled && + self::CATCH_ALL_VALUE === $mimeType && + self::CATCH_ALL_VALUE !== $value = array_shift($priorities) + ) { + return new AcceptHeader($value, $accept->getQuality(), $this->parseParameters($value)); + } + + if (false === $pos = strpos($mimeType, ';')) { + $pos = strpos($mimeType, '/'); + } + + $regex = '#^' . preg_quote(substr($mimeType, 0, $pos)) . '/#'; + + foreach ($priorities as $priority) { + if (self::CATCH_ALL_VALUE !== $priority && 1 === preg_match($regex, $priority)) { + return new AcceptHeader($priority, $accept->getQuality(), $this->parseParameters($priority)); + } + } + } + + // if client sends `*/*` in Accept header, and nothing has been negotiated before + // then, return the first priority value if available + if (null !== $catchAllHeader) { + $value = array_shift($priorities); + + if (null !== $value && self::CATCH_ALL_VALUE !== $value) { + return new AcceptHeader( + $value, + $catchAllHeader->getQuality(), + $this->parseParameters($catchAllHeader->getValue()) + ); + } + } + + // if `$priorities` is empty or contains a catch-all mime type + if ($catchAllEnabled) { + return array_shift($acceptHeaders) ?: null; + } + + return null; + } + + /** + * {@inheritDoc} + */ + public function getBestFormat($acceptHeader, array $priorities = array()) + { + $mimeTypes = $this->normalizePriorities($priorities); + + if (null !== $accept = $this->getBest($acceptHeader, $mimeTypes)) { + if (0.0 < $accept->getQuality() && + null !== $format = $this->getFormat($accept->getValue()) + ) { + if (in_array($format, $priorities) || $this->isCatchAllEnabled($priorities)) { + return $format; + } + } + } + + return null; + } + + /** + * {@inheritDoc} + */ + public function registerFormat($format, array $mimeTypes, $override = false) + { + if (isset($this->formats[$format]) && false === $override) { + throw new \InvalidArgumentException(sprintf( + 'Format "%s" already registered, and override was set to "false".', + $format + )); + } + + $this->formats[$format] = $mimeTypes; + } + + /** + * {@inheritDoc} + */ + public function getFormat($mimeType) + { + if (false !== $pos = strpos($mimeType, ';')) { + $mimeType = substr($mimeType, 0, $pos); + } + + foreach ($this->formats as $format => $mimeTypes) { + if (in_array($mimeType, (array) $mimeTypes)) { + return $format; + } + } + + return null; + } + + /** + * {@inheritDoc} + */ + public function normalizePriorities($priorities) + { + $priorities = $this->sanitize($priorities); + + $mimeTypes = array(); + foreach ($priorities as $priority) { + if (strpos($priority, '/')) { + $mimeTypes[] = $priority; + continue; + } + + if (isset($this->formats[$priority])) { + foreach ($this->formats[$priority] as $mimeType) { + $mimeTypes[] = $mimeType; + } + } + } + + return $mimeTypes; + } + + /** + * @param array $priorities + * + * @return boolean + */ + private function isCatchAllEnabled(array $priorities) + { + return 0 === count($priorities) || in_array(self::CATCH_ALL_VALUE, $priorities); + } +} diff --git a/core/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiatorInterface.php b/core/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiatorInterface.php new file mode 100644 index 0000000..05a6dd2 --- /dev/null +++ b/core/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiatorInterface.php @@ -0,0 +1,51 @@ + + */ +interface FormatNegotiatorInterface extends NegotiatorInterface +{ + /** + * Return the best format (as a string) based on a given `Accept` header, + * and a set of priorities. Priorities are "formats" such as `json`, `xml`, + * etc. or "mime types" such as `application/json`, `application/xml`, etc. + * + * @param string $acceptHeader A string containing an `Accept` header. + * @param array $priorities A set of priorities. + * + * @return string + */ + public function getBestFormat($acceptHeader, array $priorities = array()); + + /** + * Register a new format with its mime types. + * + * @param string $format + * @param array $mimeTypes + * @param boolean $override + * + * @return void + */ + public function registerFormat($format, array $mimeTypes, $override = false); + + /** + * Return the format for a given mime type, or null + * if not found. + * + * @param string $mimeType + * + * @return string|null + */ + public function getFormat($mimeType); + + /** + * Ensure that any formats are converted to mime types. + * + * @param array $priorities + * + * @return array + */ + public function normalizePriorities($priorities); +} diff --git a/core/vendor/willdurand/negotiation/src/Negotiation/LanguageNegotiator.php b/core/vendor/willdurand/negotiation/src/Negotiation/LanguageNegotiator.php new file mode 100644 index 0000000..bd3e53d --- /dev/null +++ b/core/vendor/willdurand/negotiation/src/Negotiation/LanguageNegotiator.php @@ -0,0 +1,79 @@ + + */ +class LanguageNegotiator extends Negotiator +{ + /** + * {@inheritDoc} + */ + protected function parseHeader($header) + { + $acceptHeaders = array(); + + $header = preg_replace('/\s+/', '', $header); + $acceptParts = array(); + + preg_match_all( + '/(?<=[, ]|^)([a-zA-Z-]+|\*)(?:;q=([0-9.]+))?(?:$|\s*,\s*)/i', + $header, + $acceptParts, + PREG_SET_ORDER + ); + + $index = 0; + $catchAll = null; + foreach ($acceptParts as $acceptPart) { + $value = $acceptPart[1]; + $quality = isset($acceptPart[2]) ? (float) $acceptPart[2] : 1.0; + + if ('*' === $value) { + $catchAll = new AcceptHeader($value, $quality); + } else { + $acceptHeaders[] = array( + 'item' => new AcceptHeader($value, $quality), + 'index' => $index + ); + } + + $index++; + } + + return $this->sortAcceptHeaders($acceptHeaders, $catchAll); + } + + /** + * {@inheritDoc} + */ + protected function match(array $acceptHeaders, array $priorities = array()) + { + $wildcardAccept = null; + + $prioritiesSet = array(); + $prioritiesSet[] = $priorities; + $prioritiesSet[] = array_map(function ($priority) { + return strtok($priority, '-'); + }, $priorities); + + foreach ($acceptHeaders as $accept) { + foreach ($prioritiesSet as $availablePriorities) { + $sanitizedPriorities = $this->sanitize($availablePriorities); + + if (false !== $found = array_search(strtolower($accept->getValue()), $sanitizedPriorities)) { + return $priorities[$found]; + } + + if ('*' === $accept->getValue()) { + $wildcardAccept = $accept; + } + } + } + + if (null !== $wildcardAccept) { + return reset($priorities); + } + } +} diff --git a/core/vendor/willdurand/negotiation/src/Negotiation/Negotiator.php b/core/vendor/willdurand/negotiation/src/Negotiation/Negotiator.php new file mode 100644 index 0000000..0d01c2e --- /dev/null +++ b/core/vendor/willdurand/negotiation/src/Negotiation/Negotiator.php @@ -0,0 +1,186 @@ + + */ +class Negotiator implements NegotiatorInterface +{ + const CATCH_ALL_VALUE = '*/*'; + + /** + * {@inheritDoc} + */ + public function getBest($header, array $priorities = array()) + { + $acceptHeaders = $this->parseHeader($header); + $best = reset($acceptHeaders); + + if (0 === count($acceptHeaders)) { + return null; + } + + if (0 !== count($priorities)) { + $value = $this->match($acceptHeaders, $priorities); + + if (!empty($value)) { + $best = new AcceptHeader($value, 1.0, $this->parseParameters($value)); + } + } + + return $best; + } + + /** + * @param string $header A string that contains an `Accept|Accept-*` header. + * + * @return array[AcceptHeader] + */ + protected function parseHeader($header) + { + $acceptHeaders = array(); + + $header = preg_replace('/\s+/', '', $header); + $acceptParts = preg_split('/\s*(?:,*("[^"]+"),*|,*(\'[^\']+\'),*|,+)\s*/', + $header, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE + ); + + $index = 0; + $catchAll = null; + foreach ($acceptParts as $acceptPart) { + $quality = 1.0; + $parts = preg_split('/;\s*q=/i', $acceptPart, 0, PREG_SPLIT_NO_EMPTY); + $parameters = $this->parseParameters($acceptPart); + + if (2 === count($parts)) { + $value = $parts[0]; + $quality = (float) $parts[1]; + } else { + $value = $acceptPart; + + if (self::CATCH_ALL_VALUE === $value) { + $quality = 0.01; + } elseif ('*' === substr($value, -1)) { + $quality = 0.02; + } + } + + if (self::CATCH_ALL_VALUE === $value) { + $catchAll = new AcceptHeader($value, $quality, $parameters); + } else { + $acceptHeaders[] = array( + 'item' => new AcceptHeader($value, $quality, $parameters), + 'index' => $index + ); + } + + $index++; + } + + return $this->sortAcceptHeaders($acceptHeaders, $catchAll); + } + + /** + * @param array $acceptHeaders A set of AcceptHeader objects to sort. + * @param AcceptHeader $catchAll A special AcceptHeader that represents the "catch all". + * + * @return array[AcceptHeader] + */ + protected function sortAcceptHeaders(array $acceptHeaders, AcceptHeader $catchAll = null) + { + uasort($acceptHeaders, function ($a, $b) { + $qA = $a['item']->getQuality(); + $qB = $b['item']->getQuality(); + + $vA = $a['item']->getValue(); + $vB = $b['item']->getValue(); + + // put specific media type before the classic one + // e.g. `text/html;level=1` first, then `text/html` + if (strstr($vA, $vB)) { + return -1; + } + + if ($qA === $qB) { + return $a['index'] > $b['index'] ? 1 : -1; + } + + return $qA > $qB ? -1 : 1; + }); + + // put the catch all header at the end if available + if (null !== $catchAll) { + array_push($acceptHeaders, array('item' => $catchAll)); + } + + return array_map(function ($accept) { + return $accept['item']; + }, array_values($acceptHeaders)); + } + + /** + * @param array $values + * + * @return array + */ + protected function sanitize(array $values) + { + return array_map(function ($value) { + return preg_replace('/\s+/', '', strtolower($value)); + }, $values); + } + + /** + * @param string $value + * + * @return array + */ + protected function parseParameters($value) + { + $parts = explode(';', preg_replace('/\s+/', '', $value)); + array_shift($parts); + + $parameters = array(); + foreach ($parts as $part) { + $part = explode('=', $part); + + if (2 !== count($part)) { + continue; + } + + if ('q' !== $key = strtolower($part[0])) { + $parameters[$key] = $part[1]; + } + } + + return $parameters; + } + + /** + * @param AcceptHeader[] $acceptHeaders Sorted by quality + * @param array $priorities Configured priorities + * + * @return string|null Header string matched + */ + protected function match(array $acceptHeaders, array $priorities = array()) + { + $sanitizedPriorities = $this->sanitize($priorities); + + foreach ($acceptHeaders as $accept) { + if (false !== $found = array_search(strtolower($accept->getValue()), $sanitizedPriorities)) { + return $priorities[$found]; + } + + if ('*' === $accept->getValue()) { + $wildcardAccept = $accept; + } + } + + if (null !== $wildcardAccept) { + return reset($priorities); + } + + return null; + } +} diff --git a/core/vendor/willdurand/negotiation/src/Negotiation/NegotiatorInterface.php b/core/vendor/willdurand/negotiation/src/Negotiation/NegotiatorInterface.php new file mode 100644 index 0000000..bee4fef --- /dev/null +++ b/core/vendor/willdurand/negotiation/src/Negotiation/NegotiatorInterface.php @@ -0,0 +1,17 @@ + + */ +interface NegotiatorInterface +{ + /** + * @param string $header A string containing an `Accept|Accept-*` header. + * @param array $priorities A set of priorities. + * + * @return AcceptHeader + */ + public function getBest($header, array $priorities = array()); +} diff --git a/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/AcceptHeaderTest.php b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/AcceptHeaderTest.php new file mode 100644 index 0000000..be7035b --- /dev/null +++ b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/AcceptHeaderTest.php @@ -0,0 +1,46 @@ +acceptHeader = new AcceptHeader('foo', 1.0, array( + 'hello' => 'world', + )); + } + + public function testGetParameter() + { + $this->assertTrue($this->acceptHeader->hasParameter('hello')); + $this->assertEquals('world', $this->acceptHeader->getParameter('hello')); + + $this->assertFalse($this->acceptHeader->hasParameter('unknown')); + $this->assertNull($this->acceptHeader->getParameter('unknown')); + $this->assertFalse($this->acceptHeader->getParameter('unknown', false)); + } + + /** + * @dataProvider dataProviderForTestIsMediaRange + */ + public function testIsMediaRange($value, $expected) + { + $header = new AcceptHeader($value, 1.0); + + $this->assertEquals($expected, $header->isMediaRange()); + } + + public static function dataProviderForTestIsMediaRange() + { + return array( + array('text/*', true), + array('*/*', true), + array('application/json', false), + ); + } +} diff --git a/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/FormatNegotiatorTest.php b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/FormatNegotiatorTest.php new file mode 100644 index 0000000..d637588 --- /dev/null +++ b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/FormatNegotiatorTest.php @@ -0,0 +1,363 @@ + + */ +class FormatNegotiatorTest extends TestCase +{ + private $negotiator; + + protected function setUp() + { + $this->negotiator = new FormatNegotiator(); + } + + /** + * @dataProvider dataProviderForGetBest + */ + public function testGetBest($acceptHeader, $priorities, $expected) + { + $acceptHeader = $this->negotiator->getBest($acceptHeader, $priorities); + + if (null === $expected) { + $this->assertNull($acceptHeader); + } else { + $this->assertNotNull($acceptHeader); + if (is_array($expected)) { + $this->assertEquals($expected['value'], $acceptHeader->getValue()); + $this->assertEquals($expected['quality'], $acceptHeader->getQuality()); + + if (isset($expected['parameters'])) { + foreach ($expected['parameters'] as $key => $value) { + $this->assertTrue($acceptHeader->hasParameter($key)); + $this->assertEquals($value, $acceptHeader->getParameter($key)); + } + + $this->assertCount(count($expected['parameters']), $acceptHeader->getParameters()); + } + } else { + $this->assertEquals($expected, $acceptHeader->getValue()); + } + } + } + + /** + * @dataProvider dataProviderForGetBestFormat + */ + public function testGetBestFormat($acceptHeader, $priorities, $expected) + { + $bestFormat = $this->negotiator->getBestFormat($acceptHeader, $priorities); + + $this->assertEquals($expected, $bestFormat); + } + + public static function dataProviderForGetBest() + { + $pearAcceptHeader = 'text/html,application/xhtml+xml,application/xml;q=0.9,text/*;q=0.7,*/*,image/gif; q=0.8, image/jpeg; q=0.6, image/*'; + + return array( + // PEAR HTTP2 tests + array( + $pearAcceptHeader, + array( + 'image/gif', + 'image/png', + 'application/xhtml+xml', + 'application/xml', + 'text/html', + 'image/jpeg', + 'text/plain', + ), + 'text/html' + ), + array( + $pearAcceptHeader, + array( + 'image/gif', + 'image/png', + 'application/xhtml+xml', + 'application/xml', + 'image/jpeg', + 'text/plain', + ), + 'application/xhtml+xml' + ), + array( + $pearAcceptHeader, + array( + 'image/gif', + 'image/png', + 'application/xml', + 'image/jpeg', + 'text/plain', + ), + 'application/xml' + ), + array( + $pearAcceptHeader, + array( + 'image/gif', + 'image/png', + 'image/jpeg', + 'text/plain', + ), + 'image/gif' + ), + array( + $pearAcceptHeader, + array( + 'image/png', + 'image/jpeg', + 'text/plain', + ), + 'text/plain' + ), + array( + $pearAcceptHeader, + array( + 'image/png', + 'image/jpeg', + ), + 'image/jpeg' + ), + array( + $pearAcceptHeader, + array( + 'image/png', + ), + 'image/png' + ), + array( + $pearAcceptHeader, + array( + 'audio/midi', + ), + 'audio/midi' + ), + array( + 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', + array( + 'application/rss+xml', + '*/*', + ), + 'application/rss+xml' + ), + // See: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html + array( + 'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', + array(), + array( + 'value' => 'text/html;level=1', + 'quality' => 1, + ) + ), + array( + 'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', + array( + 'text/html' + ), + array( + 'value' => 'text/html', + 'quality' => 0.7, + ) + ), + array( + 'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', + array( + 'text/plain' + ), + array( + 'value' => 'text/plain', + 'quality' => 0.3, + ) + ), + array( + 'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', + array( + 'image/jpeg', + ), + array( + 'value' => 'image/jpeg', + 'quality' => 0.5, + ) + ), + array( + 'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', + array( + 'text/html;level=2' + ), + array( + 'value' => 'text/html;level=2', + 'quality' => 0.4, + ) + ), + array( + 'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', + array( + 'text/html;level=3' + ), + array( + 'value' => 'text/html;level=3', + 'quality' => 0.7, + 'parameters' => array( + 'level' => 3, + ), + ) + ), + // LWS / case sensitivity + array( + 'text/* ; q=0.3, text/html ;Q=0.7, text/html ; level=1, text/html ;level = 2 ;q=0.4, */* ; q=0.5', + array( + 'text/html; level=2' + ), + array( + 'value' => 'text/html;level=2', + 'quality' => 0.4, + 'parameters' => array( + 'level' => 2, + ), + ) + ), + array( + 'text/* ; q=0.3, text/html;Q=0.7, text/html ;level=1, text/html; level=2;q=0.4, */*;q=0.5', + array( + 'text/html; level=3' + ), + array( + 'value' => 'text/html;level=3', + 'quality' => 0.7, + 'parameters' => array( + 'level' => 3, + ), + ) + ), + array( + '*/*', + array(), + array( + 'value' => '*/*', + 'quality' => 0.01, + 'parameters' => array(), + ), + ), + // Incompatible + array( + 'text/html', + array( + 'application/rss' + ), + null + ), + array( + 'text/rdf+n3; q=0.8, application/rdf+json; q=0.8, text/turtle; q=1.0, text/n3; q=0.8, application/ld+json; q=0.5, application/rdf+xml; q=0.8', + array(), + 'text/turtle' + ), + array( + 'application/rdf+xml;q=0.5,text/html;q=.3', + array(), + 'application/rdf+xml' + ), + array( + 'application/xhtml+xml;q=0.5', + array(), + 'application/xhtml+xml' + ), + array( + 'application/rdf+xml;q=0.5,text/html;q=.5', + array(), + 'application/rdf+xml' + ), + array( + 'text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c', + array(), + 'text/html', + ), + // IE8 Accept header + array( + 'image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, */*', + array( + 'text/html', + 'application/xhtml+xml', + '*/*' + ), + 'text/html', + ), + ); + } + + public static function dataProviderForGetBestFormat() + { + return array( + array(null, array('html', 'json', '*/*'), null), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array(), 'html'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('html', 'json', '*/*'), 'html'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('html', 'json', '*/*'), 'html'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('rss', '*/*'), 'rss'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('xml'), 'xml'), + // This shows clearly that the acceptheader is leading over server priorities + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('xml', 'html'), 'html'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('json', 'xml'), 'xml'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('json'), 'json'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*', array('json'), 'json'), + array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*', array('json'), 'json'), + array('text/html,application/xhtml+xml,application/xml', array('json'), null), + array('text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c', array('*/*'), 'html'), + array('text/html, application/json;q=0.8, text/csv;q=0.7', array(), 'html'), + array('text/html', array('text/xml'), null), + array('text/*, text/html, text/html;level=1, */*', array(), 'html'), + array('text/html; q=0.0', array(), null), + ); + } + + public function testGetFormat() + { + $this->assertEquals('html', $this->negotiator->getFormat('application/xhtml+xml')); + } + + public function testGetFormatReturnsNullIfNotFound() + { + $this->assertNull($this->negotiator->getFormat('foo')); + } + + public function testRegisterFormat() + { + $format = 'foo'; + $mimeType = 'foo/bar'; + + $this->negotiator->registerFormat($format, array($mimeType)); + $this->assertEquals($format, $this->negotiator->getFormat($mimeType)); + } + + /** + * @expectedException InvalidArgumentException + * @expectedExceptionMessage Format "html" already registered, and override was set to "false". + */ + public function testRegisterFormatWithExistingFormat() + { + $this->negotiator->registerFormat('html', array()); + } + + /** + * @dataProvider dataProviderForNormalizePriorities + */ + public function testNormalizePriorities($priorities, $expected) + { + $priorities = $this->negotiator->normalizePriorities($priorities); + + $this->assertEquals($expected, $priorities); + } + + public static function dataProviderForNormalizePriorities() + { + return array( + array(array('application/json', 'application/xml'), array('application/json', 'application/xml')), + array(array('json', 'application/xml', 'text/*', 'rdf', '*/*'), array('application/json', 'application/x-json', 'application/xml', 'text/*', 'application/rdf+xml', '*/*')), + array(array('json', 'html', '*/*'), array('application/json', 'application/x-json', 'text/html', 'application/xhtml+xml', '*/*')), + ); + } +} diff --git a/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/LanguageNegotiatorTest.php b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/LanguageNegotiatorTest.php new file mode 100644 index 0000000..3a4efb8 --- /dev/null +++ b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/LanguageNegotiatorTest.php @@ -0,0 +1,110 @@ +negotiator = new LanguageNegotiator(); + } + + /** + * 'fu' has a quality rating of 0.9 which is higher than the rest + * we expect Negotiator to return the 'fu' content. + * + * See: http://svn.apache.org/repos/asf/httpd/test/framework/trunk/t/modules/negotiation.t + */ + public function testGetBestUsesQuality() + { + $acceptLanguageHeader = 'en; q=0.1, fr; q=0.4, fu; q=0.9, de; q=0.2'; + $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('fu', $acceptHeader->getValue()); + } + + /** + * 'bu' has the highest quality rating, but is non-existent, + * so we expect the next highest rated 'fr' content to be returned. + * + * See: http://svn.apache.org/repos/asf/httpd/test/framework/trunk/t/modules/negotiation.t + */ + public function testGetBestIgnoresNonExistentContent() + { + $acceptLanguageHeader = 'en; q=0.1, fr; q=0.4, bu; q=1.0'; + $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader, array('en', 'fr')); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('fr', $acceptHeader->getValue()); + } + + /** + * @dataProvider dataProviderForGetBest + */ + public function testGetBest($acceptLanguageHeader, $expected) + { + $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader); + + if (null === $expected) { + $this->assertNull($acceptHeader); + } else { + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals($expected, $acceptHeader->getValue()); + } + } + + /** + * Given a accept header containing a generic language (here 'en') + * And priorities containing a localized version of that language + * Then the best language is mapped to 'en' + */ + public function testGenericLanguageAreMappedToSpecific() + { + $acceptLanguageHeader = 'fr-FR, en;q=0.8'; + $priorities = array('en-US', 'de-DE'); + + $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader, $priorities); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('en-US', $acceptHeader->getValue()); + } + + public function testGetBestWithWildcard() + { + $acceptLanguageHeader = 'en, *;q=0.9'; + $priorities = array('fr'); + + $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader, $priorities); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('fr', $acceptHeader->getValue()); + } + + public function testGetBestDoesNotMatchPriorities() + { + $acceptLanguageHeader = 'en, de'; + $priorities = array('fr'); + + $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader, $priorities); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('en', $acceptHeader->getValue()); + } + + public static function dataProviderForGetBest() + { + return array( + array('da, en-gb;q=0.8, en;q=0.7', 'da'), + array('da, en-gb;q=0.8, en;q=0.7, *', 'da'), + array('es-ES;q=0.7, es; q=0.6 ,fr; q=1.0, en; q=0.5,dk , fr-CH', 'fr-CH'), + array('fr-FR,fr;q=0.1,en-US;q=0.6,en;q=0.4', 'fr-FR'), + array('', null), + array(null, null), + ); + } +} diff --git a/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/NegotiatorTest.php b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/NegotiatorTest.php new file mode 100644 index 0000000..514e337 --- /dev/null +++ b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/NegotiatorTest.php @@ -0,0 +1,325 @@ + + */ +class NegotiatorTest extends TestCase +{ + private $negotiator; + + protected function setUp() + { + $this->negotiator = new Negotiator(); + } + + public function testGetBestReturnsNullWithNullHeader() + { + $this->assertNull($this->negotiator->getBest(null)); + } + + public function testGetBestReturnsNullWithEmptyHeader() + { + $this->assertNull($this->negotiator->getBest('')); + } + + public function testGetBestRespectsPriorities() + { + $acceptHeader = $this->negotiator->getBest('foo, bar, yo', array('yo')); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('yo', $acceptHeader->getValue()); + } + + public function testGetBestInCaseInsensitive() + { + $acceptHeader = $this->negotiator->getBest('foo, bar, yo', array('YO')); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('YO', $acceptHeader->getValue()); + } + + public function testGetBestWithQualities() + { + $acceptHeader = $this->negotiator->getBest('foo;q=0.1, bar, yo;q=0.9'); + + $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader); + $this->assertEquals('bar', $acceptHeader->getValue()); + $this->assertFalse($acceptHeader->hasParameter('q')); + } + + /** + * @dataProvider dataProviderForTestGetBest + */ + public function testGetBest($acceptHeader, $priorities, $expected, $parameters = array()) + { + $acceptHeader = $this->negotiator->getBest($acceptHeader, $priorities); + + if (null === $expected) { + $this->assertNull($acceptHeader); + } else { + $this->assertEquals($expected, $acceptHeader->getValue()); + + foreach ($parameters as $k => $v) { + $this->assertEquals($v, $acceptHeader->getParameter($k)); + } + } + } + + /** + * @dataProvider dataProviderForTestParseAcceptHeader + */ + public function testParseAcceptHeader($header, $expected) + { + $negotiator = new TestableNegotiator(); + $accepts = $negotiator->parseHeader($header); + + $this->assertCount(count($expected), $accepts); + $this->assertEquals($expected, array_map(function ($result) { + return $result->getValue(); + }, $accepts)); + } + + /** + * @dataProvider dataProviderForTestParseAcceptHeaderWithQualities + */ + public function testParseAcceptHeaderWithQualities($header, $expected) + { + $negotiator = new TestableNegotiator(); + $accepts = $negotiator->parseHeader($header); + + $this->assertEquals(count($expected), count($accepts)); + + $i = 0; + foreach ($expected as $value => $quality) { + $this->assertEquals($value, $accepts[$i]->getValue()); + $this->assertEquals($quality, $accepts[$i]->getQuality()); + $i++; + } + } + + /** + * @dataProvider dataProviderForTestParseAcceptHeaderEnsuresPrecedence + */ + public function testParseAcceptHeaderEnsuresPrecedence($header, $expected) + { + $negotiator = new TestableNegotiator(); + $accepts = $negotiator->parseHeader($header); + + $this->assertCount(count($expected), $accepts); + + $i = 0; + foreach ($expected as $value => $quality) { + $this->assertEquals($value, $accepts[$i]->getValue()); + $this->assertEquals($quality, $accepts[$i]->getQuality()); + + $i++; + } + } + + /** + * @dataProvider dataProviderForParseParameters + */ + public function testParseParameters($value, $expected) + { + $negotiator = new TestableNegotiator(); + $parameters = $negotiator->parseParameters($value); + + $this->assertCount(count($expected), $parameters); + + foreach ($expected as $key => $value) { + $this->assertArrayHasKey($key, $parameters); + $this->assertEquals($value, $parameters[$key]); + } + } + + public static function dataProviderForTestParseAcceptHeader() + { + return array( + array('gzip,deflate,sdch', array('gzip', 'deflate', 'sdch')), + array("gzip, deflate\t,sdch", array('gzip', 'deflate', 'sdch')), + array('"this;should,not=matter"', array('"this;should,not=matter"')), + array('*;q=0.3,ISO-8859-1,utf-8;q=0.7', array('ISO-8859-1', 'utf-8', '*')), + array('*;q=0.3,ISO-8859-1;q=0.7,utf-8;q=0.7', array('ISO-8859-1', 'utf-8', '*')), + array('*;q=0.3,utf-8;q=0.7,ISO-8859-1;q=0.7', array('utf-8', 'ISO-8859-1', '*')), + ); + } + + public static function dataProviderForTestParseAcceptHeaderWithQualities() + { + return array( + array('text/html;q=0.8', array('text/html' => 0.8)), + array('text/html;foo=bar;q=0.8 ', array('text/html;foo=bar' => 0.8)), + array('text/html;charset=utf-8; q=0.8', array('text/html;charset=utf-8' => 0.8)), + array('text/html,application/xml;q=0.9,*/*;charset=utf-8; q=0.8', array('text/html' => 1.0, 'application/xml' => 0.9, '*/*;charset=utf-8' => 0.8)), + array('text/html,application/xhtml+xml', array('text/html' => 1, 'application/xhtml+xml' => 1)), + array('text/html, application/json;q=0.8, text/csv;q=0.7', array('text/html' => 1, 'application/json' => 0.8, 'text/csv' => 0.7)), + array('iso-8859-5, unicode-1-1;q=0.8', array('iso-8859-5' => 1, 'unicode-1-1' => 0.8)), + array('gzip;q=1.0, identity; q=0.5, *;q=0', array('gzip' => 1, 'identity' => 0.5, '*' => 0)), + ); + } + + public static function dataProviderForTestGetBest() + { + $pearCharsetHeader = 'ISO-8859-1, Big5;q=0.6,utf-8;q=0.7, *;q=0.5'; + $pearCharsetHeader2 = 'ISO-8859-1, Big5;q=0.6,utf-8;q=0.7'; + + return array( + array( + $pearCharsetHeader, + array( + 'utf-8', + 'big5', + 'iso-8859-1', + 'shift-jis', + ), + 'iso-8859-1' + ), + array( + $pearCharsetHeader, + array( + 'utf-8', + 'big5', + 'shift-jis', + ), + 'utf-8' + ), + array( + $pearCharsetHeader, + array( + 'Big5', + 'shift-jis', + ), + 'Big5' + ), + array( + $pearCharsetHeader, + array( + 'shift-jis', + ), + 'shift-jis' + ), + array( + $pearCharsetHeader2, + array( + 'utf-8', + 'big5', + 'iso-8859-1', + 'shift-jis', + ), + 'iso-8859-1' + ), + array( + $pearCharsetHeader2, + array( + 'utf-8', + 'big5', + 'shift-jis', + ), + 'utf-8' + ), + array( + $pearCharsetHeader2, + array( + 'Big5', + 'shift-jis', + ), + 'Big5' + ), + array( + 'utf-8;q=0.6,iso-8859-5;q=0.9', + array( + 'iso-8859-5', + 'utf-8', + ), + 'iso-8859-5' + ), + array( + '', + array( + 'iso-8859-5', + 'utf-8', + ), + null + ), + array( + 'audio/*; q=0.2, audio/basic', + array(), + 'audio/basic', + ), + ); + } + + public static function dataProviderForTestParseAcceptHeaderEnsuresPrecedence() + { + return array( + array( + 'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5', + array( + 'text/html;level=1' => 1, + 'text/html;level=2' => 0.4, + 'text/html' => 0.7, + 'text/*' => 0.3, + '*/*' => 0.5, + ) + ), + array( + 'text/html,application/xhtml+xml,application/xml;q=0.9,text/*;q=0.7,*/*,image/gif; q=0.8, image/jpeg; q=0.6, image/*', + array( + 'text/html' => 1, + 'application/xhtml+xml' => 1, + 'application/xml' => 0.9, + 'image/gif' => 0.8, + 'text/*' => 0.7, + 'image/jpeg' => 0.6, + 'image/*' => 0.02, + '*/*' => 0.01, + ) + ), + ); + } + + public static function dataProviderForParseParameters() + { + return array( + array( + 'application/json ;q=1.0; level=2;foo= bar', + array( + 'level' => 2, + 'foo' => 'bar', + ), + ), + array( + 'application/json ;q = 1.0; level = 2; FOO = bAr', + array( + 'level' => 2, + 'foo' => 'bAr', + ), + ), + array( + 'application/json;q=1.0', + array(), + ), + array( + 'application/json;foo', + array(), + ), + ); + } +} + +class TestableNegotiator extends Negotiator +{ + public function parseHeader($acceptHeader) + { + return parent::parseHeader($acceptHeader); + } + + public function parseParameters($value) + { + return parent::parseParameters($value); + } +} diff --git a/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/TestCase.php b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/TestCase.php new file mode 100644 index 0000000..df8e032 --- /dev/null +++ b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/TestCase.php @@ -0,0 +1,10 @@ + + */ +class TestCase extends \PHPUnit_Framework_TestCase +{ +} diff --git a/core/vendor/willdurand/negotiation/tests/bootstrap.php b/core/vendor/willdurand/negotiation/tests/bootstrap.php new file mode 100644 index 0000000..c63e17a --- /dev/null +++ b/core/vendor/willdurand/negotiation/tests/bootstrap.php @@ -0,0 +1,15 @@ +add('Negotiation\Tests', __DIR__);