diff --git a/.scrutinizer.yml b/.scrutinizer.yml
new file mode 100644
index 0000000..574066d
--- /dev/null
+++ b/.scrutinizer.yml
@@ -0,0 +1,31 @@
+filter:
+ excluded_paths:
+ - 'vendor/*'
+ - 'app/*'
+ - 'web/*'
+before_commands:
+ - 'composer install --dev'
+application:
+ dependencies:
+ before:
+ - php app/console cache:warmup
+tools:
+ external_code_coverage: true
+ php_mess_detector: true
+ php_pdepend: true
+ php_analyzer:
+ config:
+ metrics_coupling:
+ enabled: true
+ metrics_lack_of_cohesion_methods:
+ enabled: true
+ phpunit_checks:
+ enabled: true
+ doctrine_entity_manager_injection:
+ enabled: true
+ checkstyle:
+ enabled: true
+ php_code_sniffer:
+ config:
+ php_sim: true
+ php_cpd: false
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..55a2eaa
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,38 @@
+language: php
+sudo: false
+before_script:
+- free -m
+- >
+ if [ "$PHPUNIT_SUITE" != "unit" ]; then
+ phpenv config-rm xdebug.ini
+ fi
+- echo "memory_limit=2G" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini;
+- composer install --no-interaction --ignore-platform-reqs --no-scripts --profile
+- >
+ if [ "$PHPUNIT" = "true" ]; then
+ wget https://scrutinizer-ci.com/ocular.phar
+ fi
+php:
+- 5.6
+env:
+ matrix:
+ - COMPOSER_CHECK=true PHPUNIT=false
+ - COMPOSER_CHECK=false PHPUNIT=true PHPUNIT_SUITE=unit
+matrix:
+ exclude:
+ - php: 5.6
+ env: COMPOSER_CHECK=true PHPUNIT=false
+script:
+ if [ "$COMPOSER_CHECK" = "true" ]; then
+ composer check;
+ fi
+notifications:
+ hipchat:
+ rooms:
+ secure: F5pTVtwBACRIXMdkQ/oE6f5faK3eHvPqDmD7jmAv4vU7Nyog4RN1h1nqa8kJo6fRaRvdbIF5ovAwfdX5nuoMBQqio4FpfpT4jkfFNf5gGEFOlGW3UTQR/8JyoVCEvZ4Wau3OsIouv1U3du9uWvaqHoxIeI9HvnTVinSzu9P4EjE=
+ on_success: change
+ on_failure: always
+
+cache:
+ directories:
+ - vendor/
diff --git a/README.md b/README.md
index e8efb02..b0ad068 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,55 @@
-# AuditTrackingBundle
-Configurable auditing bundle, an easy way to keep record of users requests to Graviton
+# GravitonAuditTrackingBundle
+
+## Inner Auditing tool bundle
+This tool is meant to run as a hidden service in order to know what each user request or modifies.
+It will not limit nor interfere with the users request but only store the changes and data received.
+* x-header-audit-thread → id-string-uuid
+* Api to list thread: /auditing/?eq(thread,string:id-string-uuid)`
+
+### version
+* `v0.1.0`: 2016/09/28 First version with basic auditing enabled by default, collection changes.
+
+#### Configuration
+* Need Graviton ^v0.77.0, so ModelEvent is fired on Document Updates.
+* Setup configuration in `AuditTracking/Resources/config/parameters.yml`.
+
+```yml
+parameters:
+ graviton_audit_tracking:
+ # General on/off switch
+ log_enabled: true
+ # Localhost and not Real User on/off switch
+ log_test_calls: false
+ # Store request log also on 400 error
+ log_on_failure: false
+ # Request methods to be saved, array PUT,POST,DELETE,PATCH...
+ requests: []
+ # Store full request header request data.
+ request_headers: false
+ # Store full request content body. if true full lenght, can be limited with a integer
+ request_content: false
+ # Store reponse basic information. if true full lenght, can be limited with a integer
+ response: false
+ # Store full response header request data.
+ response_headers: false
+ # Store response body content
+ response_content: false
+ # Store data base events, array of events, insert, update, delete
+ database: ['insert','update','delete']
+ # Store all exception
+ exceptions: false
+ # Exclude header status exceptions code, 400=bad request, form validation
+ exceptions_exclude: [400]
+ # Exclude listed URLS, array
+ exlude_urls: ["/auditing"]
+```
+
+### Testing in Graviton
+* composer require graviton/graviton-service-bundle-audit-tracking
+* Inside graviton load the bundle: GravitonBundleBundle:getBundles - add the load of this new bundle
+* Enable in config the log_test_calls: true ( also, so you use the bundle in dev mode )
+
+### Enabling in a Wrapper
+* Enable in resources/configuration.sh the new bundle: `\\Graviton\\AuditTrackingBundle\\GravitonAuditTrackingBundle`
+* composer require graviton/graviton-service-bundle-audit-tracking
+* sh dev-cleanstart.sh
\ No newline at end of file
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..cedad11
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,37 @@
+{
+ "name": "graviton/graviton-service-bundle-audit-tracking",
+ "license": "GPL",
+ "type": "project",
+ "description": "Audit tracking bundle to be used in graviton/graviton",
+ "authors": [
+ {
+ "name": "List of contributors",
+ "homepage": "https://github.com/libgraviton/graviton/graphs/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=5.6",
+ "graviton/graviton": ">=0.77.0"
+ },
+ "autoload": {
+ "psr-0": { "Graviton": "src/"}
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~5.5",
+ "squizlabs/php_codesniffer": "~2.6",
+ "libgraviton/codesniffer": "~1.3"
+ },
+ "scripts": {
+ "check": [
+ "./vendor/bin/phpcs --config-set installed_paths vendor/libgraviton/codesniffer/CodeSniffer/Standards",
+ "./vendor/bin/phpcs --standard=PSR1 --ignore='*.css' --ignore='*.js' src/",
+ "./vendor/bin/phpcs --standard=PSR2 --ignore='*.css' --ignore='*.js' src/",
+ "./vendor/bin/phpcs --standard=ENTB --ignore='*.css' --ignore='*.js' src/"
+ ]
+ },
+ "installer-paths": {
+ "vendor/composer_phpcs": ["libgraviton/codesniffer"]
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true
+}
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000..d198bfe
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,6162 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "This file is @generated automatically"
+ ],
+ "hash": "836f825221d11a6a0746f15ccd48339a",
+ "content-hash": "fd1ed803c3af0f5bb6445bdab89e00e9",
+ "packages": [
+ {
+ "name": "antimattr/mongodb-migrations",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/antimattr/mongodb-migrations.git",
+ "reference": "d553f96ec588ed929ffc75c88f039b26da0d705a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/antimattr/mongodb-migrations/zipball/d553f96ec588ed929ffc75c88f039b26da0d705a",
+ "reference": "d553f96ec588ed929ffc75c88f039b26da0d705a",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/mongodb": "1.*",
+ "php": ">=5.3.2",
+ "symfony/console": "~2",
+ "symfony/yaml": "~2"
+ },
+ "require-dev": {
+ "antimattr/test-case": "~1.0@stable",
+ "friendsofphp/php-cs-fixer": "~1",
+ "mikey179/vfsstream": "1.*",
+ "phpunit/phpunit": "~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "AntiMattr\\MongoDB\\Migrations\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matthew Fitzgerald",
+ "email": "matthewfitz@gmail.com"
+ },
+ {
+ "name": "Ryan Catlin",
+ "email": "ryan.catlin@gmail.com"
+ },
+ {
+ "name": "Jonathon Suggs",
+ "email": "jsuggs@gmail.com"
+ }
+ ],
+ "description": "Managed Database Migrations for MongoDB",
+ "homepage": "http://github.com/antimattr/mongodb-migrations",
+ "keywords": [
+ "antimattr",
+ "database",
+ "doctrine",
+ "migration",
+ "mongodb"
+ ],
+ "time": "2016-09-16 17:14:51"
+ },
+ {
+ "name": "aws/aws-sdk-php",
+ "version": "2.8.31",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/aws/aws-sdk-php.git",
+ "reference": "64fa4b07f056e338a5f0f29eece75babaa83af68"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/64fa4b07f056e338a5f0f29eece75babaa83af68",
+ "reference": "64fa4b07f056e338a5f0f29eece75babaa83af68",
+ "shasum": ""
+ },
+ "require": {
+ "guzzle/guzzle": "~3.7",
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "doctrine/cache": "~1.0",
+ "ext-openssl": "*",
+ "monolog/monolog": "~1.4",
+ "phpunit/phpunit": "~4.0",
+ "phpunit/phpunit-mock-objects": "2.3.1",
+ "symfony/yaml": "~2.1"
+ },
+ "suggest": {
+ "doctrine/cache": "Adds support for caching of credentials and responses",
+ "ext-apc": "Allows service description opcode caching, request and response caching, and credentials caching",
+ "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages",
+ "monolog/monolog": "Adds support for logging HTTP requests and responses",
+ "symfony/yaml": "Eases the ability to write manifests for creating jobs in AWS Import/Export"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Aws": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Amazon Web Services",
+ "homepage": "http://aws.amazon.com"
+ }
+ ],
+ "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project",
+ "homepage": "http://aws.amazon.com/sdkforphp",
+ "keywords": [
+ "amazon",
+ "aws",
+ "cloud",
+ "dynamodb",
+ "ec2",
+ "glacier",
+ "s3",
+ "sdk"
+ ],
+ "time": "2016-07-25 18:03:20"
+ },
+ {
+ "name": "behat/transliterator",
+ "version": "v1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Behat/Transliterator.git",
+ "reference": "868e05be3a9f25ba6424c2dd4849567f50715003"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Behat/Transliterator/zipball/868e05be3a9f25ba6424c2dd4849567f50715003",
+ "reference": "868e05be3a9f25ba6424c2dd4849567f50715003",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Behat\\Transliterator": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Artistic-1.0"
+ ],
+ "description": "String transliterator",
+ "keywords": [
+ "i18n",
+ "slug",
+ "transliterator"
+ ],
+ "time": "2015-09-28 16:26:35"
+ },
+ {
+ "name": "doctrine/annotations",
+ "version": "v1.2.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/annotations.git",
+ "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
+ "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "1.*",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "doctrine/cache": "1.*",
+ "phpunit/phpunit": "4.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Annotations\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Docblock Annotations Parser",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "parser"
+ ],
+ "time": "2015-08-31 12:32:49"
+ },
+ {
+ "name": "doctrine/cache",
+ "version": "v1.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/cache.git",
+ "reference": "f8af318d14bdb0eff0336795b428b547bd39ccb6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/f8af318d14bdb0eff0336795b428b547bd39ccb6",
+ "reference": "f8af318d14bdb0eff0336795b428b547bd39ccb6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "~5.5|~7.0"
+ },
+ "conflict": {
+ "doctrine/common": ">2.2,<2.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8|~5.0",
+ "predis/predis": "~1.0",
+ "satooshi/php-coveralls": "~0.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Caching library offering an object-oriented API for many cache backends",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "cache",
+ "caching"
+ ],
+ "time": "2015-12-31 16:37:02"
+ },
+ {
+ "name": "doctrine/collections",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/collections.git",
+ "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
+ "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Collections\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Collections Abstraction library",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "array",
+ "collections",
+ "iterator"
+ ],
+ "time": "2015-04-14 22:21:58"
+ },
+ {
+ "name": "doctrine/common",
+ "version": "v2.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/common.git",
+ "reference": "a579557bc689580c19fee4e27487a67fe60defc0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/common/zipball/a579557bc689580c19fee4e27487a67fe60defc0",
+ "reference": "a579557bc689580c19fee4e27487a67fe60defc0",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "1.*",
+ "doctrine/cache": "1.*",
+ "doctrine/collections": "1.*",
+ "doctrine/inflector": "1.*",
+ "doctrine/lexer": "1.*",
+ "php": "~5.5|~7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8|~5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\": "lib/Doctrine/Common"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Common Library for Doctrine projects",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "annotations",
+ "collections",
+ "eventmanager",
+ "persistence",
+ "spl"
+ ],
+ "time": "2015-12-25 13:18:31"
+ },
+ {
+ "name": "doctrine/data-fixtures",
+ "version": "v1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/data-fixtures.git",
+ "reference": "b3cae5efef97191a08d53d733260f7eb667c16e4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/b3cae5efef97191a08d53d733260f7eb667c16e4",
+ "reference": "b3cae5efef97191a08d53d733260f7eb667c16e4",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "~2.2",
+ "php": "^5.6 || ^7.0"
+ },
+ "conflict": {
+ "doctrine/orm": "< 2.4"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^2.5.4",
+ "doctrine/orm": "^2.5.4",
+ "phpunit/phpunit": "^5.4.6"
+ },
+ "suggest": {
+ "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures",
+ "doctrine/orm": "For loading ORM fixtures",
+ "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\DataFixtures": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ }
+ ],
+ "description": "Data Fixtures for all Doctrine Object Managers",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database"
+ ],
+ "time": "2016-06-20 18:08:26"
+ },
+ {
+ "name": "doctrine/dbal",
+ "version": "v2.5.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/dbal.git",
+ "reference": "9f8c05cd5225a320d56d4bfdb4772f10d045a0c9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/9f8c05cd5225a320d56d4bfdb4772f10d045a0c9",
+ "reference": "9f8c05cd5225a320d56d4bfdb4772f10d045a0c9",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": ">=2.4,<2.7-dev",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*",
+ "symfony/console": "2.*||^3.0"
+ },
+ "suggest": {
+ "symfony/console": "For helpful console commands such as SQL execution and import of files."
+ },
+ "bin": [
+ "bin/doctrine-dbal"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\DBAL\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ }
+ ],
+ "description": "Database Abstraction Layer",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "dbal",
+ "persistence",
+ "queryobject"
+ ],
+ "time": "2016-09-09 19:13:33"
+ },
+ {
+ "name": "doctrine/doctrine-bundle",
+ "version": "1.6.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineBundle.git",
+ "reference": "dd40b0a7fb16658cda9def9786992b8df8a49be7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/dd40b0a7fb16658cda9def9786992b8df8a49be7",
+ "reference": "dd40b0a7fb16658cda9def9786992b8df8a49be7",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/dbal": "~2.3",
+ "doctrine/doctrine-cache-bundle": "~1.0",
+ "jdorn/sql-formatter": "~1.1",
+ "php": ">=5.3.2",
+ "symfony/console": "~2.3|~3.0",
+ "symfony/dependency-injection": "~2.3|~3.0",
+ "symfony/doctrine-bridge": "~2.2|~3.0",
+ "symfony/framework-bundle": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "doctrine/orm": "~2.3",
+ "phpunit/phpunit": "~4",
+ "satooshi/php-coveralls": "~0.6.1",
+ "symfony/phpunit-bridge": "~2.7|~3.0",
+ "symfony/property-info": "~2.8|~3.0",
+ "symfony/validator": "~2.2|~3.0",
+ "symfony/yaml": "~2.2|~3.0",
+ "twig/twig": "~1.10"
+ },
+ "suggest": {
+ "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
+ "symfony/web-profiler-bundle": "To use the data collector."
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Bundle\\DoctrineBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Doctrine Project",
+ "homepage": "http://www.doctrine-project.org/"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony DoctrineBundle",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "dbal",
+ "orm",
+ "persistence"
+ ],
+ "time": "2016-08-10 15:35:22"
+ },
+ {
+ "name": "doctrine/doctrine-cache-bundle",
+ "version": "1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineCacheBundle.git",
+ "reference": "18c600a9b82f6454d2e81ca4957cdd56a1cf3504"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/18c600a9b82f6454d2e81ca4957cdd56a1cf3504",
+ "reference": "18c600a9b82f6454d2e81ca4957cdd56a1cf3504",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/cache": "^1.4.2",
+ "doctrine/inflector": "~1.0",
+ "php": ">=5.3.2",
+ "symfony/doctrine-bridge": "~2.2|~3.0"
+ },
+ "require-dev": {
+ "instaclick/coding-standard": "~1.1",
+ "instaclick/object-calisthenics-sniffs": "dev-master",
+ "instaclick/symfony2-coding-standard": "dev-remaster",
+ "phpunit/phpunit": "~4",
+ "predis/predis": "~0.8",
+ "satooshi/php-coveralls": "~0.6.1",
+ "squizlabs/php_codesniffer": "~1.5",
+ "symfony/console": "~2.2|~3.0",
+ "symfony/finder": "~2.2|~3.0",
+ "symfony/framework-bundle": "~2.2|~3.0",
+ "symfony/phpunit-bridge": "~2.7|~3.0",
+ "symfony/security-acl": "~2.3|~3.0",
+ "symfony/validator": "~2.2|~3.0",
+ "symfony/yaml": "~2.2|~3.0"
+ },
+ "suggest": {
+ "symfony/security-acl": "For using this bundle to cache ACLs"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Bundle\\DoctrineCacheBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Fabio B. Silva",
+ "email": "fabio.bat.silva@gmail.com"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@hotmail.com"
+ },
+ {
+ "name": "Doctrine Project",
+ "homepage": "http://www.doctrine-project.org/"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony Bundle for Doctrine Cache",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "cache",
+ "caching"
+ ],
+ "time": "2016-01-26 17:28:51"
+ },
+ {
+ "name": "doctrine/doctrine-fixtures-bundle",
+ "version": "2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineFixturesBundle.git",
+ "reference": "0f1a2f91b349e10f5c343f75ab71d23aace5b029"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/0f1a2f91b349e10f5c343f75ab71d23aace5b029",
+ "reference": "0f1a2f91b349e10f5c343f75ab71d23aace5b029",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/data-fixtures": "~1.0",
+ "doctrine/doctrine-bundle": "~1.0",
+ "php": ">=5.3.2",
+ "symfony/doctrine-bridge": "~2.3|~3.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Bundle\\FixturesBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Doctrine Project",
+ "homepage": "http://www.doctrine-project.org"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony DoctrineFixturesBundle",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "Fixture",
+ "persistence"
+ ],
+ "time": "2015-11-04 21:23:23"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "v1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "90b2128806bfde671b6952ab8bea493942c1fdae"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae",
+ "reference": "90b2128806bfde671b6952ab8bea493942c1fdae",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Inflector\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Common String Manipulations with regard to casing and singular/plural rules.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "inflection",
+ "pluralize",
+ "singularize",
+ "string"
+ ],
+ "time": "2015-11-06 14:35:42"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3,<8.0-DEV"
+ },
+ "require-dev": {
+ "athletic/athletic": "~0.1.8",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "~2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://github.com/doctrine/instantiator",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "time": "2015-06-14 21:17:01"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Lexer\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "lexer",
+ "parser"
+ ],
+ "time": "2014-09-09 13:34:57"
+ },
+ {
+ "name": "doctrine/mongodb",
+ "version": "1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/mongodb.git",
+ "reference": "b4eb8683d66d44de4e9e4e974149bdce327dc818"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/mongodb/zipball/b4eb8683d66d44de4e9e4e974149bdce327dc818",
+ "reference": "b4eb8683d66d44de4e9e4e974149bdce327dc818",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "^2.2",
+ "ext-mongo": "^1.5",
+ "php": "^5.5 || ^7.0"
+ },
+ "require-dev": {
+ "jmikola/geojson": "^1.0",
+ "phpunit/phpunit": "~4.8|~5.0"
+ },
+ "suggest": {
+ "jmikola/geojson": "Support GeoJSON geometry objects in 2dsphere queries"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\MongoDB": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jonathan H. Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Jeremy Mikola",
+ "email": "jmikola@gmail.com"
+ },
+ {
+ "name": "Bulat Shakirzyanov",
+ "email": "mallluhuct@gmail.com"
+ },
+ {
+ "name": "Kris Wallsmith",
+ "email": "kris.wallsmith@gmail.com"
+ },
+ {
+ "name": "Maciej Malarz",
+ "email": "malarzm@gmail.com"
+ },
+ {
+ "name": "Andreas Braun",
+ "email": "alcaeus@alcaeus.org"
+ }
+ ],
+ "description": "Doctrine MongoDB Abstraction Layer",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "mongodb",
+ "persistence"
+ ],
+ "time": "2016-03-19 18:45:48"
+ },
+ {
+ "name": "doctrine/mongodb-odm",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/mongodb-odm.git",
+ "reference": "9eedb38286805f8f084c9a530ef89379ed9bf4b5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/mongodb-odm/zipball/9eedb38286805f8f084c9a530ef89379ed9bf4b5",
+ "reference": "9eedb38286805f8f084c9a530ef89379ed9bf4b5",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "~1.0",
+ "doctrine/cache": "~1.0",
+ "doctrine/collections": "~1.1",
+ "doctrine/common": "~2.4",
+ "doctrine/inflector": "~1.0",
+ "doctrine/instantiator": "~1.0.1",
+ "doctrine/mongodb": "~1.3",
+ "php": "^5.6 || ^7.0",
+ "symfony/console": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8|~5.0",
+ "symfony/yaml": "~2.3|~3.0"
+ },
+ "suggest": {
+ "alcaeus/mongo-php-adapter": "Allows usage of PHP 7",
+ "symfony/yaml": "Enables the YAML metadata mapping driver"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\ODM\\MongoDB": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jonathan H. Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Jeremy Mikola",
+ "email": "jmikola@gmail.com"
+ },
+ {
+ "name": "Bulat Shakirzyanov",
+ "email": "mallluhuct@gmail.com"
+ },
+ {
+ "name": "Kris Wallsmith",
+ "email": "kris.wallsmith@gmail.com"
+ },
+ {
+ "name": "Maciej Malarz",
+ "email": "malarzm@gmail.com"
+ },
+ {
+ "name": "Andreas Braun",
+ "email": "alcaeus@alcaeus.org"
+ }
+ ],
+ "description": "Doctrine MongoDB Object Document Mapper",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "mongodb",
+ "odm",
+ "persistence"
+ ],
+ "time": "2016-07-27 13:16:06"
+ },
+ {
+ "name": "doctrine/mongodb-odm-bundle",
+ "version": "3.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineMongoDBBundle.git",
+ "reference": "e98a08a0c7ba495ef2436fffea1c225da1d0ac18"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineMongoDBBundle/zipball/e98a08a0c7ba495ef2436fffea1c225da1d0ac18",
+ "reference": "e98a08a0c7ba495ef2436fffea1c225da1d0ac18",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/mongodb-odm": "^1.1",
+ "php": "^5.6 || ^7.0",
+ "psr/log": "^1.0",
+ "symfony/config": "^2.7 || ^3.0",
+ "symfony/console": "^2.7 || ^3.0",
+ "symfony/dependency-injection": "^2.7 || ^3.0",
+ "symfony/doctrine-bridge": "^2.7 || ^3.0",
+ "symfony/framework-bundle": "^2.7 || ^3.0",
+ "symfony/options-resolver": "^2.7 || ^3.0"
+ },
+ "require-dev": {
+ "doctrine/data-fixtures": "@dev",
+ "symfony/form": "^2.7 || ^3.0",
+ "symfony/phpunit-bridge": "^2.7 || ^3.0",
+ "symfony/yaml": "^2.7 || ^3.0"
+ },
+ "suggest": {
+ "doctrine/data-fixtures": "Load data fixtures"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Bundle\\MongoDBBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kris Wallsmith",
+ "email": "kris@symfony.com"
+ },
+ {
+ "name": "Jonathan H. Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Bulat Shakirzyanov",
+ "email": "mallluhuct@gmail.com"
+ }
+ ],
+ "description": "Symfony2 Doctrine MongoDB Bundle",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "mongodb",
+ "persistence",
+ "symfony"
+ ],
+ "time": "2016-06-30 12:19:21"
+ },
+ {
+ "name": "doctrine/orm",
+ "version": "v2.5.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/doctrine2.git",
+ "reference": "73e4be7c7b3ba26f96b781a40b33feba4dfa6d45"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/73e4be7c7b3ba26f96b781a40b33feba4dfa6d45",
+ "reference": "73e4be7c7b3ba26f96b781a40b33feba4dfa6d45",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/cache": "~1.4",
+ "doctrine/collections": "~1.2",
+ "doctrine/common": ">=2.5-dev,<2.7-dev",
+ "doctrine/dbal": ">=2.5-dev,<2.6-dev",
+ "doctrine/instantiator": "~1.0.1",
+ "ext-pdo": "*",
+ "php": ">=5.4",
+ "symfony/console": "~2.5|~3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0",
+ "symfony/yaml": "~2.3|~3.0"
+ },
+ "suggest": {
+ "symfony/yaml": "If you want to use YAML Metadata Mapping Driver"
+ },
+ "bin": [
+ "bin/doctrine",
+ "bin/doctrine.php"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\ORM\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ }
+ ],
+ "description": "Object-Relational-Mapper for PHP",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "orm"
+ ],
+ "time": "2016-09-10 18:51:13"
+ },
+ {
+ "name": "exercise/htmlpurifier-bundle",
+ "version": "v0.2.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Exercise/HTMLPurifierBundle.git",
+ "reference": "3b5842de5e7ffee2c360eb7746519797a2fbb0f6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Exercise/HTMLPurifierBundle/zipball/3b5842de5e7ffee2c360eb7746519797a2fbb0f6",
+ "reference": "3b5842de5e7ffee2c360eb7746519797a2fbb0f6",
+ "shasum": ""
+ },
+ "require": {
+ "ezyang/htmlpurifier": "~4.0",
+ "php": ">=5.3.2",
+ "symfony/framework-bundle": "~2.0|~3.0"
+ },
+ "require-dev": {
+ "symfony/form": "~2.0",
+ "twig/twig": "~1.3"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Exercise\\HTMLPurifierBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "contributors",
+ "homepage": "https://github.com/Exercise/HTMLPurifierBundle/contributors"
+ }
+ ],
+ "description": "HTMLPurifier integration for your Symfony2 project",
+ "homepage": "https://github.com/Exercise/HTMLPurifierBundle",
+ "keywords": [
+ "htmlpurifier"
+ ],
+ "time": "2015-12-01 17:32:26"
+ },
+ {
+ "name": "ezyang/htmlpurifier",
+ "version": "v4.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ezyang/htmlpurifier.git",
+ "reference": "d0c392f77d2f2a3dcf7fcb79e2a1e2b8804e75b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/d0c392f77d2f2a3dcf7fcb79e2a1e2b8804e75b2",
+ "reference": "d0c392f77d2f2a3dcf7fcb79e2a1e2b8804e75b2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "HTMLPurifier": "library/"
+ },
+ "files": [
+ "library/HTMLPurifier.composer.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL"
+ ],
+ "authors": [
+ {
+ "name": "Edward Z. Yang",
+ "email": "admin@htmlpurifier.org",
+ "homepage": "http://ezyang.com"
+ }
+ ],
+ "description": "Standards compliant HTML filter written in PHP",
+ "homepage": "http://htmlpurifier.org/",
+ "keywords": [
+ "html"
+ ],
+ "time": "2016-07-16 12:58:58"
+ },
+ {
+ "name": "gedmo/doctrine-extensions",
+ "version": "v2.4.23",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Atlantic18/DoctrineExtensions.git",
+ "reference": "c2f308fab900090c6c0f5b6f72f34a37b4dd2d84"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Atlantic18/DoctrineExtensions/zipball/c2f308fab900090c6c0f5b6f72f34a37b4dd2d84",
+ "reference": "c2f308fab900090c6c0f5b6f72f34a37b4dd2d84",
+ "shasum": ""
+ },
+ "require": {
+ "behat/transliterator": "~1.0",
+ "doctrine/common": "~2.4",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "doctrine/common": ">=2.5.0",
+ "doctrine/mongodb-odm": ">=1.0.2",
+ "doctrine/orm": ">=2.5.0",
+ "phpunit/phpunit": "~4.4",
+ "phpunit/phpunit-mock-objects": "~2.3",
+ "symfony/yaml": "~2.6"
+ },
+ "suggest": {
+ "doctrine/mongodb-odm": "to use the extensions with the MongoDB ODM",
+ "doctrine/orm": "to use the extensions with the ORM"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Gedmo\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "David Buchmann",
+ "email": "david@liip.ch"
+ },
+ {
+ "name": "Gediminas Morkevicius",
+ "email": "gediminas.morkevicius@gmail.com"
+ },
+ {
+ "name": "Gustavo Falco",
+ "email": "comfortablynumb84@gmail.com"
+ }
+ ],
+ "description": "Doctrine2 behavioral extensions",
+ "homepage": "http://gediminasm.org/",
+ "keywords": [
+ "Blameable",
+ "behaviors",
+ "doctrine2",
+ "extensions",
+ "gedmo",
+ "loggable",
+ "nestedset",
+ "sluggable",
+ "sortable",
+ "timestampable",
+ "translatable",
+ "tree",
+ "uploadable"
+ ],
+ "time": "2016-09-22 13:45:22"
+ },
+ {
+ "name": "graviton/deploy-scripts",
+ "version": "v0.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/libgraviton/deploy-scripts.git",
+ "reference": "dbf2703b982047a154fbbe71fdbfda52ee652592"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/libgraviton/deploy-scripts/zipball/dbf2703b982047a154fbbe71fdbfda52ee652592",
+ "reference": "dbf2703b982047a154fbbe71fdbfda52ee652592",
+ "shasum": ""
+ },
+ "require": {
+ "incenteev/composer-parameter-handler": "^2.1",
+ "symfony/config": "^2.6 || ^3.0",
+ "symfony/console": "^2.6 || ^3.0",
+ "symfony/process": "^2.6 || ^3.0"
+ },
+ "require-dev": {
+ "kherge/box": "^2.5",
+ "libgraviton/codesniffer": "~1.3",
+ "phpunit/phpunit": "~4.6",
+ "squizlabs/php_codesniffer": "~2.2"
+ },
+ "bin": [
+ "bin/deploy"
+ ],
+ "type": "library",
+ "extra": {
+ "incenteev-parameters": {
+ "parameter-key": "deploy-scripts",
+ "file": "app/config/deploy.yml",
+ "env-map": {
+ "cf_bin": "CF_BIN",
+ "cf_process_timeout": "CF_PROCESS_TIMEOUT",
+ "cf_api_url": "CF_API_URL",
+ "cf_username": "CF_USERNAME",
+ "cf_password": "CF_PASSWORD",
+ "cf_org": "CF_ORG",
+ "cf_space": "CF_SPACE",
+ "cf_domain": "CF_DOMAIN",
+ "cf_services": "CF_SERVICES"
+ }
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Graviton\\Deployment\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL"
+ ],
+ "authors": [
+ {
+ "name": "List of contributors",
+ "homepage": "https://github.com/libgraviton/deploy-scripts/graphs/contributors"
+ }
+ ],
+ "description": "low level deploy helpers",
+ "time": "2016-08-16 11:37:23"
+ },
+ {
+ "name": "graviton/graviton",
+ "version": "v0.77.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/libgraviton/graviton.git",
+ "reference": "550d67b74774045850e64848bb3bab37e2b3358b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/libgraviton/graviton/zipball/550d67b74774045850e64848bb3bab37e2b3358b",
+ "reference": "550d67b74774045850e64848bb3bab37e2b3358b",
+ "shasum": ""
+ },
+ "require": {
+ "antimattr/mongodb-migrations": "^1.0",
+ "aws/aws-sdk-php": "~2.8",
+ "doctrine/doctrine-fixtures-bundle": "~2.3",
+ "doctrine/mongodb-odm": "~1.0",
+ "doctrine/mongodb-odm-bundle": "~3.1",
+ "doctrine/orm": "~2.5",
+ "exercise/htmlpurifier-bundle": "~0.2",
+ "graviton/deploy-scripts": "~0.4",
+ "graviton/json-schema": "~1.0",
+ "graviton/php-rql-parser": ">=2.0.2",
+ "graviton/rql-parser-bundle": "~0.11.0",
+ "guzzlehttp/guzzle": ">=6.2.1",
+ "incenteev/composer-parameter-handler": "~2.1",
+ "jenssegers/proxy": ">=3.0.0-beta2",
+ "jms/di-extra-bundle": "~1.7",
+ "jms/serializer": "!=1.2.0",
+ "jms/serializer-bundle": ">=1.1,<2",
+ "justinrainbow/json-schema": "~3.0",
+ "knplabs/knp-gaufrette-bundle": "~0.3",
+ "misd/guzzle-bundle": "~1.1",
+ "php": ">=5.6",
+ "php-amqplib/rabbitmq-bundle": "^1.9",
+ "php-jsonpatch/php-jsonpatch": "~3.0",
+ "sensio/distribution-bundle": "~3.0.12",
+ "sensio/framework-extra-bundle": "~3.0",
+ "sensio/generator-bundle": "~3.0",
+ "stof/doctrine-extensions-bundle": "~1.2",
+ "symfony/monolog-bundle": "~2.4",
+ "symfony/psr-http-message-bridge": "~0.2",
+ "symfony/symfony": "2.8.8",
+ "thefrozenfire/swagger": "=2.0.7",
+ "twig/extensions": "~1.3"
+ },
+ "require-dev": {
+ "graviton/test-services-bundle": "~0.9",
+ "johnkary/phpunit-speedtrap": "~1.0",
+ "lapistano/proxy-object": "dev-master",
+ "libgraviton/codesniffer": "~1.3",
+ "liip/functional-test-bundle": "~1.6",
+ "phpunit/phpunit": "~5.5",
+ "squizlabs/php_codesniffer": "~2.6",
+ "symfony/phpunit-bridge": "^3.0"
+ },
+ "bin": [
+ "bin/graviton"
+ ],
+ "type": "project",
+ "extra": {
+ "symfony-app-dir": "app",
+ "symfony-web-dir": "web",
+ "incenteev-parameters": [
+ {
+ "file": "app/config/parameters.yml",
+ "env-map": {
+ "graviton.log.path": "LOG_PATH",
+ "graviton.mongodb.default.server.db": "MONGODB_DB",
+ "graviton.mongodb.default.server.uri": "MONGODB_URI",
+ "graviton.rest.pagination.limit": "PAGINATION_LIMIT",
+ "graviton.composer.cmd": "COMPOSER_CMD",
+ "graviton.rabbitmq.host": "RABBITMQ_HOST",
+ "graviton.rabbitmq.port": "RABBITMQ_PORT",
+ "graviton.rabbitmq.user": "RABBITMQ_USER",
+ "graviton.rabbitmq.password": "RABBITMQ_PASSWORD",
+ "graviton.rabbitmq.vhost": "RABBITMQ_VHOST",
+ "graviton.proxy.swagger.sources": "PROXY_SWAGGER_SOURCES",
+ "graviton.security.authentication.header_required": "SECURITY_AUTHENTICATION_HEADER_REQUIRED",
+ "graviton.security.authentication.test_username": "SECURITY_AUTHENTICATION_TEST_USERNAME",
+ "graviton.security.authentication.allow_anonymous": "SECURITY_AUTHENTICATION_ALLOW_ANONYMOUS",
+ "graviton.security.authentication.strategy": "SECURITY_AUTHENTICATION_STRATEGY",
+ "graviton.security.authentication.strategy_key": "SECURITY_AUTHENTICATION_STRATEGY_KEY",
+ "graviton.security.authentication.provider.model": "SECURITY_AUTHENTICATION_PROVIDER_MODEL",
+ "graviton.security.authentication.provider.model.query_field": "SECURITY_AUTHENTICATION_MODEL_QUERY_FIELD"
+ }
+ },
+ {
+ "parameter-key": "deploy-scripts",
+ "file": "app/config/deploy.yml",
+ "env-map": {
+ "cf_bin": "CF_BIN",
+ "cf_process_timeout": "CF_PROCESS_TIMEOUT",
+ "cf_api_url": "CF_API_URL",
+ "cf_username": "CF_USERNAME",
+ "cf_password": "CF_PASSWORD",
+ "cf_org": "CF_ORG",
+ "cf_space": "CF_SPACE",
+ "cf_domain": "CF_DOMAIN",
+ "cf_services": "CF_SERVICES",
+ "cf_environment_vars": "CF_ENVIRONMENT_VARS"
+ }
+ }
+ ],
+ "installer-paths": {
+ "vendor/composer_phpcs": [
+ "libgraviton/codesniffer"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "": "src/",
+ "Graviton": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL"
+ ],
+ "authors": [
+ {
+ "name": "List of contributors",
+ "homepage": "https://github.com/libgraviton/graviton/graphs/contributors"
+ }
+ ],
+ "description": "The base package for graviton",
+ "time": "2016-09-27 12:50:26"
+ },
+ {
+ "name": "graviton/json-schema",
+ "version": "v1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/libgraviton/json-schema.git",
+ "reference": "dda2e67bec8dc51907c0cb3055fb12d7e51e9d5e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/libgraviton/json-schema/zipball/dda2e67bec8dc51907c0cb3055fb12d7e51e9d5e",
+ "reference": "dda2e67bec8dc51907c0cb3055fb12d7e51e9d5e",
+ "shasum": ""
+ },
+ "require": {
+ "justinrainbow/json-schema": "~3.0",
+ "symfony/symfony": "^2.8.6 || ^3.0.7"
+ },
+ "require-dev": {
+ "libgraviton/codesniffer": "~1.3",
+ "phpunit/phpunit": "~5.2",
+ "squizlabs/php_codesniffer": "~2.2",
+ "symfony/phpunit-bridge": "^3.0"
+ },
+ "bin": [
+ "bin/graviton-validate-directory",
+ "bin/graviton-validate-file"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Graviton": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL"
+ ],
+ "authors": [
+ {
+ "name": "List of contributors",
+ "homepage": "https://github.com/libgraviton/json-schema/graphs/contributors"
+ }
+ ],
+ "description": "JSON Schemas describing the Graviton specific JSON formats",
+ "time": "2016-08-29 08:47:55"
+ },
+ {
+ "name": "graviton/php-rql-parser",
+ "version": "v2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/libgraviton/php-rql-parser.git",
+ "reference": "7e3cdb818a3eff45db168cb314d7265f703add4b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/libgraviton/php-rql-parser/zipball/7e3cdb818a3eff45db168cb314d7265f703add4b",
+ "reference": "7e3cdb818a3eff45db168cb314d7265f703add4b",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/mongodb-odm": "~1.0@beta",
+ "php": "~5.6",
+ "symfony/event-dispatcher": "^2.6 || ^3.0",
+ "xiag/rql-parser": "^1.0.2"
+ },
+ "require-dev": {
+ "doctrine/data-fixtures": "~1.0",
+ "libgraviton/codesniffer": "~1.3",
+ "phpunit/phpunit": "*",
+ "squizlabs/php_codesniffer": "~2.2",
+ "xiag/rql-command": "^1.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Graviton\\Rql\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL"
+ ],
+ "authors": [
+ {
+ "name": "List of contributors",
+ "homepage": "https://github.com/libgraviton/php-rql-parser/graphs/contributors"
+ }
+ ],
+ "description": "doctrine-odm query building wrapper to xiag-ag/rql-parser",
+ "homepage": "https://github.com/libgraviton/php-rql-parser",
+ "keywords": [
+ "language",
+ "mongo",
+ "mongodb",
+ "parser",
+ "query",
+ "resource",
+ "rest",
+ "rql"
+ ],
+ "time": "2016-08-19 13:42:03"
+ },
+ {
+ "name": "graviton/rql-parser-bundle",
+ "version": "v0.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/libgraviton/GravitonRqlParserBundle.git",
+ "reference": "b492988e72a20785a1df2a767c41867ca7999691"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/libgraviton/GravitonRqlParserBundle/zipball/b492988e72a20785a1df2a767c41867ca7999691",
+ "reference": "b492988e72a20785a1df2a767c41867ca7999691",
+ "shasum": ""
+ },
+ "require": {
+ "graviton/php-rql-parser": ">=2.0.0-alpha15",
+ "php": "~5.4",
+ "symfony/http-kernel": "~2.6"
+ },
+ "require-dev": {
+ "doctrine/mongodb-odm": "~1.0@beta",
+ "libgraviton/codesniffer": "~1.3",
+ "phpunit/phpunit": "~4.7",
+ "squizlabs/php_codesniffer": "~2.2",
+ "symfony/framework-bundle": "~2.7"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Graviton\\RqlParserBundle\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL"
+ ],
+ "authors": [
+ {
+ "name": "List of contributors",
+ "homepage": "https://github.com/libgraviton/GravitonRqlParserBundle/graphs/contributors"
+ }
+ ],
+ "description": "Port of the php-rql-parser into the world of Symfony 2.",
+ "time": "2016-04-15 12:56:32"
+ },
+ {
+ "name": "guzzle/guzzle",
+ "version": "v3.9.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/guzzle3.git",
+ "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9",
+ "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9",
+ "shasum": ""
+ },
+ "require": {
+ "ext-curl": "*",
+ "php": ">=5.3.3",
+ "symfony/event-dispatcher": "~2.1"
+ },
+ "replace": {
+ "guzzle/batch": "self.version",
+ "guzzle/cache": "self.version",
+ "guzzle/common": "self.version",
+ "guzzle/http": "self.version",
+ "guzzle/inflection": "self.version",
+ "guzzle/iterator": "self.version",
+ "guzzle/log": "self.version",
+ "guzzle/parser": "self.version",
+ "guzzle/plugin": "self.version",
+ "guzzle/plugin-async": "self.version",
+ "guzzle/plugin-backoff": "self.version",
+ "guzzle/plugin-cache": "self.version",
+ "guzzle/plugin-cookie": "self.version",
+ "guzzle/plugin-curlauth": "self.version",
+ "guzzle/plugin-error-response": "self.version",
+ "guzzle/plugin-history": "self.version",
+ "guzzle/plugin-log": "self.version",
+ "guzzle/plugin-md5": "self.version",
+ "guzzle/plugin-mock": "self.version",
+ "guzzle/plugin-oauth": "self.version",
+ "guzzle/service": "self.version",
+ "guzzle/stream": "self.version"
+ },
+ "require-dev": {
+ "doctrine/cache": "~1.3",
+ "monolog/monolog": "~1.0",
+ "phpunit/phpunit": "3.7.*",
+ "psr/log": "~1.0",
+ "symfony/class-loader": "~2.1",
+ "zendframework/zend-cache": "2.*,<2.3",
+ "zendframework/zend-log": "2.*,<2.3"
+ },
+ "suggest": {
+ "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Guzzle": "src/",
+ "Guzzle\\Tests": "tests/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Guzzle Community",
+ "homepage": "https://github.com/guzzle/guzzle/contributors"
+ }
+ ],
+ "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle",
+ "homepage": "http://guzzlephp.org/",
+ "keywords": [
+ "client",
+ "curl",
+ "framework",
+ "http",
+ "http client",
+ "rest",
+ "web service"
+ ],
+ "abandoned": "guzzlehttp/guzzle",
+ "time": "2015-03-18 18:23:50"
+ },
+ {
+ "name": "guzzlehttp/guzzle",
+ "version": "6.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/guzzle.git",
+ "reference": "3f808fba627f2c5b69e2501217bf31af349c1427"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/3f808fba627f2c5b69e2501217bf31af349c1427",
+ "reference": "3f808fba627f2c5b69e2501217bf31af349c1427",
+ "shasum": ""
+ },
+ "require": {
+ "guzzlehttp/promises": "^1.0",
+ "guzzlehttp/psr7": "^1.3.1",
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "ext-curl": "*",
+ "phpunit/phpunit": "^4.0",
+ "psr/log": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.2-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "GuzzleHttp\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ }
+ ],
+ "description": "Guzzle is a PHP HTTP client library",
+ "homepage": "http://guzzlephp.org/",
+ "keywords": [
+ "client",
+ "curl",
+ "framework",
+ "http",
+ "http client",
+ "rest",
+ "web service"
+ ],
+ "time": "2016-07-15 17:22:37"
+ },
+ {
+ "name": "guzzlehttp/promises",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/promises.git",
+ "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/c10d860e2a9595f8883527fa0021c7da9e65f579",
+ "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Promise\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ }
+ ],
+ "description": "Guzzle promises library",
+ "keywords": [
+ "promise"
+ ],
+ "time": "2016-05-18 16:56:05"
+ },
+ {
+ "name": "guzzlehttp/psr7",
+ "version": "1.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/psr7.git",
+ "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/5c6447c9df362e8f8093bda8f5d8873fe5c7f65b",
+ "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0",
+ "psr/http-message": "~1.0"
+ },
+ "provide": {
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Psr7\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ }
+ ],
+ "description": "PSR-7 message implementation",
+ "keywords": [
+ "http",
+ "message",
+ "stream",
+ "uri"
+ ],
+ "time": "2016-06-24 23:00:38"
+ },
+ {
+ "name": "incenteev/composer-parameter-handler",
+ "version": "v2.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Incenteev/ParameterHandler.git",
+ "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc",
+ "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/yaml": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "composer/composer": "1.0.*@dev",
+ "phpspec/prophecy-phpunit": "~1.0",
+ "symfony/filesystem": "~2.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Incenteev\\ParameterHandler\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christophe Coevoet",
+ "email": "stof@notk.org"
+ }
+ ],
+ "description": "Composer script handling your ignored parameter file",
+ "homepage": "https://github.com/Incenteev/ParameterHandler",
+ "keywords": [
+ "parameters management"
+ ],
+ "time": "2015-11-10 17:04:01"
+ },
+ {
+ "name": "ircmaxell/password-compat",
+ "version": "v1.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ircmaxell/password_compat.git",
+ "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/5c5cde8822a69545767f7c7f3058cb15ff84614c",
+ "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c",
+ "shasum": ""
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "lib/password.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Anthony Ferrara",
+ "email": "ircmaxell@php.net",
+ "homepage": "http://blog.ircmaxell.com"
+ }
+ ],
+ "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash",
+ "homepage": "https://github.com/ircmaxell/password_compat",
+ "keywords": [
+ "hashing",
+ "password"
+ ],
+ "time": "2014-11-20 16:49:30"
+ },
+ {
+ "name": "jdorn/sql-formatter",
+ "version": "v1.2.17",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jdorn/sql-formatter.git",
+ "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc",
+ "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "3.7.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "lib"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jeremy Dorn",
+ "email": "jeremy@jeremydorn.com",
+ "homepage": "http://jeremydorn.com/"
+ }
+ ],
+ "description": "a PHP SQL highlighting library",
+ "homepage": "https://github.com/jdorn/sql-formatter/",
+ "keywords": [
+ "highlight",
+ "sql"
+ ],
+ "time": "2014-01-12 16:20:24"
+ },
+ {
+ "name": "jenssegers/proxy",
+ "version": "v3.0.0-beta2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jenssegers/php-proxy.git",
+ "reference": "e29cbee6cbd35df012eb854016dbd0460974ec92"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jenssegers/php-proxy/zipball/e29cbee6cbd35df012eb854016dbd0460974ec92",
+ "reference": "e29cbee6cbd35df012eb854016dbd0460974ec92",
+ "shasum": ""
+ },
+ "require": {
+ "guzzlehttp/guzzle": "~6.0",
+ "psr/http-message": "^1.0",
+ "relay/relay": "^0.2.0",
+ "zendframework/zend-diactoros": "~1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "~0.9",
+ "phpunit/phpunit": "~4.4",
+ "satooshi/php-coveralls": "~0.6"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Proxy\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jens Segers",
+ "homepage": "http://jenssegers.be"
+ },
+ {
+ "name": "Ota Mares",
+ "email": "o.mares@rebuy.de",
+ "homepage": "http://www.rebuy.de"
+ }
+ ],
+ "description": "Proxy library that forwards requests to the desired url and returns the response.",
+ "homepage": "https://github.com/jenssegers/php-proxy",
+ "keywords": [
+ "proxy"
+ ],
+ "time": "2015-10-30 18:45:42"
+ },
+ {
+ "name": "jms/aop-bundle",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/JMSAopBundle.git",
+ "reference": "78000d007e74283cc564a58e184d7f62548ad394"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/JMSAopBundle/zipball/78000d007e74283cc564a58e184d7f62548ad394",
+ "reference": "78000d007e74283cc564a58e184d7f62548ad394",
+ "shasum": ""
+ },
+ "require": {
+ "jms/cg": "^1.1",
+ "php": ">=5.3.9",
+ "symfony/framework-bundle": "^2.3|^3.0"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^2.7"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "JMS\\AopBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Adds AOP capabilities to Symfony2",
+ "keywords": [
+ "annotations",
+ "aop"
+ ],
+ "time": "2015-12-09 16:30:46"
+ },
+ {
+ "name": "jms/cg",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/cg-library.git",
+ "reference": "2152ea2c48f746a676debb841644ae64cae27835"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/cg-library/zipball/2152ea2c48f746a676debb841644ae64cae27835",
+ "reference": "2152ea2c48f746a676debb841644ae64cae27835",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=4.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "CG\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache2"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Toolset for generating PHP code",
+ "keywords": [
+ "code generation"
+ ],
+ "time": "2016-04-07 10:21:44"
+ },
+ {
+ "name": "jms/di-extra-bundle",
+ "version": "1.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/JMSDiExtraBundle.git",
+ "reference": "53d0a974d79f1793a4168fbafe98f273d3e1b3e0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/JMSDiExtraBundle/zipball/53d0a974d79f1793a4168fbafe98f273d3e1b3e0",
+ "reference": "53d0a974d79f1793a4168fbafe98f273d3e1b3e0",
+ "shasum": ""
+ },
+ "require": {
+ "jms/aop-bundle": "~1.1",
+ "jms/metadata": "~1.0",
+ "php": "~5.3|~7.0",
+ "symfony/dependency-injection": "~2.3|~3.0",
+ "symfony/finder": "~2.3|~3.0",
+ "symfony/framework-bundle": "~2.3|~3.0",
+ "symfony/http-kernel": "^2.3.24|~3.0",
+ "symfony/process": "~2.3|~3.0",
+ "symfony/routing": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "doctrine/doctrine-bundle": "~1.5",
+ "doctrine/orm": "~2.3",
+ "jms/security-extra-bundle": "~1.0",
+ "phpcollection/phpcollection": ">=0.2,<0.3-dev",
+ "sensio/framework-extra-bundle": "~2.0|~3.0",
+ "symfony/browser-kit": "~2.3|~3.0",
+ "symfony/class-loader": "~2.3|~3.0",
+ "symfony/expression-language": "~2.6|~3.0",
+ "symfony/form": "~2.3|~3.0",
+ "symfony/phpunit-bridge": "~2.7",
+ "symfony/security-bundle": "~2.3",
+ "symfony/twig-bundle": "~2.3|~3.0",
+ "symfony/validator": "~2.3|~3.0",
+ "symfony/yaml": "~2.3|~3.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.8-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "JMS\\DiExtraBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Allows to configure dependency injection using annotations",
+ "homepage": "http://jmsyst.com/bundles/JMSDiExtraBundle",
+ "keywords": [
+ "annotations",
+ "dependency injection"
+ ],
+ "time": "2016-09-18 13:06:50"
+ },
+ {
+ "name": "jms/metadata",
+ "version": "1.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/metadata.git",
+ "reference": "22b72455559a25777cfd28c4ffda81ff7639f353"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/22b72455559a25777cfd28c4ffda81ff7639f353",
+ "reference": "22b72455559a25777cfd28c4ffda81ff7639f353",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "doctrine/cache": "~1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Metadata\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache"
+ ],
+ "authors": [
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com",
+ "homepage": "https://github.com/schmittjoh",
+ "role": "Developer of wrapped JMSSerializerBundle"
+ }
+ ],
+ "description": "Class/method/property metadata management in PHP",
+ "keywords": [
+ "annotations",
+ "metadata",
+ "xml",
+ "yaml"
+ ],
+ "time": "2014-07-12 07:13:19"
+ },
+ {
+ "name": "jms/parser-lib",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/parser-lib.git",
+ "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/parser-lib/zipball/c509473bc1b4866415627af0e1c6cc8ac97fa51d",
+ "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d",
+ "shasum": ""
+ },
+ "require": {
+ "phpoption/phpoption": ">=0.9,<2.0-dev"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "JMS\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache2"
+ ],
+ "description": "A library for easily creating recursive-descent parsers.",
+ "time": "2012-11-18 18:08:43"
+ },
+ {
+ "name": "jms/serializer",
+ "version": "1.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/serializer.git",
+ "reference": "705d0b4633b9c44e6253aa18306b3972282cd3a3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/705d0b4633b9c44e6253aa18306b3972282cd3a3",
+ "reference": "705d0b4633b9c44e6253aa18306b3972282cd3a3",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "^1.0",
+ "doctrine/instantiator": "^1.0.3",
+ "jms/metadata": "~1.1",
+ "jms/parser-lib": "1.*",
+ "php": ">=5.5.0",
+ "phpcollection/phpcollection": "~0.1",
+ "phpoption/phpoption": "^1.1"
+ },
+ "conflict": {
+ "twig/twig": "<1.12"
+ },
+ "require-dev": {
+ "doctrine/orm": "~2.1",
+ "doctrine/phpcr-odm": "^1.3|^2.0",
+ "jackalope/jackalope-doctrine-dbal": "^1.1.5",
+ "phpunit/phpunit": "^4.8|^5.0",
+ "propel/propel1": "~1.7",
+ "symfony/filesystem": "^2.1",
+ "symfony/form": "~2.1",
+ "symfony/translation": "^2.1",
+ "symfony/validator": "^2.2",
+ "symfony/yaml": "^2.1",
+ "twig/twig": "~1.12|~2.0"
+ },
+ "suggest": {
+ "symfony/yaml": "Required if you'd like to serialize data to YAML format."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "JMS\\Serializer": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache2"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.",
+ "homepage": "http://jmsyst.com/libs/serializer",
+ "keywords": [
+ "deserialization",
+ "jaxb",
+ "json",
+ "serialization",
+ "xml"
+ ],
+ "time": "2016-08-23 17:20:24"
+ },
+ {
+ "name": "jms/serializer-bundle",
+ "version": "1.1.0",
+ "target-dir": "JMS/SerializerBundle",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/JMSSerializerBundle.git",
+ "reference": "3e396c980545350c2efb65a50041d2a9f9d6562e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/JMSSerializerBundle/zipball/3e396c980545350c2efb65a50041d2a9f9d6562e",
+ "reference": "3e396c980545350c2efb65a50041d2a9f9d6562e",
+ "shasum": ""
+ },
+ "require": {
+ "jms/serializer": "^1.0.0",
+ "php": ">=5.4.0",
+ "phpoption/phpoption": "^1.1.0",
+ "symfony/framework-bundle": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "doctrine/doctrine-bundle": "*",
+ "doctrine/orm": "*",
+ "symfony/browser-kit": "*",
+ "symfony/class-loader": "*",
+ "symfony/css-selector": "*",
+ "symfony/finder": "*",
+ "symfony/form": "*",
+ "symfony/process": "*",
+ "symfony/stopwatch": "*",
+ "symfony/twig-bundle": "*",
+ "symfony/validator": "*",
+ "symfony/yaml": "*"
+ },
+ "suggest": {
+ "jms/di-extra-bundle": "Required to get lazy loading (de)serialization visitors, ~1.3"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "JMS\\SerializerBundle": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache2"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Allows you to easily serialize, and deserialize data of any complexity",
+ "homepage": "http://jmsyst.com/bundles/JMSSerializerBundle",
+ "keywords": [
+ "deserialization",
+ "jaxb",
+ "json",
+ "serialization",
+ "xml"
+ ],
+ "time": "2015-11-10 12:26:42"
+ },
+ {
+ "name": "justinrainbow/json-schema",
+ "version": "3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/justinrainbow/json-schema.git",
+ "reference": "2128f9de8be4600c3394d94c3918faf67157b76b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2128f9de8be4600c3394d94c3918faf67157b76b",
+ "reference": "2128f9de8be4600c3394d94c3918faf67157b76b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "json-schema/json-schema-test-suite": "1.2.0",
+ "phpdocumentor/phpdocumentor": "~2",
+ "phpunit/phpunit": "^4.8.22"
+ },
+ "bin": [
+ "bin/validate-json"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "JsonSchema\\": "src/JsonSchema/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bruno Prieto Reis",
+ "email": "bruno.p.reis@gmail.com"
+ },
+ {
+ "name": "Justin Rainbow",
+ "email": "justin.rainbow@gmail.com"
+ },
+ {
+ "name": "Igor Wiedler",
+ "email": "igor@wiedler.ch"
+ },
+ {
+ "name": "Robert Schönthal",
+ "email": "seroscho@googlemail.com"
+ }
+ ],
+ "description": "A library to validate a json schema.",
+ "homepage": "https://github.com/justinrainbow/json-schema",
+ "keywords": [
+ "json",
+ "schema"
+ ],
+ "time": "2016-08-26 12:45:49"
+ },
+ {
+ "name": "knplabs/gaufrette",
+ "version": "0.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/KnpLabs/Gaufrette.git",
+ "reference": "1696386ca66f2f046dea7892cf1f85fd82b5b68e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/KnpLabs/Gaufrette/zipball/1696386ca66f2f046dea7892cf1f85fd82b5b68e",
+ "reference": "1696386ca66f2f046dea7892cf1f85fd82b5b68e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "amazonwebservices/aws-sdk-for-php": "1.5.*",
+ "aws/aws-sdk-php": "~2",
+ "doctrine/dbal": ">=2.3",
+ "dropbox-php/dropbox-php": "*",
+ "google/apiclient": "~1.1.3",
+ "herzult/php-ssh": "*",
+ "microsoft/windowsazure": "dev-master",
+ "mikey179/vfsstream": "~1.2.0",
+ "phpseclib/phpseclib": "^2.0",
+ "phpspec/phpspec": "2.0.*",
+ "phpunit/phpunit": "3.7.*",
+ "rackspace/php-opencloud": "1.9.*"
+ },
+ "suggest": {
+ "amazonwebservices/aws-sdk-for-php": "to use the legacy Amazon S3 adapters",
+ "aws/aws-sdk-php": "to use the Amazon S3 adapter",
+ "doctrine/dbal": "to use the Doctrine DBAL adapter",
+ "dropbox-php/dropbox-php": "to use the Dropbox adapter",
+ "ext-apc": "to use the APC adapter",
+ "ext-curl": "*",
+ "ext-fileinfo": "This extension is used to automatically detect the content-type of a file in the AwsS3, OpenCloud, AzureBlogStorage and GoogleCloudStorage adapters",
+ "ext-mbstring": "*",
+ "ext-mongo": "*",
+ "ext-zip": "to use the Zip adapter",
+ "google/apiclient": "to use GoogleCloudStorage adapter",
+ "herzult/php-ssh": "to use SFtp adapter",
+ "knplabs/knp-gaufrette-bundle": "to use with Symfony2",
+ "microsoft/windowsazure": "to use Microsoft Azure Blob Storage adapter",
+ "phpseclib/phpseclib": "to use PhpseclibSftp adapter",
+ "rackspace/php-opencloud": "to use Opencloud adapter"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Gaufrette": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "The contributors",
+ "homepage": "http://github.com/knplabs/Gaufrette/contributors"
+ },
+ {
+ "name": "KnpLabs Team",
+ "homepage": "http://knplabs.com"
+ }
+ ],
+ "description": "PHP5 library that provides a filesystem abstraction layer",
+ "homepage": "http://knplabs.com",
+ "keywords": [
+ "abstraction",
+ "file",
+ "filesystem",
+ "media"
+ ],
+ "time": "2016-03-03 09:36:22"
+ },
+ {
+ "name": "knplabs/knp-gaufrette-bundle",
+ "version": "0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/KnpLabs/KnpGaufretteBundle.git",
+ "reference": "44cf552e14031517516458b0e394f16dd36a131b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/KnpLabs/KnpGaufretteBundle/zipball/44cf552e14031517516458b0e394f16dd36a131b",
+ "reference": "44cf552e14031517516458b0e394f16dd36a131b",
+ "shasum": ""
+ },
+ "require": {
+ "knplabs/gaufrette": "~0.1.7|~0.2",
+ "symfony/framework-bundle": "~2.0|~3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.2",
+ "symfony/console": "~2.0|~3.0",
+ "symfony/yaml": "~2.0|~3.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Knp\\Bundle\\GaufretteBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "The contributors",
+ "homepage": "https://github.com/knplabs/KnpGaufretteBundle/contributors"
+ },
+ {
+ "name": "Antoine Hérault",
+ "email": "antoine.herault@gmail.com"
+ }
+ ],
+ "description": "Allows to easily use the Gaufrette library in a Symfony project",
+ "homepage": "http://knplabs.com",
+ "keywords": [
+ "abstraction",
+ "file",
+ "filesystem",
+ "media"
+ ],
+ "time": "2016-01-16 00:12:11"
+ },
+ {
+ "name": "misd/guzzle-bundle",
+ "version": "v1.1.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/misd-service-development/guzzle-bundle.git",
+ "reference": "555c105ef4ac66597a029fe634dee0fe4f9cb084"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/misd-service-development/guzzle-bundle/zipball/555c105ef4ac66597a029fe634dee0fe4f9cb084",
+ "reference": "555c105ef4ac66597a029fe634dee0fe4f9cb084",
+ "shasum": ""
+ },
+ "require": {
+ "guzzle/guzzle": "~3.0",
+ "php": ">=5.3.3",
+ "symfony/framework-bundle": "~2.2"
+ },
+ "conflict": {
+ "jms/serializer-bundle": "<0.11-dev",
+ "sensio/framework-extra-bundle": ">=4.0-dev"
+ },
+ "require-dev": {
+ "doctrine/cache": "~1.0",
+ "jms/serializer-bundle": "~0.11",
+ "phpunit/phpunit": "~4.3",
+ "sensio/framework-extra-bundle": "~2.2",
+ "symfony/monolog-bundle": "~2.2",
+ "symfony/yaml": "~2.2"
+ },
+ "suggest": {
+ "jms/serializer-bundle": "Serialize/deserialize objects to/from XML, JSON and YAML",
+ "sensio/framework-extra-bundle": "Provides a parameter converter",
+ "symfony/monolog-bundle": "Log requests"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Misd\\GuzzleBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Chris Wilkinson",
+ "email": "chris.wilkinson@admin.cam.ac.uk"
+ }
+ ],
+ "description": "Integrates Guzzle into your Symfony2 application",
+ "homepage": "https://github.com/misd-service-development/guzzle-bundle",
+ "keywords": [
+ "Guzzle",
+ "api",
+ "bundle",
+ "client",
+ "curl",
+ "http",
+ "http client",
+ "rest",
+ "web service"
+ ],
+ "abandoned": true,
+ "time": "2014-12-01 08:29:51"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "1.21.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f42fbdfd53e306bda545845e4dbfd3e72edb4952",
+ "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "psr/log": "~1.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^2.4.9",
+ "doctrine/couchdb": "~1.0@dev",
+ "graylog2/gelf-php": "~1.0",
+ "jakub-onderka/php-parallel-lint": "0.9",
+ "php-amqplib/php-amqplib": "~2.4",
+ "php-console/php-console": "^3.1.3",
+ "phpunit/phpunit": "~4.5",
+ "phpunit/phpunit-mock-objects": "2.3.0",
+ "ruflin/elastica": ">=0.90 <3.0",
+ "sentry/sentry": "^0.13",
+ "swiftmailer/swiftmailer": "~5.3"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
+ "sentry/sentry": "Allow sending log messages to a Sentry server"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "http://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "time": "2016-07-29 03:23:52"
+ },
+ {
+ "name": "paragonie/random_compat",
+ "version": "v2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/random_compat.git",
+ "reference": "088c04e2f261c33bed6ca5245491cfca69195ccf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/088c04e2f261c33bed6ca5245491cfca69195ccf",
+ "reference": "088c04e2f261c33bed6ca5245491cfca69195ccf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*|5.*"
+ },
+ "suggest": {
+ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "lib/random.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com"
+ }
+ ],
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
+ "keywords": [
+ "csprng",
+ "pseudorandom",
+ "random"
+ ],
+ "time": "2016-04-03 06:00:07"
+ },
+ {
+ "name": "php-amqplib/php-amqplib",
+ "version": "v2.6.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-amqplib/php-amqplib.git",
+ "reference": "fa2f0d4410a11008cb36b379177291be7ee9e4f6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/fa2f0d4410a11008cb36b379177291be7ee9e4f6",
+ "reference": "fa2f0d4410a11008cb36b379177291be7ee9e4f6",
+ "shasum": ""
+ },
+ "require": {
+ "ext-bcmath": "*",
+ "ext-mbstring": "*",
+ "php": ">=5.3.0"
+ },
+ "replace": {
+ "videlalvaro/php-amqplib": "self.version"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8",
+ "scrutinizer/ocular": "^1.1",
+ "squizlabs/php_codesniffer": "^2.5"
+ },
+ "suggest": {
+ "ext-sockets": "Use AMQPSocketConnection"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.7-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpAmqpLib\\": "PhpAmqpLib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-2.1"
+ ],
+ "authors": [
+ {
+ "name": "Alvaro Videla",
+ "role": "Original Maintainer"
+ },
+ {
+ "name": "John Kelly",
+ "email": "johnmkelly86@gmail.com",
+ "role": "Maintainer"
+ },
+ {
+ "name": "Raúl Araya",
+ "email": "nubeiro@gmail.com",
+ "role": "Maintainer"
+ }
+ ],
+ "description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.",
+ "homepage": "https://github.com/php-amqplib/php-amqplib/",
+ "keywords": [
+ "message",
+ "queue",
+ "rabbitmq"
+ ],
+ "time": "2016-04-11 14:30:01"
+ },
+ {
+ "name": "php-amqplib/rabbitmq-bundle",
+ "version": "v1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-amqplib/RabbitMqBundle.git",
+ "reference": "757bcc6aeed7442eedfc130767ed1ab5f56a90fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-amqplib/RabbitMqBundle/zipball/757bcc6aeed7442eedfc130767ed1ab5f56a90fc",
+ "reference": "757bcc6aeed7442eedfc130767ed1ab5f56a90fc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "php-amqplib/php-amqplib": "~2.6",
+ "psr/log": "~1.0",
+ "symfony/config": "~2.3 || ~3.0",
+ "symfony/console": "~2.3 || ~3.0",
+ "symfony/dependency-injection": "~2.3 || ~3.0",
+ "symfony/event-dispatcher": "~2.3 || ~3.0",
+ "symfony/yaml": "~2.3 || ~3.0"
+ },
+ "replace": {
+ "oldsound/rabbitmq-bundle": "self.version"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8 || ~5.0",
+ "symfony/debug": "~2.3 || ~3.0",
+ "symfony/serializer": "~2.3 || ~3.0"
+ },
+ "suggest": {
+ "symfony/framework-bundle": "To use this lib as a full Symfony Bundle and to use the profiler data collector"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "OldSound\\RabbitMqBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Alvaro Videla"
+ }
+ ],
+ "description": "Integrates php-amqplib with Symfony2|3 and RabbitMq. Formerly oldsound/rabbitmq-bundle.",
+ "keywords": [
+ "AMQP",
+ "Symfony2",
+ "message",
+ "queue",
+ "rabbitmq"
+ ],
+ "time": "2016-09-03 17:56:48"
+ },
+ {
+ "name": "php-jsonpatch/php-jsonpatch",
+ "version": "v3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/raphaelstolt/php-jsonpatch.git",
+ "reference": "fa790b53d4bb81ebfe2ef8d43323c8c1714da556"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/raphaelstolt/php-jsonpatch/zipball/fa790b53d4bb81ebfe2ef8d43323c8c1714da556",
+ "reference": "fa790b53d4bb81ebfe2ef8d43323c8c1714da556",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4",
+ "php-jsonpointer/php-jsonpointer": "^3.0",
+ "symfony/polyfill-mbstring": "^1.1"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^1.11",
+ "phpunit/phpunit": "4.6.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Rs\\Json": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Raphael Stolt",
+ "email": "raphael.stolt@gmail.com",
+ "homepage": "http://raphaelstolt.blogspot.com"
+ }
+ ],
+ "description": "Implementation of JSON Patch (http://tools.ietf.org/html/rfc6902)",
+ "homepage": "https://github.com/raphaelstolt/php-jsonpatch",
+ "keywords": [
+ "json",
+ "json modification",
+ "json patch"
+ ],
+ "time": "2016-08-25 07:30:59"
+ },
+ {
+ "name": "php-jsonpointer/php-jsonpointer",
+ "version": "v3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/raphaelstolt/php-jsonpointer.git",
+ "reference": "4428f86c6f23846e9faa5a420c4ef14e485b3afb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/raphaelstolt/php-jsonpointer/zipball/4428f86c6f23846e9faa5a420c4ef14e485b3afb",
+ "reference": "4428f86c6f23846e9faa5a420c4ef14e485b3afb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^1.11",
+ "phpunit/phpunit": "4.6.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Rs\\Json": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Raphael Stolt",
+ "email": "raphael.stolt@gmail.com",
+ "homepage": "http://raphaelstolt.blogspot.com/"
+ }
+ ],
+ "description": "Implementation of JSON Pointer (http://tools.ietf.org/html/rfc6901)",
+ "homepage": "https://github.com/raphaelstolt/php-jsonpointer",
+ "keywords": [
+ "json",
+ "json pointer",
+ "json traversal"
+ ],
+ "time": "2016-08-29 08:51:01"
+ },
+ {
+ "name": "phpcollection/phpcollection",
+ "version": "0.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/php-collection.git",
+ "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/php-collection/zipball/f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6",
+ "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6",
+ "shasum": ""
+ },
+ "require": {
+ "phpoption/phpoption": "1.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "PhpCollection": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache2"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "General-Purpose Collection Library for PHP",
+ "keywords": [
+ "collection",
+ "list",
+ "map",
+ "sequence",
+ "set"
+ ],
+ "time": "2015-05-17 12:39:23"
+ },
+ {
+ "name": "phpoption/phpoption",
+ "version": "1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/php-option.git",
+ "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed",
+ "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.7.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "PhpOption\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache2"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Option Type for PHP",
+ "keywords": [
+ "language",
+ "option",
+ "php",
+ "type"
+ ],
+ "time": "2015-07-25 16:39:46"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "time": "2016-08-06 14:39:51"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "5277094ed527a1c4477177d102fe4c53551953e0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/5277094ed527a1c4477177d102fe4c53551953e0",
+ "reference": "5277094ed527a1c4477177d102fe4c53551953e0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2016-09-19 16:02:08"
+ },
+ {
+ "name": "relay/relay",
+ "version": "0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/relayphp/Relay.Relay.git",
+ "reference": "6f1f1e2392ea690d8d4402495d1104017bfa9062"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/relayphp/Relay.Relay/zipball/6f1f1e2392ea690d8d4402495d1104017bfa9062",
+ "reference": "6f1f1e2392ea690d8d4402495d1104017bfa9062",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.0",
+ "psr/http-message": "~1.0"
+ },
+ "require-dev": {
+ "zendframework/zend-diactoros": "~1.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Relay\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Relay.Relay Contributors",
+ "homepage": "https://github.com/relayphp/Relay.Relay/contributors"
+ }
+ ],
+ "description": "A PSR-7 middleware dispatcher.",
+ "homepage": "https://github.com/relayphp/Relay.Relay",
+ "keywords": [
+ "middleware",
+ "psr-7"
+ ],
+ "time": "2015-06-25 14:27:22"
+ },
+ {
+ "name": "sensio/distribution-bundle",
+ "version": "v3.0.36",
+ "target-dir": "Sensio/Bundle/DistributionBundle",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioDistributionBundle.git",
+ "reference": "964a56e855acac38d4a81920b3a86543f7e8492f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/964a56e855acac38d4a81920b3a86543f7e8492f",
+ "reference": "964a56e855acac38d4a81920b3a86543f7e8492f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sensiolabs/security-checker": "~3.0",
+ "symfony/class-loader": "~2.2",
+ "symfony/framework-bundle": "~2.3",
+ "symfony/process": "~2.2"
+ },
+ "require-dev": {
+ "symfony/form": "~2.2",
+ "symfony/validator": "~2.2",
+ "symfony/yaml": "~2.2"
+ },
+ "suggest": {
+ "symfony/form": "If you want to use the configurator",
+ "symfony/validator": "If you want to use the configurator",
+ "symfony/yaml": "If you want to use the configurator"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Sensio\\Bundle\\DistributionBundle": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Base bundle for Symfony Distributions",
+ "keywords": [
+ "configuration",
+ "distribution"
+ ],
+ "time": "2016-04-25 20:46:43"
+ },
+ {
+ "name": "sensio/framework-extra-bundle",
+ "version": "v3.0.16",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
+ "reference": "507a15f56fa7699f6cc8c2c7de4080b19ce22546"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/507a15f56fa7699f6cc8c2c7de4080b19ce22546",
+ "reference": "507a15f56fa7699f6cc8c2c7de4080b19ce22546",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "~2.2",
+ "symfony/dependency-injection": "~2.3|~3.0",
+ "symfony/framework-bundle": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "symfony/browser-kit": "~2.3|~3.0",
+ "symfony/dom-crawler": "~2.3|~3.0",
+ "symfony/expression-language": "~2.4|~3.0",
+ "symfony/finder": "~2.3|~3.0",
+ "symfony/phpunit-bridge": "~2.7|~3.0",
+ "symfony/security-bundle": "~2.4|~3.0",
+ "symfony/twig-bundle": "~2.3|~3.0",
+ "twig/twig": "~1.11|~2.0"
+ },
+ "suggest": {
+ "symfony/expression-language": "",
+ "symfony/psr-http-message-bridge": "To use the PSR-7 converters",
+ "symfony/security-bundle": ""
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Sensio\\Bundle\\FrameworkExtraBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "This bundle provides a way to configure your controllers with annotations",
+ "keywords": [
+ "annotations",
+ "controllers"
+ ],
+ "time": "2016-03-25 17:08:27"
+ },
+ {
+ "name": "sensio/generator-bundle",
+ "version": "v3.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git",
+ "reference": "3c20d16512f37d2be159eca0411b99a141b90fa4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/3c20d16512f37d2be159eca0411b99a141b90fa4",
+ "reference": "3c20d16512f37d2be159eca0411b99a141b90fa4",
+ "shasum": ""
+ },
+ "require": {
+ "symfony/console": "~2.7|~3.0",
+ "symfony/framework-bundle": "~2.7|~3.0",
+ "symfony/process": "~2.7|~3.0",
+ "symfony/yaml": "~2.7|~3.0"
+ },
+ "require-dev": {
+ "doctrine/orm": "~2.4",
+ "symfony/doctrine-bridge": "~2.7|~3.0",
+ "twig/twig": "~1.18"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Sensio\\Bundle\\GeneratorBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "This bundle generates code for you",
+ "time": "2016-09-06 01:30:19"
+ },
+ {
+ "name": "sensiolabs/security-checker",
+ "version": "v3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/security-checker.git",
+ "reference": "21696b0daa731064c23cfb694c60a2584a7b6e93"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/21696b0daa731064c23cfb694c60a2584a7b6e93",
+ "reference": "21696b0daa731064c23cfb694c60a2584a7b6e93",
+ "shasum": ""
+ },
+ "require": {
+ "symfony/console": "~2.0|~3.0"
+ },
+ "bin": [
+ "security-checker"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "SensioLabs\\Security": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien.potencier@gmail.com"
+ }
+ ],
+ "description": "A security checker for your composer.lock",
+ "time": "2015-11-07 08:07:40"
+ },
+ {
+ "name": "stof/doctrine-extensions-bundle",
+ "version": "v1.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/stof/StofDoctrineExtensionsBundle.git",
+ "reference": "4e7499d25dc5d0862da09fa8e336164948a29a25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/stof/StofDoctrineExtensionsBundle/zipball/4e7499d25dc5d0862da09fa8e336164948a29a25",
+ "reference": "4e7499d25dc5d0862da09fa8e336164948a29a25",
+ "shasum": ""
+ },
+ "require": {
+ "gedmo/doctrine-extensions": "^2.3.1",
+ "php": ">=5.3.2",
+ "symfony/framework-bundle": "~2.1|~3.0"
+ },
+ "suggest": {
+ "doctrine/doctrine-bundle": "to use the ORM extensions",
+ "doctrine/mongodb-odm-bundle": "to use the MongoDB ODM extensions"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Stof\\DoctrineExtensionsBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christophe Coevoet",
+ "email": "stof@notk.org"
+ }
+ ],
+ "description": "Integration of the gedmo/doctrine-extensions with Symfony2",
+ "homepage": "https://github.com/stof/StofDoctrineExtensionsBundle",
+ "keywords": [
+ "behaviors",
+ "doctrine2",
+ "extensions",
+ "gedmo",
+ "loggable",
+ "nestedset",
+ "sluggable",
+ "sortable",
+ "timestampable",
+ "translatable",
+ "tree"
+ ],
+ "time": "2016-01-26 23:58:32"
+ },
+ {
+ "name": "symfony/monolog-bundle",
+ "version": "2.11.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/monolog-bundle.git",
+ "reference": "e7caf4936c7be82bc6d68df87f1d23a0d5bf6e00"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/e7caf4936c7be82bc6d68df87f1d23a0d5bf6e00",
+ "reference": "e7caf4936c7be82bc6d68df87f1d23a0d5bf6e00",
+ "shasum": ""
+ },
+ "require": {
+ "monolog/monolog": "~1.18",
+ "php": ">=5.3.2",
+ "symfony/config": "~2.3|~3.0",
+ "symfony/dependency-injection": "~2.3|~3.0",
+ "symfony/http-kernel": "~2.3|~3.0",
+ "symfony/monolog-bridge": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8",
+ "symfony/console": "~2.3|~3.0",
+ "symfony/yaml": "~2.3|~3.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\MonologBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony MonologBundle",
+ "homepage": "http://symfony.com",
+ "keywords": [
+ "log",
+ "logging"
+ ],
+ "time": "2016-04-13 16:21:01"
+ },
+ {
+ "name": "symfony/polyfill-apcu",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-apcu.git",
+ "reference": "6d58bceaeea2c2d3eb62503839b18646e161cd6b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/6d58bceaeea2c2d3eb62503839b18646e161cd6b",
+ "reference": "6d58bceaeea2c2d3eb62503839b18646e161cd6b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "apcu",
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2016-05-18 14:26:46"
+ },
+ {
+ "name": "symfony/polyfill-intl-icu",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-icu.git",
+ "reference": "0f8dc2c45f69f8672379e9210bca4a115cd5146f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/0f8dc2c45f69f8672379e9210bca4a115cd5146f",
+ "reference": "0f8dc2c45f69f8672379e9210bca4a115cd5146f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/intl": "~2.3|~3.0"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's ICU-related data and classes",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "icu",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2016-05-18 14:26:46"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "dff51f72b0706335131b00a7f49606168c582594"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/dff51f72b0706335131b00a7f49606168c582594",
+ "reference": "dff51f72b0706335131b00a7f49606168c582594",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2016-05-18 14:26:46"
+ },
+ {
+ "name": "symfony/polyfill-php54",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php54.git",
+ "reference": "34d761992f6f2cc6092cc0e5e93f38b53ba5e4f1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/34d761992f6f2cc6092cc0e5e93f38b53ba5e4f1",
+ "reference": "34d761992f6f2cc6092cc0e5e93f38b53ba5e4f1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php54\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 5.4+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2016-05-18 14:26:46"
+ },
+ {
+ "name": "symfony/polyfill-php55",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php55.git",
+ "reference": "bf2ff9ad6be1a4772cb873e4eea94d70daa95c6d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/bf2ff9ad6be1a4772cb873e4eea94d70daa95c6d",
+ "reference": "bf2ff9ad6be1a4772cb873e4eea94d70daa95c6d",
+ "shasum": ""
+ },
+ "require": {
+ "ircmaxell/password-compat": "~1.0",
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php55\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 5.5+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2016-05-18 14:26:46"
+ },
+ {
+ "name": "symfony/polyfill-php56",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php56.git",
+ "reference": "3edf57a8fbf9a927533344cef65ad7e1cf31030a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/3edf57a8fbf9a927533344cef65ad7e1cf31030a",
+ "reference": "3edf57a8fbf9a927533344cef65ad7e1cf31030a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/polyfill-util": "~1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php56\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2016-05-18 14:26:46"
+ },
+ {
+ "name": "symfony/polyfill-php70",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php70.git",
+ "reference": "a42f4b6b05ed458910f8af4c4e1121b0101b2d85"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/a42f4b6b05ed458910f8af4c4e1121b0101b2d85",
+ "reference": "a42f4b6b05ed458910f8af4c4e1121b0101b2d85",
+ "shasum": ""
+ },
+ "require": {
+ "paragonie/random_compat": "~1.0|~2.0",
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php70\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2016-05-18 14:26:46"
+ },
+ {
+ "name": "symfony/polyfill-util",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-util.git",
+ "reference": "ef830ce3d218e622b221d6bfad42c751d974bf99"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/ef830ce3d218e622b221d6bfad42c751d974bf99",
+ "reference": "ef830ce3d218e622b221d6bfad42c751d974bf99",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Util\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony utilities for portability of PHP codes",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compat",
+ "compatibility",
+ "polyfill",
+ "shim"
+ ],
+ "time": "2016-05-18 14:26:46"
+ },
+ {
+ "name": "symfony/psr-http-message-bridge",
+ "version": "v0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/psr-http-message-bridge.git",
+ "reference": "1c30b1781a5497ba0330769c7ddeb649d9e2f51e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/1c30b1781a5497ba0330769c7ddeb649d9e2f51e",
+ "reference": "1c30b1781a5497ba0330769c7ddeb649d9e2f51e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "psr/http-message": "~1.0",
+ "symfony/http-foundation": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "~2.7|~3.0"
+ },
+ "suggest": {
+ "psr/http-message-implementation": "To use the HttpFoundation factory",
+ "zendframework/zend-diactoros": "To use the Zend Diactoros factory"
+ },
+ "type": "symfony-bridge",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\PsrHttpMessage\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "PSR HTTP message bridge",
+ "homepage": "http://symfony.com",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr-7"
+ ],
+ "time": "2016-09-13 23:40:43"
+ },
+ {
+ "name": "symfony/security-acl",
+ "version": "v3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/security-acl.git",
+ "reference": "053b49bf4aa333a392c83296855989bcf88ddad1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/security-acl/zipball/053b49bf4aa333a392c83296855989bcf88ddad1",
+ "reference": "053b49bf4aa333a392c83296855989bcf88ddad1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9",
+ "symfony/security-core": "~2.8|~3.0"
+ },
+ "require-dev": {
+ "doctrine/common": "~2.2",
+ "doctrine/dbal": "~2.2",
+ "psr/log": "~1.0",
+ "symfony/phpunit-bridge": "~2.8|~3.0"
+ },
+ "suggest": {
+ "doctrine/dbal": "For using the built-in ACL implementation",
+ "symfony/class-loader": "For using the ACL generateSql script",
+ "symfony/finder": "For using the ACL generateSql script"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Security\\Acl\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Security Component - ACL (Access Control List)",
+ "homepage": "https://symfony.com",
+ "time": "2015-12-28 09:39:46"
+ },
+ {
+ "name": "symfony/symfony",
+ "version": "v2.8.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/symfony.git",
+ "reference": "038d13264f732f9bba850c423e374dc72874d1a6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/symfony/zipball/038d13264f732f9bba850c423e374dc72874d1a6",
+ "reference": "038d13264f732f9bba850c423e374dc72874d1a6",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "~2.4",
+ "php": ">=5.3.9",
+ "psr/log": "~1.0",
+ "symfony/polyfill-apcu": "~1.1",
+ "symfony/polyfill-intl-icu": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php54": "~1.0",
+ "symfony/polyfill-php55": "~1.0",
+ "symfony/polyfill-php56": "~1.0",
+ "symfony/polyfill-php70": "~1.0",
+ "symfony/polyfill-util": "~1.0",
+ "symfony/security-acl": "~2.7|~3.0.0",
+ "twig/twig": "~1.23|~2.0"
+ },
+ "conflict": {
+ "phpdocumentor/reflection": "<1.0.7"
+ },
+ "replace": {
+ "symfony/asset": "self.version",
+ "symfony/browser-kit": "self.version",
+ "symfony/class-loader": "self.version",
+ "symfony/config": "self.version",
+ "symfony/console": "self.version",
+ "symfony/css-selector": "self.version",
+ "symfony/debug": "self.version",
+ "symfony/debug-bundle": "self.version",
+ "symfony/dependency-injection": "self.version",
+ "symfony/doctrine-bridge": "self.version",
+ "symfony/dom-crawler": "self.version",
+ "symfony/event-dispatcher": "self.version",
+ "symfony/expression-language": "self.version",
+ "symfony/filesystem": "self.version",
+ "symfony/finder": "self.version",
+ "symfony/form": "self.version",
+ "symfony/framework-bundle": "self.version",
+ "symfony/http-foundation": "self.version",
+ "symfony/http-kernel": "self.version",
+ "symfony/intl": "self.version",
+ "symfony/ldap": "self.version",
+ "symfony/locale": "self.version",
+ "symfony/monolog-bridge": "self.version",
+ "symfony/options-resolver": "self.version",
+ "symfony/process": "self.version",
+ "symfony/property-access": "self.version",
+ "symfony/property-info": "self.version",
+ "symfony/proxy-manager-bridge": "self.version",
+ "symfony/routing": "self.version",
+ "symfony/security": "self.version",
+ "symfony/security-bundle": "self.version",
+ "symfony/security-core": "self.version",
+ "symfony/security-csrf": "self.version",
+ "symfony/security-guard": "self.version",
+ "symfony/security-http": "self.version",
+ "symfony/serializer": "self.version",
+ "symfony/stopwatch": "self.version",
+ "symfony/swiftmailer-bridge": "self.version",
+ "symfony/templating": "self.version",
+ "symfony/translation": "self.version",
+ "symfony/twig-bridge": "self.version",
+ "symfony/twig-bundle": "self.version",
+ "symfony/validator": "self.version",
+ "symfony/var-dumper": "self.version",
+ "symfony/web-profiler-bundle": "self.version",
+ "symfony/yaml": "self.version"
+ },
+ "require-dev": {
+ "doctrine/data-fixtures": "1.0.*",
+ "doctrine/dbal": "~2.4",
+ "doctrine/doctrine-bundle": "~1.2",
+ "doctrine/orm": "~2.4,>=2.4.5",
+ "egulias/email-validator": "~1.2,>=1.2.1",
+ "monolog/monolog": "~1.11",
+ "ocramius/proxy-manager": "~0.4|~1.0|~2.0",
+ "phpdocumentor/reflection": "^1.0.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.8-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/",
+ "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/",
+ "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/",
+ "Symfony\\Bridge\\Swiftmailer\\": "src/Symfony/Bridge/Swiftmailer/",
+ "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/",
+ "Symfony\\Bundle\\": "src/Symfony/Bundle/",
+ "Symfony\\Component\\": "src/Symfony/Component/"
+ },
+ "classmap": [
+ "src/Symfony/Component/Intl/Resources/stubs"
+ ],
+ "exclude-from-classmap": [
+ "**/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "The Symfony PHP framework",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "framework"
+ ],
+ "time": "2016-06-30 15:42:24"
+ },
+ {
+ "name": "thefrozenfire/swagger",
+ "version": "2.0.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/TheFrozenFire/PHP-Swagger-Parser.git",
+ "reference": "8007be78295f5a3f174f7e18421a9f6604067edf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/TheFrozenFire/PHP-Swagger-Parser/zipball/8007be78295f5a3f174f7e18421a9f6604067edf",
+ "reference": "8007be78295f5a3f174f7e18421a9f6604067edf",
+ "shasum": ""
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~3.7.22",
+ "satooshi/php-coveralls": "~0.6"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Swagger": "src/"
+ },
+ "classmap": [
+ "tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "authors": [
+ {
+ "name": "Justin Martin",
+ "email": "frozenfire@thefrozenfire.com"
+ }
+ ],
+ "description": "Swagger parser for PHP",
+ "time": "2015-09-23 22:52:23"
+ },
+ {
+ "name": "twig/extensions",
+ "version": "v1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig-extensions.git",
+ "reference": "531eaf4b9ab778b1d7cdd10d40fc6aa74729dfee"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/531eaf4b9ab778b1d7cdd10d40fc6aa74729dfee",
+ "reference": "531eaf4b9ab778b1d7cdd10d40fc6aa74729dfee",
+ "shasum": ""
+ },
+ "require": {
+ "twig/twig": "~1.20|~2.0"
+ },
+ "require-dev": {
+ "symfony/translation": "~2.3"
+ },
+ "suggest": {
+ "symfony/translation": "Allow the time_diff output to be translated"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Twig_Extensions_": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Common additional features for Twig that do not directly belong in core",
+ "homepage": "http://twig.sensiolabs.org/doc/extensions/index.html",
+ "keywords": [
+ "i18n",
+ "text"
+ ],
+ "time": "2016-09-22 16:50:57"
+ },
+ {
+ "name": "twig/twig",
+ "version": "v1.25.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig.git",
+ "reference": "f16a634ab08d87e520da5671ec52153d627f10f6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/f16a634ab08d87e520da5671ec52153d627f10f6",
+ "reference": "f16a634ab08d87e520da5671ec52153d627f10f6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.7"
+ },
+ "require-dev": {
+ "symfony/debug": "~2.7",
+ "symfony/phpunit-bridge": "~2.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.25-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Twig_": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "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": "http://twig.sensiolabs.org/contributors",
+ "role": "Contributors"
+ }
+ ],
+ "description": "Twig, the flexible, fast, and secure template language for PHP",
+ "homepage": "http://twig.sensiolabs.org",
+ "keywords": [
+ "templating"
+ ],
+ "time": "2016-09-21 23:05:12"
+ },
+ {
+ "name": "xiag/rql-parser",
+ "version": "v1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/xiag-ag/rql-parser.git",
+ "reference": "82eb4155983775b6afec48a9c32f6bc8332161a6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/xiag-ag/rql-parser/zipball/82eb4155983775b6afec48a9c32f6bc8332161a6",
+ "reference": "82eb4155983775b6afec48a9c32f6bc8332161a6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "*"
+ },
+ "suggest": {
+ "xiag/rql-command": "Console commands to visualize your RQL code"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Xiag\\Rql\\Parser\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-2.0"
+ ],
+ "keywords": [
+ "language",
+ "parser",
+ "query",
+ "resource",
+ "rest",
+ "rql"
+ ],
+ "time": "2016-07-03 08:43:00"
+ },
+ {
+ "name": "zendframework/zend-diactoros",
+ "version": "1.3.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/zendframework/zend-diactoros.git",
+ "reference": "a60da179c37f2c4e44ef734d0b92824a58943f7f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/a60da179c37f2c4e44ef734d0b92824a58943f7f",
+ "reference": "a60da179c37f2c4e44ef734d0b92824a58943f7f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.4 || ^7.0",
+ "psr/http-message": "~1.0"
+ },
+ "provide": {
+ "psr/http-message-implementation": "~1.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6 || ^5.5",
+ "squizlabs/php_codesniffer": "^2.3.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev",
+ "dev-develop": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Zend\\Diactoros\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "description": "PSR HTTP Message implementations",
+ "homepage": "https://github.com/zendframework/zend-diactoros",
+ "keywords": [
+ "http",
+ "psr",
+ "psr-7"
+ ],
+ "time": "2016-09-07 17:57:29"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "libgraviton/codesniffer",
+ "version": "v1.3.0",
+ "target-dir": "CodeSniffer/Standards/ENTB",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/libgraviton/codesniffer-ruleset-entb.git",
+ "reference": "6f10debdb3de17b241544e28c0e874bb85a948a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/libgraviton/codesniffer-ruleset-entb/zipball/6f10debdb3de17b241544e28c0e874bb85a948a8",
+ "reference": "6f10debdb3de17b241544e28c0e874bb85a948a8",
+ "shasum": ""
+ },
+ "type": "phpcs-standard",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-3.0+"
+ ],
+ "keywords": [
+ "codesniffer",
+ "libgraviton"
+ ],
+ "time": "2015-02-23 21:52:18"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.5.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "ea74994a3dc7f8d2f65a06009348f2d63c81e61f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/ea74994a3dc7f8d2f65a06009348f2d63c81e61f",
+ "reference": "ea74994a3dc7f8d2f65a06009348f2d63c81e61f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "doctrine/collections": "1.*",
+ "phpunit/phpunit": "~4.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "homepage": "https://github.com/myclabs/DeepCopy",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "time": "2016-09-16 13:37:59"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
+ "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "time": "2015-12-27 11:43:31"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "9270140b940ff02e58ec577c237274e92cd40cdd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9270140b940ff02e58ec577c237274e92cd40cdd",
+ "reference": "9270140b940ff02e58ec577c237274e92cd40cdd",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5",
+ "phpdocumentor/reflection-common": "^1.0@dev",
+ "phpdocumentor/type-resolver": "^0.2.0",
+ "webmozart/assert": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^4.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "time": "2016-06-10 09:48:41"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443",
+ "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5",
+ "phpdocumentor/reflection-common": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^5.2||^4.8.24"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "time": "2016-06-10 07:14:17"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "v1.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "58a8137754bc24b25740d4281399a4a3596058e0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/58a8137754bc24b25740d4281399a4a3596058e0",
+ "reference": "58a8137754bc24b25740d4281399a4a3596058e0",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.3|^7.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2",
+ "sebastian/comparator": "^1.1",
+ "sebastian/recursion-context": "^1.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Prophecy\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "time": "2016-06-07 08:13:47"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "4.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "5f3f7e736d6319d5f1fc402aff8b026da26709a3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/5f3f7e736d6319d5f1fc402aff8b026da26709a3",
+ "reference": "5f3f7e736d6319d5f1fc402aff8b026da26709a3",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0",
+ "phpunit/php-file-iterator": "~1.3",
+ "phpunit/php-text-template": "~1.2",
+ "phpunit/php-token-stream": "^1.4.2",
+ "sebastian/code-unit-reverse-lookup": "~1.0",
+ "sebastian/environment": "^1.3.2 || ^2.0",
+ "sebastian/version": "~1.0|~2.0"
+ },
+ "require-dev": {
+ "ext-xdebug": ">=2.1.4",
+ "phpunit/phpunit": "^5.4"
+ },
+ "suggest": {
+ "ext-dom": "*",
+ "ext-xdebug": ">=2.4.0",
+ "ext-xmlwriter": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "time": "2016-07-26 14:39:29"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "1.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
+ "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "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"
+ ],
+ "time": "2015-06-21 13:08:43"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "time": "2015-06-21 13:50:34"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "1.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260",
+ "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4|~5"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "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"
+ ],
+ "time": "2016-05-12 18:03:57"
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "1.4.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
+ "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Wrapper around PHP's tokenizer extension.",
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "keywords": [
+ "tokenizer"
+ ],
+ "time": "2015-09-15 10:49:45"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "5.5.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "a57126dc681b08289fef6ac96a48e30656f84350"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a57126dc681b08289fef6ac96a48e30656f84350",
+ "reference": "a57126dc681b08289fef6ac96a48e30656f84350",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "myclabs/deep-copy": "~1.3",
+ "php": "^5.6 || ^7.0",
+ "phpspec/prophecy": "^1.3.1",
+ "phpunit/php-code-coverage": "^4.0.1",
+ "phpunit/php-file-iterator": "~1.4",
+ "phpunit/php-text-template": "~1.2",
+ "phpunit/php-timer": "^1.0.6",
+ "phpunit/phpunit-mock-objects": "^3.2",
+ "sebastian/comparator": "~1.1",
+ "sebastian/diff": "~1.2",
+ "sebastian/environment": "^1.3 || ^2.0",
+ "sebastian/exporter": "~1.2",
+ "sebastian/global-state": "~1.0",
+ "sebastian/object-enumerator": "~1.0",
+ "sebastian/resource-operations": "~1.0",
+ "sebastian/version": "~1.0|~2.0",
+ "symfony/yaml": "~2.1|~3.0"
+ },
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "3.0.2"
+ },
+ "require-dev": {
+ "ext-pdo": "*"
+ },
+ "suggest": {
+ "ext-tidy": "*",
+ "ext-xdebug": "*",
+ "phpunit/php-invoker": "~1.1"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.5.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "time": "2016-09-21 14:40:13"
+ },
+ {
+ "name": "phpunit/phpunit-mock-objects",
+ "version": "3.2.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+ "reference": "546898a2c0c356ef2891b39dd7d07f5d82c8ed0a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/546898a2c0c356ef2891b39dd7d07f5d82c8ed0a",
+ "reference": "546898a2c0c356ef2891b39dd7d07f5d82c8ed0a",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.6 || ^7.0",
+ "phpunit/php-text-template": "^1.2",
+ "sebastian/exporter": "^1.2"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.4"
+ },
+ "suggest": {
+ "ext-soap": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "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"
+ ],
+ "time": "2016-09-06 16:07:45"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/c36f5e7cfce482fde5bf8d10d41a53591e0198fe",
+ "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "time": "2016-02-13 06:45:14"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
+ "reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sebastian/diff": "~1.2",
+ "sebastian/exporter": "~1.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "http://www.github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "time": "2015-07-26 15:48:44"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "1.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e",
+ "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff"
+ ],
+ "time": "2015-12-08 07:14:41"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "1.3.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea",
+ "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8 || ^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "time": "2016-08-18 05:49:44"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "1.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4",
+ "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sebastian/recursion-context": "~1.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "time": "2016-06-17 09:04:28"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.2"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "time": "2015-10-12 03:26:01"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "d4ca2fb70344987502567bc50081c03e6192fb26"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/d4ca2fb70344987502567bc50081c03e6192fb26",
+ "reference": "d4ca2fb70344987502567bc50081c03e6192fb26",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6",
+ "sebastian/recursion-context": "~1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "time": "2016-01-28 13:25:10"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "913401df809e99e4f47b27cdd781f4a258d58791"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791",
+ "reference": "913401df809e99e4f47b27cdd781f4a258d58791",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "time": "2015-11-11 19:50:13"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "time": "2015-07-28 20:34:47"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "c829badbd8fdf16a0bad8aa7fa7971c029f1b9c5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c829badbd8fdf16a0bad8aa7fa7971c029f1b9c5",
+ "reference": "c829badbd8fdf16a0bad8aa7fa7971c029f1b9c5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "time": "2016-02-04 12:56:52"
+ },
+ {
+ "name": "squizlabs/php_codesniffer",
+ "version": "2.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+ "reference": "571e27b6348e5b3a637b2abc82ac0d01e6d7bbed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/571e27b6348e5b3a637b2abc82ac0d01e6d7bbed",
+ "reference": "571e27b6348e5b3a637b2abc82ac0d01e6d7bbed",
+ "shasum": ""
+ },
+ "require": {
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": ">=5.1.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "bin": [
+ "scripts/phpcs",
+ "scripts/phpcbf"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "CodeSniffer.php",
+ "CodeSniffer/CLI.php",
+ "CodeSniffer/Exception.php",
+ "CodeSniffer/File.php",
+ "CodeSniffer/Fixer.php",
+ "CodeSniffer/Report.php",
+ "CodeSniffer/Reporting.php",
+ "CodeSniffer/Sniff.php",
+ "CodeSniffer/Tokens.php",
+ "CodeSniffer/Reports/",
+ "CodeSniffer/Tokenizers/",
+ "CodeSniffer/DocGenerators/",
+ "CodeSniffer/Standards/AbstractPatternSniff.php",
+ "CodeSniffer/Standards/AbstractScopeSniff.php",
+ "CodeSniffer/Standards/AbstractVariableSniff.php",
+ "CodeSniffer/Standards/IncorrectPatternException.php",
+ "CodeSniffer/Standards/Generic/Sniffs/",
+ "CodeSniffer/Standards/MySource/Sniffs/",
+ "CodeSniffer/Standards/PEAR/Sniffs/",
+ "CodeSniffer/Standards/PSR1/Sniffs/",
+ "CodeSniffer/Standards/PSR2/Sniffs/",
+ "CodeSniffer/Standards/Squiz/Sniffs/",
+ "CodeSniffer/Standards/Zend/Sniffs/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Greg Sherwood",
+ "role": "lead"
+ }
+ ],
+ "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+ "homepage": "http://www.squizlabs.com/php-codesniffer",
+ "keywords": [
+ "phpcs",
+ "standards"
+ ],
+ "time": "2016-09-01 23:53:02"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "bb2d123231c095735130cc8f6d31385a44c7b308"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/bb2d123231c095735130cc8f6d31385a44c7b308",
+ "reference": "bb2d123231c095735130cc8f6d31385a44c7b308",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3|^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "time": "2016-08-09 15:02:57"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "dev",
+ "stability-flags": [],
+ "prefer-stable": true,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=5.6"
+ },
+ "platform-dev": []
+}
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
new file mode 100644
index 0000000..ba9d724
--- /dev/null
+++ b/phpunit.xml.dist
@@ -0,0 +1,41 @@
+
+
+
+
+
+ src/*/*Bundle/Tests/Controller
+
+
+ src/*/*Bundle/Tests
+
+
+
+
+ src
+
+ src/*/*Bundle/Tests
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Graviton/AuditTrackingBundle/Controller/DefaultController.php b/src/Graviton/AuditTrackingBundle/Controller/DefaultController.php
new file mode 100644
index 0000000..ad8473f
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Controller/DefaultController.php
@@ -0,0 +1,19 @@
+
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://swisscom.ch
+ */
+class DefaultController extends RestController
+{
+}
diff --git a/src/Graviton/AuditTrackingBundle/DependencyInjection/Configuration.php b/src/Graviton/AuditTrackingBundle/DependencyInjection/Configuration.php
new file mode 100644
index 0000000..38d64d0
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/DependencyInjection/Configuration.php
@@ -0,0 +1,31 @@
+
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://swisscom.ch
+ */
+class Configuration implements ConfigurationInterface
+{
+ /**
+ * {@inheritdoc}
+ * @return TreeBuilder
+ */
+ public function getConfigTreeBuilder()
+ {
+ $treeBuilder = new TreeBuilder();
+
+ return $treeBuilder;
+ }
+}
diff --git a/src/Graviton/AuditTrackingBundle/DependencyInjection/GravitonAuditTrackingExtension.php b/src/Graviton/AuditTrackingBundle/DependencyInjection/GravitonAuditTrackingExtension.php
new file mode 100644
index 0000000..3fd8bc9
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/DependencyInjection/GravitonAuditTrackingExtension.php
@@ -0,0 +1,28 @@
+
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://swisscom.ch
+ */
+class GravitonAuditTrackingExtension extends GravitonBundleExtension
+{
+ /**
+ * get path to bundles Resources/config dir
+ *
+ * @return string
+ */
+ public function getConfigDir()
+ {
+ return __DIR__.'/../Resources/config';
+ }
+}
diff --git a/src/Graviton/AuditTrackingBundle/Document/AuditTracking.php b/src/Graviton/AuditTrackingBundle/Document/AuditTracking.php
new file mode 100644
index 0000000..657f44d
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Document/AuditTracking.php
@@ -0,0 +1,227 @@
+
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://swisscom.ch
+ */
+class AuditTracking
+{
+ /**
+ * @var mixed $id
+ */
+ protected $id;
+
+ /**
+ * @var string $thread
+ */
+ protected $thread;
+
+ /**
+ * @var string $username
+ */
+ protected $username;
+
+ /**
+ * @var string $action
+ */
+ protected $action;
+
+ /**
+ * @var string $type
+ */
+ protected $type;
+
+ /**
+ * @var string $location
+ */
+ protected $location;
+
+ /**
+ * @var ArrayCollection $data
+ */
+ protected $data;
+
+ /**
+ * @var string $collectionName
+ */
+ protected $collectionId;
+
+ /**
+ * @var string $collectionName
+ */
+ protected $collectionName;
+
+ /**
+ * @var \datetime $createdAt
+ */
+ protected $createdAt;
+
+ /**
+ * @return mixed
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+
+ /**
+ * @return string
+ */
+ public function getThread()
+ {
+ return $this->thread;
+ }
+
+ /**
+ * @param string $thread string id to UUID thread for user
+ * @return void
+ */
+ public function setThread($thread)
+ {
+ $this->thread = $thread;
+ }
+
+ /**
+ * @return string
+ */
+ public function getUsername()
+ {
+ return $this->username;
+ }
+
+ /**
+ * @param string $username Current user name
+ * @return void
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+ }
+
+ /**
+ * @return string
+ */
+ public function getAction()
+ {
+ return $this->action;
+ }
+
+ /**
+ * @param string $action what happened
+ * @return void
+ */
+ public function setAction($action)
+ {
+ $this->action = $action;
+ }
+
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+
+ /**
+ * @param string $type type of event
+ * @return void
+ */
+ public function setType($type)
+ {
+ $this->type = $type;
+ }
+
+ /**
+ * @return string
+ */
+ public function getLocation()
+ {
+ return $this->location;
+ }
+
+ /**
+ * @param string $location where did the action happen
+ * @return void
+ */
+ public function setLocation($location)
+ {
+ $this->location = $location;
+ }
+
+ /**
+ * @return object
+ */
+ public function getData()
+ {
+ return empty($this->data) ? null : $this->data;
+ }
+
+ /**
+ * @param Object $data additional information
+ * @return void
+ */
+ public function setData($data)
+ {
+ $this->data = $data;
+ }
+
+ /**
+ * @return mixed
+ */
+ public function getCollectionId()
+ {
+ return $this->collectionId;
+ }
+
+ /**
+ * @param mixed $collectionId Collection ID
+ * @return void
+ */
+ public function setCollectionId($collectionId)
+ {
+ $this->collectionId = $collectionId;
+ }
+
+ /**
+ * @return mixed
+ */
+ public function getCollectionName()
+ {
+ return $this->collectionName;
+ }
+
+ /**
+ * @param mixed $collectionName Collection name
+ * @return void
+ */
+ public function setCollectionName($collectionName)
+ {
+ $this->collectionName = $collectionName;
+ }
+
+ /**
+ * @return \datetime
+ */
+ public function getCreatedAt()
+ {
+ return $this->createdAt;
+ }
+
+ /**
+ * @param \datetime $createdAt when the event took place
+ * @return void
+ */
+ public function setCreatedAt($createdAt)
+ {
+ $this->createdAt = $createdAt;
+ }
+}
diff --git a/src/Graviton/AuditTrackingBundle/GravitonAuditTrackingBundle.php b/src/Graviton/AuditTrackingBundle/GravitonAuditTrackingBundle.php
new file mode 100644
index 0000000..5f598eb
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/GravitonAuditTrackingBundle.php
@@ -0,0 +1,29 @@
+
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://swisscom.ch
+ */
+class GravitonAuditTrackingBundle extends Bundle implements GravitonBundleInterface
+{
+ /**
+ * return array of new bunde instances
+ *
+ * @return \Symfony\Component\HttpKernel\Bundle\Bundle[]
+ */
+ public function getBundles()
+ {
+ return array();
+ }
+}
diff --git a/src/Graviton/AuditTrackingBundle/Listener/DocumentModelListener.php b/src/Graviton/AuditTrackingBundle/Listener/DocumentModelListener.php
new file mode 100644
index 0000000..d4cc385
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Listener/DocumentModelListener.php
@@ -0,0 +1,61 @@
+
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://swisscom.ch
+ */
+class DocumentModelListener
+{
+ /** @var ActivityManager */
+ private $manager;
+
+ /**
+ * DBActivityListener constructor.
+ * @param ActivityManager $activityManager Business logic
+ */
+ public function __construct(ActivityManager $activityManager)
+ {
+ $this->manager = $activityManager;
+ }
+
+ /**
+ * Updating a Model
+ * @param ModelEvent $event Mongo.odm event argument
+ * @return void
+ */
+ public function modelUpdate(ModelEvent $event)
+ {
+ $this->manager->registerDocumentModelEvent($event);
+ }
+
+ /**
+ * Insert a Model
+ * @param ModelEvent $event Mongo.odm event argument
+ * @return void
+ */
+ public function modelInsert(ModelEvent $event)
+ {
+ $this->manager->registerDocumentModelEvent($event);
+ }
+
+ /**
+ * Insert a Model
+ * @param ModelEvent $event Mongo.odm event argument
+ * @return void
+ */
+ public function modelDelete(ModelEvent $event)
+ {
+ $this->manager->registerDocumentModelEvent($event);
+ }
+}
diff --git a/src/Graviton/AuditTrackingBundle/Listener/ExceptionActivityListener.php b/src/Graviton/AuditTrackingBundle/Listener/ExceptionActivityListener.php
new file mode 100644
index 0000000..937c476
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Listener/ExceptionActivityListener.php
@@ -0,0 +1,45 @@
+
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://swisscom.ch
+ */
+class ExceptionActivityListener
+{
+ /** @var ActivityManager $manager */
+ private $manager;
+
+ /**
+ * RequestActivityListener constructor.
+ * @param ActivityManager $activityManager Business logic
+ */
+ public function __construct(ActivityManager $activityManager)
+ {
+ $this->manager = $activityManager;
+ }
+
+ /**
+ * Should not handle Validation Exceptions and only service exceptions
+ *
+ * @param GetResponseForExceptionEvent $event Sf Event
+ *
+ * @return void
+ */
+ public function onKernelException(GetResponseForExceptionEvent $event)
+ {
+ $exception = $event->getException();
+ $this->manager->registerExceptionEvent($exception);
+ }
+}
diff --git a/src/Graviton/AuditTrackingBundle/Listener/RequestActivityListener.php b/src/Graviton/AuditTrackingBundle/Listener/RequestActivityListener.php
new file mode 100644
index 0000000..b47f5d2
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Listener/RequestActivityListener.php
@@ -0,0 +1,44 @@
+
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://swisscom.ch
+ */
+class RequestActivityListener
+{
+ /** @var ActivityManager $manager */
+ private $manager;
+
+ /**
+ * RequestActivityListener constructor.
+ * @param ActivityManager $activityManager Business logic
+ */
+ public function __construct(ActivityManager $activityManager)
+ {
+ $this->manager = $activityManager;
+ }
+
+ /**
+ * When request is received from user.
+ *
+ * @param GetResponseEvent $event Sf Event
+ * @return void
+ */
+ public function onKernelRequest(GetResponseEvent $event)
+ {
+ if ($event->isMasterRequest()) {
+ $this->manager->registerRequestEvent($event->getRequest());
+ }
+ }
+}
diff --git a/src/Graviton/AuditTrackingBundle/Listener/ResponseActivityListener.php b/src/Graviton/AuditTrackingBundle/Listener/ResponseActivityListener.php
new file mode 100644
index 0000000..f045673
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Listener/ResponseActivityListener.php
@@ -0,0 +1,42 @@
+
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://swisscom.ch
+ */
+class ResponseActivityListener
+{
+ /** @var ActivityManager $manager */
+ private $manager;
+
+ /**
+ * RequestActivityListener constructor.
+ * @param ActivityManager $activityManager Business logic
+ */
+ public function __construct(ActivityManager $activityManager)
+ {
+ $this->manager = $activityManager;
+ }
+
+ /**
+ * When response is prepared and ready to be sent.
+ *
+ * @param FilterResponseEvent $event Sf kernel response event
+ * @return void
+ */
+ public function onKernelResponse(FilterResponseEvent $event)
+ {
+ $this->manager->registerResponseEvent($event->getResponse());
+ }
+}
diff --git a/src/Graviton/AuditTrackingBundle/Manager/ActivityManager.php b/src/Graviton/AuditTrackingBundle/Manager/ActivityManager.php
new file mode 100644
index 0000000..1aaa9ee
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Manager/ActivityManager.php
@@ -0,0 +1,319 @@
+
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://swisscom.ch
+ */
+class ActivityManager
+{
+ /** Max char length of saved content data */
+ const CONTENT_MAX_LENGTH = 2048;
+
+ /** @var bool If log is enabled */
+ private $enabled = false;
+
+ /** @var Request $request */
+ private $request;
+
+ /** @var array */
+ private $configurations;
+
+ /** @var AuditTracking */
+ private $document;
+
+ /** @var array Events that shall be stored */
+ private $events = [];
+
+ /** @var string */
+ private $globalRequestLocation = '';
+
+ /**
+ * DBActivityListener constructor.
+ *
+ * @param RequestStack $requestStack Sf request data
+ * @param AuditTracking $document DocumentCollection for event
+ */
+ public function __construct(
+ RequestStack $requestStack,
+ AuditTracking $document
+ ) {
+ $this->request = $requestStack ? $requestStack->getCurrentRequest() : false;
+ $this->document = $document;
+ }
+
+ /**
+ * Set permission and access configuration
+ *
+ * @param array $configurations key value config
+ * @return void
+ */
+ public function setConfiguration(array $configurations)
+ {
+ $this->configurations = $configurations;
+ if ($this->runTracking()) {
+ $this->enabled = true;
+ }
+ }
+
+ /**
+ * Return casted value from configuration.
+ *
+ * @param string $key Configuration key
+ * @param string $cast Type of object is expected to be returned
+ * @return int|string|bool|array
+ * @throws ParameterNotFoundException
+ */
+ public function getConfigValue($key, $cast = 'string')
+ {
+ if (array_key_exists($key, $this->configurations)) {
+ if ('bool' == $cast) {
+ return (boolean) $this->configurations[$key];
+ }if ('array' == $cast) {
+ return (array) $this->configurations[$key];
+ } elseif ('string' == $cast) {
+ return (string) $this->configurations[$key];
+ } elseif ('int' == $cast) {
+ return (int) $this->configurations[$key];
+ }
+ }
+ throw new ParameterNotFoundException('ActivityManager could not find required configuration: '.$key);
+ }
+
+ /**
+ * Check if this the Call has to be logged
+ *
+ * @return bool
+ */
+ private function runTracking()
+ {
+ //Ignore if no request, import fixtures.
+ if (!$this->request) {
+ return false;
+ }
+
+ // Check if enable
+ if (!$this->getConfigValue('log_enabled', 'bool')) {
+ return false;
+ }
+
+ // We never log tracking service calls
+ $excludeUrls = $this->getConfigValue('exlude_urls', 'array');
+ if ($excludeUrls) {
+ $currentUrl = $this->request->getRequestUri();
+ foreach ($excludeUrls as $url) {
+ if (substr($currentUrl, 0, strlen($url)) == $url) {
+ return false;
+ }
+ }
+ }
+
+ // Check if we wanna log test and localhost calls
+ if (!$this->getConfigValue('log_test_calls', 'bool')
+ && !in_array($this->request->getHost(), ['localhost', '127.0.0.1'])) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Incoming request done by user
+ * @param Request $request sf response priority 1
+ * @return void
+ */
+ public function registerRequestEvent(Request $request)
+ {
+ if (!$this->enabled) {
+ return;
+ }
+ // Check if this request event shall be registered
+ $saveEvents = $this->getConfigValue('requests', 'array');
+ $method = $request->getMethod();
+ $this->globalRequestLocation = $request->getRequestUri();
+ if (!in_array($method, $saveEvents)) {
+ return;
+ }
+
+ $content = substr($request->getContent(), 0, self::CONTENT_MAX_LENGTH);
+
+ $data = ['ip' => $request->getClientIp()];
+
+ if ($this->getConfigValue('request_headers', 'bool')) {
+ $data['headers'] = $request->headers->all();
+ }
+ if ($length=$this->getConfigValue('request_content', 'int')) {
+ $cnt = mb_check_encoding($content, 'UTF-8') ? $content : 'Content omitted, since it is not utf-8';
+ $data['content'] = ($length==1) ? $cnt : substr($cnt, 0, $length);
+ }
+
+ /** @var AuditTracking $event */
+ $event = new $this->document();
+ $event->setAction('request');
+ $event->setType($method);
+ $event->setData((object) $data);
+ $event->setLocation($request->getRequestUri());
+ $event->setCreatedAt(new \DateTime());
+ $this->events[] = $event;
+ }
+
+ /**
+ * The response returned to user
+ *
+ * @param Response $response sf response
+ * @return void
+ */
+ public function registerResponseEvent(Response $response)
+ {
+ if (!$this->enabled) {
+ return;
+ }
+ if (!$this->getConfigValue('response', 'bool')) {
+ return;
+ }
+
+ $data = [];
+ $statusCode = '0';
+
+ if (method_exists($response, 'getStatusCode')) {
+ $statusCode = $response->getStatusCode();
+ }
+ if ($length=$this->getConfigValue('response_content', 'int') && method_exists($response, 'getContent')) {
+ $cnt = mb_check_encoding($response->getContent(), 'UTF-8') ?
+ $response->getContent() : 'Content omitted, since it is not utf-8';
+ $data['content'] = ($length==1) ? $cnt : substr($cnt, 0, $length);
+ }
+ if ($this->getConfigValue('response_content', 'bool')) {
+ $data['header'] = $response->headers->all();
+ }
+
+ // Header links
+ $location = $this->extractHeaderLink($response->headers->get('link'), 'self');
+
+ /** @var AuditTracking $audit */
+ $audit = new $this->document();
+ $audit->setAction('response');
+ $audit->setType($statusCode);
+ $audit->setData((object) $data);
+ $audit->setLocation($location);
+ $audit->setCreatedAt(new \DateTime());
+ $this->events[] = $audit;
+ }
+
+ /**
+ * Capture possible un-handled exceptions in php
+ *
+ * @param \Exception $exception The exception thrown in service.
+ * @return void
+ */
+ public function registerExceptionEvent(\Exception $exception)
+ {
+ if (!$this->enabled) {
+ return;
+ }
+ if (!$this->getConfigValue('exceptions', 'bool')) {
+ return;
+ }
+ $data = (object) [
+ 'message' => $exception->getMessage(),
+ 'trace' => $exception->getTraceAsString()
+ ];
+
+ /** @var AuditTracking $audit */
+ $audit = new $this->document();
+ $audit->setAction('exception');
+ $audit->setType($exception->getCode());
+ $audit->setData($data);
+ $audit->setLocation(get_class($exception));
+ $audit->setCreatedAt(new \DateTime());
+ $this->events[] = $audit;
+ }
+
+ /**
+ * Any database events, update, save or delete
+ *
+ * Available $event->getCollection() would give you the full object.
+ *
+ * @param ModelEvent $event Document object changed
+ * @return void
+ */
+ public function registerDocumentModelEvent(ModelEvent $event)
+ {
+ if (!$this->enabled) {
+ return;
+ }
+ if ((!($dbEvents = $this->getConfigValue('database', 'array')))) {
+ return;
+ }
+ if (!in_array($event->getAction(), $dbEvents)) {
+ return;
+ }
+
+ $data = (object) [
+ 'class' => $event->getCollectionClass()
+ ];
+
+ /** @var AuditTracking $audit */
+ $audit = new $this->document();
+ $audit->setAction($event->getAction());
+ $audit->setType('collection');
+ $audit->setData($data);
+ $audit->setLocation($this->globalRequestLocation);
+ $audit->setCollectionId($event->getCollectionId());
+ $audit->setCollectionName($event->getCollectionName());
+ $audit->setCreatedAt(new \DateTime());
+
+ $this->events[] = $audit;
+ }
+
+ /**
+ * Parse and extract customer header links
+ *
+ * @param string $strHeaderLink sf header links
+ * @param string $extract desired key to be found
+ * @return string
+ */
+ private function extractHeaderLink($strHeaderLink, $extract = 'self')
+ {
+ if (!$strHeaderLink) {
+ return '';
+ }
+
+ $parts = [];
+ foreach (explode(',', $strHeaderLink) as $link) {
+ $link = explode(';', $link);
+ if (count($link)==2) {
+ $parts[str_replace(['rel=','"'], '', trim($link[1]))] = str_replace(['<','>'], '', $link[0]);
+ }
+ }
+
+ return array_key_exists($extract, $parts) ? $parts[$extract] : '';
+ }
+
+ /**
+ * Get events AuditTracking
+ *
+ * @return array
+ */
+ public function getEvents()
+ {
+ return $this->events;
+ }
+}
diff --git a/src/Graviton/AuditTrackingBundle/Manager/StoreManager.php b/src/Graviton/AuditTrackingBundle/Manager/StoreManager.php
new file mode 100644
index 0000000..fb60a12
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Manager/StoreManager.php
@@ -0,0 +1,143 @@
+
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://swisscom.ch
+ */
+class StoreManager
+{
+ const AUDIT_HEADER_KEY = 'x-header-audit-thread';
+
+ /** @var ActivityManager */
+ private $activityManager;
+
+ /** @var Logger */
+ private $logger;
+
+ /** @var DocumentManager */
+ private $documentManager;
+
+ /** @var SecurityUtils */
+ private $securityUtils;
+
+ /**
+ * StoreManager constructor.
+ * @param ActivityManager $activityManager Main activity manager
+ * @param Logger $logger Monolog log service
+ * @param ManagerRegistry $doctrine Doctrine document mapper
+ * @param SecurityUtils $securityUtils Sf Auth token storage
+ */
+ public function __construct(
+ ActivityManager $activityManager,
+ Logger $logger,
+ ManagerRegistry $doctrine,
+ SecurityUtils $securityUtils
+ ) {
+ $this->activityManager = $activityManager;
+ $this->logger = $logger;
+ $this->documentManager = $doctrine->getManager();
+ $this->securityUtils = $securityUtils;
+ }
+
+ /**
+ * Save data to DB
+ * onKernelResponse
+ *
+ * @param FilterResponseEvent $event Sf fired kernel event
+ *
+ * @return void
+ */
+ public function persistEvents(FilterResponseEvent $event)
+ {
+ // No events or no user.
+ if (!($events = $this->activityManager->getEvents())) {
+ $this->logger->debug('AuditTracking:exit-no-events');
+ return;
+ }
+
+ // No events or no user.
+ if (!$this->securityUtils->isSecurityUser()) {
+ $this->logger->debug('AuditTracking:exit-no-user');
+ return;
+ }
+
+ // Check if we wanna log test calls
+ if (!$this->activityManager->getConfigValue('log_test_calls', 'bool')) {
+ if (!$this->securityUtils->isSecurityUser()
+ || !$this->securityUtils->hasRole(SecurityUser::ROLE_CONSULTANT)) {
+ $this->logger->debug('AuditTracking:exit-no-real-user');
+ return;
+ }
+ }
+
+ $thread = $this->securityUtils->getRequestId();
+ $response = $event->getResponse();
+
+ // If request is valid we save it or we do not depending on the exceptions exclude policy
+ if (!$this->activityManager->getConfigValue('log_on_failure', 'bool')) {
+ $excludedStatus = $this->activityManager->getConfigValue('exceptions_exclude', 'array');
+ if (!$response->isSuccessful()
+ && !in_array($response->getStatusCode(), $excludedStatus)) {
+ $this->logger->debug('AuditTracking:exit-on-failure:'.$thread.':'.json_encode($events));
+ return;
+ }
+ }
+
+ $username = $this->securityUtils->getSecurityUsername();
+
+ $saved = false;
+ foreach ($events as $event) {
+ if (!($saved = $this->trackEvent($event, $thread, $username))) {
+ break;
+ }
+ }
+
+ // Set Audit header information
+ if ($saved) {
+ $response->headers->set(self::AUDIT_HEADER_KEY, $thread);
+ }
+ }
+
+ /**
+ * Save the event to DB
+ *
+ * @param AuditTracking $event Performed by user
+ * @param string $thread The thread ID
+ * @param string $username User connected name
+ * @return bool
+ */
+ private function trackEvent($event, $thread, $username)
+ {
+ // Request information
+ $event->setThread($thread);
+ $event->setUsername($username);
+ $saved = true;
+
+ try {
+ $this->documentManager->persist($event);
+ $this->documentManager->flush($event);
+ } catch (\Exception $e) {
+ $this->logger->error('AuditTracking:persist-error:'.$thread.':'.json_encode($event));
+ $saved = false;
+ }
+
+ return $saved;
+ }
+}
diff --git a/src/Graviton/AuditTrackingBundle/Model/AuditTracking.php b/src/Graviton/AuditTrackingBundle/Model/AuditTracking.php
new file mode 100644
index 0000000..71f9542
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Model/AuditTracking.php
@@ -0,0 +1,19 @@
+
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://swisscom.ch
+ */
+class AuditTracking extends DocumentModel
+{
+}
diff --git a/src/Graviton/AuditTrackingBundle/README.md b/src/Graviton/AuditTrackingBundle/README.md
new file mode 100644
index 0000000..2425a98
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/README.md
@@ -0,0 +1,53 @@
+# GravitonAuditTrackingBundle
+
+## Inner Auditing tool bundle
+This tool is meant to run as a hidden service in order to know what each user request or modifies.
+It will not limit nor interfere with the users request but only store the changes and data received.
+* x-header-audit-thread → id-string-uuid
+* Api to list thread: /auditing/?eq(thread,string:id-string-uuid)`
+
+### version
+* `v0.0.1`: 2016/09/22 First version with basic auditing enabled by default, collection changes.
+
+#### Configuration
+* Need Graviton ^v0.76.0, so ModelEvent is fired on Document Updates.
+* Setup configuration in `AuditTracking/Resources/config/parameters.yml`.
+
+```yml
+parameters:
+ graviton_audit_tracking:
+ # General on/off switch
+ log_enabled: true
+ # Localhost and not Real User on/off switch
+ log_test_calls: false
+ # Store request log also on 400 error
+ log_on_failure: false
+ # Request methods to be saved, array PUT,POST,DELETE,PATCH...
+ requests: []
+ # Store full request header request data.
+ request_headers: false
+ # Store full request content body. if true full lenght, can be limited with a integer
+ request_content: false
+ # Store reponse basic information. if true full lenght, can be limited with a integer
+ response: false
+ # Store full response header request data.
+ response_headers: false
+ # Store response body content
+ response_content: false
+ # Store data base events, array of events, insert, update, delete
+ database: ['insert','update','delete']
+ # Store all exception
+ exceptions: false
+ # Exclude header status exceptions code, 400=bad request, form validation
+ exceptions_exclude: [400]
+```
+
+### Testing in Graviton
+* composer require graviton/graviton-service-bundle-audit-tracking
+* Inside graviton load the bundle: GravitonBundleBundle:getBundles - add the load of this new bundle
+* Enable in config the log_test_calls: true ( also, so you use the bundle in dev mode )
+
+### Enabling in a Wrapper
+* Enable in resources/configuration.sh the new bundle: `\\Graviton\\AuditTrackingBundle\\GravitonAuditTrackingBundle`
+* composer require graviton/graviton-service-bundle-audit-tracking
+* sh dev-cleanstart.sh
diff --git a/src/Graviton/AuditTrackingBundle/Repository/AuditTrackingRepository.php b/src/Graviton/AuditTrackingBundle/Repository/AuditTrackingRepository.php
new file mode 100644
index 0000000..61cba44
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Repository/AuditTrackingRepository.php
@@ -0,0 +1,22 @@
+
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://swisscom.ch
+ */
+class AuditTrackingRepository extends DocumentRepository
+{
+}
diff --git a/src/Graviton/AuditTrackingBundle/Resources/config/config.yml b/src/Graviton/AuditTrackingBundle/Resources/config/config.yml
new file mode 100644
index 0000000..94d69b4
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Resources/config/config.yml
@@ -0,0 +1,5 @@
+doctrine_mongodb:
+ document_managers:
+ default:
+ mappings:
+ GravitonAuditTrackingBundle: ~
\ No newline at end of file
diff --git a/src/Graviton/AuditTrackingBundle/Resources/config/doctrine/AuditTracking.mongodb.xml b/src/Graviton/AuditTrackingBundle/Resources/config/doctrine/AuditTracking.mongodb.xml
new file mode 100644
index 0000000..c59c906
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Resources/config/doctrine/AuditTracking.mongodb.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Graviton/AuditTrackingBundle/Resources/config/parameters.yml b/src/Graviton/AuditTrackingBundle/Resources/config/parameters.yml
new file mode 100644
index 0000000..afedfc5
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Resources/config/parameters.yml
@@ -0,0 +1,28 @@
+parameters:
+ graviton_audit_tracking:
+ # General on/off switch
+ log_enabled: true
+ # Localhost and not Real User on/off switch
+ log_test_calls: false
+ # Store request log also on 400 error
+ log_on_failure: false
+ # Request methods to be saved, array PUT,POST,DELETE,PATCH...
+ requests: []
+ # Store full request header request data.
+ request_headers: false
+ # Store full request content body. if true full lenght, can be limited with a integer
+ request_content: false
+ # Store reponse basic information. if true full lenght, can be limited with a integer
+ response: false
+ # Store full response header request data.
+ response_headers: false
+ # Store response body content
+ response_content: false
+ # Store data base events, array of events, insert, update, delete
+ database: ['insert','update','delete']
+ # Store all exception
+ exceptions: false
+ # Exclude header status exceptions code, 400=bad request, form validation
+ exceptions_exclude: [400]
+ # Exlucde listed URLS, array
+ exlude_urls: ["/auditing"]
diff --git a/src/Graviton/AuditTrackingBundle/Resources/config/schema/AuditTracking.json b/src/Graviton/AuditTrackingBundle/Resources/config/schema/AuditTracking.json
new file mode 100644
index 0000000..fff7257
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Resources/config/schema/AuditTracking.json
@@ -0,0 +1,59 @@
+{
+ "x-documentClass": "Graviton\\AuditTrackingBundle\\Document\\AuditTracking",
+ "description": "user Activity log",
+ "x-id-in-post-allowed": false,
+ "title": "User Activity log",
+ "properties": {
+ },
+ "id": {
+ "title": "ID",
+ "description": "Unique identifier"
+ },
+ "thread": {
+ "title": "Unique id per request",
+ "description": "Unique id per request"
+ },
+ "username": {
+ "title": "User id per request",
+ "description": "user id per request"
+ },
+ "action": {
+ "title": "Action executed",
+ "description": "Action done"
+ },
+ "type": {
+ "title": "Type of action",
+ "description": "Type of action"
+ },
+ "location": {
+ "title": "What was done, collection or request uri",
+ "description": "location of action"
+ },
+ "data": {
+ "title": "parameters sent or received",
+ "description": "object data of action"
+ },
+ "collectionId": {
+ "title": "Collection modified",
+ "description": "String name of collection that was modified"
+ },
+ "collectionName": {
+ "title": "Collection ID modified",
+ "description": "String ID of collection modified"
+ },
+ "createdAt": {
+ "title": "Created At",
+ "description": "Timestamp of when record was saved"
+ },
+ "recordOriginModifiable": true,
+ "required": [
+ "thread",
+ "coreId",
+ "action",
+ "type",
+ "location",
+ "createdAt"
+ ],
+ "searchable": [],
+ "readOnlyFields": []
+}
diff --git a/src/Graviton/AuditTrackingBundle/Resources/config/serializer/Document.AuditTracking.yml b/src/Graviton/AuditTrackingBundle/Resources/config/serializer/Document.AuditTracking.yml
new file mode 100644
index 0000000..21446ab
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Resources/config/serializer/Document.AuditTracking.yml
@@ -0,0 +1,8 @@
+Graviton\AuditTrackingBundle\Document\AuditTracking:
+ exclusion_policy: NONE
+ read_only: true
+ properties:
+ data:
+ expose: true
+ accessor:
+ getter: getData
\ No newline at end of file
diff --git a/src/Graviton/AuditTrackingBundle/Resources/config/services.yml b/src/Graviton/AuditTrackingBundle/Resources/config/services.yml
new file mode 100644
index 0000000..4fbc823
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Resources/config/services.yml
@@ -0,0 +1,75 @@
+services:
+ graviton.audit.controller.default:
+ class: Graviton\AuditTrackingBundle\Controller\DefaultController
+ parent: graviton.rest.controller
+ scope: request
+ tags:
+ - { name: graviton.rest, collection: AuditTracking, read-only: true, router-base: /auditing }
+ calls:
+ - [setModel, ['@graviton.audit.model.auditracking']]
+
+ graviton.audit.document.audittracking:
+ class: Graviton\AuditTrackingBundle\Document\AuditTracking
+
+ graviton.audit.repository.audittracking:
+ class: Graviton\AuditTrackingBundle\Repository\AuditTrackingRepository
+ arguments: ["GravitonAuditTrackingBundle:AuditTracking"]
+ factory: ['@doctrine.odm.mongodb.document_manager', getRepository]
+
+ graviton.audit.model.auditracking:
+ class: Graviton\AuditTrackingBundle\Model\AuditTracking
+ parent: graviton.rest.model
+ arguments: ['@graviton.rql.visitor.mongodb']
+ calls:
+ - [setRepository, ['@graviton.audit.repository.audittracking']]
+
+ # Activity Manager to keep all in one place
+ graviton.audit.manager.activity:
+ class: Graviton\AuditTrackingBundle\Manager\ActivityManager
+ arguments:
+ requestStack: '@request_stack'
+ document: '@graviton.audit.document.audittracking'
+ calls:
+ - [setConfiguration, ["%graviton_audit_tracking%"]]
+
+ # Store Manager to save all events into DB
+ graviton.audit.store.activity:
+ class: Graviton\AuditTrackingBundle\Manager\StoreManager
+ arguments:
+ activityManager: '@graviton.audit.manager.activity'
+ logger: '@monolog.logger'
+ doctrine: '@doctrine_mongodb'
+ securityUtils: '@graviton.security.service.utils'
+ tags:
+ - { name: kernel.event_listener, event: kernel.response, method: persistEvents, priority: -2 }
+
+ # Listeners
+ graviton.audit.listener.request:
+ class: Graviton\AuditTrackingBundle\Listener\RequestActivityListener
+ arguments:
+ activityManager: '@graviton.audit.manager.activity'
+ tags:
+ - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 201 }
+
+ graviton.audit.listener.db:
+ class: Graviton\AuditTrackingBundle\Listener\DocumentModelListener
+ arguments:
+ activityManager: '@graviton.audit.manager.activity'
+ tags:
+ - { name: kernel.event_listener, event: document.model.event.insert, method: modelInsert }
+ - { name: kernel.event_listener, event: document.model.event.update, method: modelUpdate }
+ - { name: kernel.event_listener, event: document.model.event.delete, method: modelDelete }
+
+ graviton.audit.listener.response:
+ class: Graviton\AuditTrackingBundle\Listener\ResponseActivityListener
+ arguments:
+ activityManager: '@graviton.audit.manager.activity'
+ tags:
+ - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse, priority: -1 }
+
+ graviton.audit.listener.exception:
+ class: Graviton\AuditTrackingBundle\Listener\ExceptionActivityListener
+ arguments:
+ activityManager: '@graviton.audit.manager.activity'
+ tags:
+ - { name: kernel.event_listener, event: kernel.exception, method: onKernelException, priority: 1 }
\ No newline at end of file
diff --git a/src/Graviton/AuditTrackingBundle/Tests/Controller/DefaultControllerTest.php b/src/Graviton/AuditTrackingBundle/Tests/Controller/DefaultControllerTest.php
new file mode 100644
index 0000000..55163a7
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Tests/Controller/DefaultControllerTest.php
@@ -0,0 +1,140 @@
+
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://swisscom.ch
+ */
+class DefaultControllerTest extends RestTestCase
+{
+ /** Name to be used in test */
+ const TEST_APP_ID = 'audit-id';
+
+ /** @var DocumentManager */
+ private $documentManager;
+
+ /**
+ * Ensure a clean Db for test
+ *
+ * @return void
+ */
+ public function setUp()
+ {
+ // We only delete on first start up.
+ if (!$this->documentManager) {
+ $this->documentManager = $this->getContainer()->get('doctrine_mongodb.odm.default_document_manager');
+
+ /** @var App $app */
+ $app = $this->documentManager->find(get_class(new App()), self::TEST_APP_ID);
+ if ($app) {
+ $this->documentManager->remove($app);
+ $this->documentManager->flush();
+ }
+ }
+ }
+
+ /**
+ * @return \stdClass test object
+ */
+ private function getTestObj()
+ {
+ $new = new \stdClass();
+ $new->id = self::TEST_APP_ID;
+ $new->showInMenu = false;
+ $new->order = 321;
+ $new->name = new \stdClass();
+ $new->name->en = 'audit en language name';
+ $new->name->de = 'audit de language name';
+ return $new;
+ }
+
+ /**
+ * Insert a new APP element
+ *
+ * @return void
+ */
+ public function testInsertItem()
+ {
+ $new = $this->getTestObj();
+
+ $client = static::createRestClient();
+ $client->put('/core/app/'.self::TEST_APP_ID, $new);
+ $response = $client->getResponse();
+ $this->assertEquals(Response::HTTP_NO_CONTENT, $response->getStatusCode());
+
+ // Lets check if the Audit Event was there and in header
+ $header = $response->headers->get(StoreManager::AUDIT_HEADER_KEY);
+ $this->assertNotEmpty($header, 'The expected audit header was not set as expected');
+
+ // Get the data and hcek for a inserted new event
+ $client = static::createRestClient();
+ $client->request('GET', '/auditing/?eq(thread,string:'.$header.')');
+ $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());
+ $results = $client->getResults();
+
+ $this->assertEquals(1, count($results), 'By default, only one result. Only insert into DB');
+ $event = $results[0];
+ $this->assertEquals('insert', $event->{'action'});
+ $this->assertEquals('collection', $event->{'type'});
+ $this->assertEquals('App', $event->{'collectionName'});
+ $this->assertEquals(self::TEST_APP_ID, $event->{'collectionId'});
+ }
+
+ /**
+ * Update an APP element
+ *
+ * @return void
+ */
+ public function testUpdateItem()
+ {
+ $new = $this->getTestObj();
+
+ $client = static::createRestClient();
+ $client->put('/core/app/'.self::TEST_APP_ID, $new);
+ $response = $client->getResponse();
+ $this->assertEquals(Response::HTTP_NO_CONTENT, $response->getStatusCode());
+
+ $client = static::createRestClient();
+ $patchJson = json_encode(
+ [
+ [
+ 'op' => 'replace',
+ 'path' => '/name/en',
+ 'value' => 'Test App audit Patched'
+ ]
+ ]
+ );
+ $client->request('PATCH', '/core/app/' . self::TEST_APP_ID, [], [], [], $patchJson);
+ $response = $client->getResponse();
+ $this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
+
+ // Lets check if the Audit Event was there and in header
+ $header = $response->headers->get(StoreManager::AUDIT_HEADER_KEY);
+ $this->assertNotEmpty($header, 'The expected audit header was not set as expected');
+
+ // Get the data and hcek for a inserted new event
+ $client = static::createRestClient();
+ $client->request('GET', '/auditing/?eq(thread,string:'.$header.')');
+ $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());
+ $results = $client->getResults();
+
+ $this->assertEquals(1, count($results), 'By default, only one result. Only basic logs are active');
+ $event = $results[0];
+ $this->assertEquals('update', $event->{'action'});
+ $this->assertEquals('collection', $event->{'type'});
+ $this->assertEquals('App', $event->{'collectionName'});
+ $this->assertEquals(self::TEST_APP_ID, $event->{'collectionId'});
+ }
+}
diff --git a/src/Graviton/AuditTrackingBundle/Tests/Manager/ActivityManagerTest.php b/src/Graviton/AuditTrackingBundle/Tests/Manager/ActivityManagerTest.php
new file mode 100644
index 0000000..325cf22
--- /dev/null
+++ b/src/Graviton/AuditTrackingBundle/Tests/Manager/ActivityManagerTest.php
@@ -0,0 +1,88 @@
+
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://swisscom.ch
+ */
+class ActivityManagerTest extends RestTestCase
+{
+ /** @var ActivityManager */
+ private $activityManager;
+
+ /**
+ * Ensure a clean Db for test
+ *
+ * @return void
+ */
+ public function setUp()
+ {
+ $this->activityManager = $this->getContainer()->get('graviton.audit.manager.activity');
+ }
+
+ /**
+ * Verifies the correct behavior of:
+ * setConfiguration()
+ * getConfigValue()
+ *
+ * @return void
+ */
+ public function testGetConfigValue()
+ {
+ $keys = [
+ 'bool_true' => true,
+ 'bool_false' => false,
+ 'int_1' => 1,
+ 'int' => 14,
+ 'string_a' => "simple string",
+ 'array_a' => ['item1', 'item2']
+ ];
+
+ $this->activityManager->setConfiguration($keys);
+
+ foreach ($keys as $key => $val) {
+ $type = explode('_', $key);
+ $value = $this->activityManager->getConfigValue($key, $type[0]);
+ $this->assertEquals($value, $val, 'Key '.$key.' was not handled as expected');
+ }
+ }
+
+ /**
+ * Verifies the correct behavior of:
+ * extractHeaderLink()
+ *
+ * @return void
+ */
+ public function testGetHeader()
+ {
+ $method = $this->getPrivateClassMethod(get_class($this->activityManager), 'extractHeaderLink');
+
+ // Double links
+ $args = ['; rel="self",; rel="next"', 'self'];
+ $result = $method->invokeArgs($this->activityManager, $args);
+ $this->assertEquals('http://localhost/core/app/bap', $result);
+
+ // Simple link
+ $args = ['; rel="self"', 'self'];
+ $result = $method->invokeArgs($this->activityManager, $args);
+ $this->assertEquals('http://localhost/core/app/bap/', $result);
+
+ // Triple links
+ $args = [
+ '; rel="next",'.
+ '; rel="last",'.
+ '; rel="self"',
+ 'self'];
+ $result = $method->invokeArgs($this->activityManager, $args);
+ $this->assertEquals('http://localhost/core/app/?limit(1)', $result);
+ }
+}