diff --git a/.github/blunderbuss.yml b/.github/blunderbuss.yml
new file mode 100644
index 0000000000..a92a327c2c
--- /dev/null
+++ b/.github/blunderbuss.yml
@@ -0,0 +1,51 @@
+assign_issues_by:
+- labels:
+ - 'api: bigtable'
+ - 'api: datastore'
+ - 'api: firestore'
+ to:
+ - GoogleCloudPlatform/cloud-native-db-dpes
+- labels:
+ - 'api: cloudsql'
+ to:
+ - GoogleCloudPlatform/infra-db-sdk
+- labels:
+ - 'api: cloudiot'
+ to:
+ - laszlokorossy
+- labels:
+ - 'api: spanner'
+ to:
+ - shivgautam
+- labels:
+ - 'api: parametermanager'
+ to:
+ - GoogleCloudPlatform/cloud-parameters-team
+- labels:
+ - "api: modelarmor"
+ to:
+ - GoogleCloudPlatform/cloud-modelarmor-team
+
+assign_prs_by:
+- labels:
+ - 'api: bigtable'
+ - 'api: datastore'
+ - 'api: firestore'
+ to:
+ - GoogleCloudPlatform/cloud-native-db-dpes
+- labels:
+ - 'api: cloudsql'
+ to:
+ - GoogleCloudPlatform/infra-db-sdk
+- labels:
+ - 'api: cloudiot'
+ to:
+ - laszlokorossy
+- labels:
+ - 'api: parametermanager'
+ to:
+ - GoogleCloudPlatform/cloud-parameters-team
+- labels:
+ - "api: modelarmor"
+ to:
+ - GoogleCloudPlatform/cloud-modelarmor-team
diff --git a/.github/snippet-bot.yml b/.github/snippet-bot.yml
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/.github/snippet-bot.yml
@@ -0,0 +1 @@
+
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
new file mode 100644
index 0000000000..7a211eadda
--- /dev/null
+++ b/.github/workflows/lint.yml
@@ -0,0 +1,39 @@
+name: Lint
+
+on:
+ push:
+ branches: [ main ]
+ pull_request:
+
+jobs:
+ styles:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v6
+ - name: Install PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: '8.2'
+
+ - name: Run Script
+ run: testing/run_cs_check.sh
+
+ staticanalysis:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v6
+ - name: Install PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: '8.2'
+ - name: Get changed files
+ id: changedFiles
+ uses: tj-actions/changed-files@v47
+ - name: Run Script
+ run: |
+ composer install -d testing/
+ git fetch --no-tags --prune --depth=5 origin main
+ bash testing/run_staticanalysis_check.sh
+ env:
+ FILES_CHANGED: ${{ steps.changedFiles.outputs.all_changed_files }}
+ PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 2d57ea65cb..7d37bad4a6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,8 +2,14 @@
*~
*.iml
composer.phar
+composer.lock
vendor/
credentials.*
**/vendor/
**/build/
.php_cs.cache
+.php-cs-fixer.cache
+.vscode/
+.kokoro/secrets.sh
+.phpunit.result.cache
+.DS_Store
diff --git a/.kokoro/common.cfg b/.kokoro/common.cfg
new file mode 100644
index 0000000000..331cabe7eb
--- /dev/null
+++ b/.kokoro/common.cfg
@@ -0,0 +1,16 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Download trampoline resources. These will be in ${KOKORO_GFILE_DIR}
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
+
+# Download credentials from Cloud Storage.
+gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/php-docs-samples"
+
+# All builds use the trampoline script to run in docker.
+build_file: "php-docs-samples/.kokoro/trampoline.sh"
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_BUILD_FILE"
+ value: "github/php-docs-samples/.kokoro/system_tests.sh"
+}
diff --git a/.kokoro/deploy_gae.cfg b/.kokoro/deploy_gae.cfg
new file mode 100644
index 0000000000..e168779678
--- /dev/null
+++ b/.kokoro/deploy_gae.cfg
@@ -0,0 +1,19 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/php81"
+}
+
+# Run the deployment tests
+env_vars: {
+ key: "RUN_DEPLOYMENT_TESTS"
+ value: "true"
+}
+
+# Only run deployment tests for App Engine Standard
+env_vars: {
+ key: "TEST_DIRECTORIES"
+ value: "appengine/standard"
+}
diff --git a/.kokoro/deploy_gcf.cfg b/.kokoro/deploy_gcf.cfg
new file mode 100644
index 0000000000..40fa84403d
--- /dev/null
+++ b/.kokoro/deploy_gcf.cfg
@@ -0,0 +1,19 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/php81"
+}
+
+# Run the deployment tests
+env_vars: {
+ key: "RUN_DEPLOYMENT_TESTS"
+ value: "true"
+}
+
+# Only run deployment tests for Cloud Functions
+env_vars: {
+ key: "TEST_DIRECTORIES"
+ value: "functions"
+}
diff --git a/.kokoro/deploy_misc.cfg b/.kokoro/deploy_misc.cfg
new file mode 100644
index 0000000000..12d103d622
--- /dev/null
+++ b/.kokoro/deploy_misc.cfg
@@ -0,0 +1,19 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/php81"
+}
+
+# Run the deployment tests
+env_vars: {
+ key: "RUN_DEPLOYMENT_TESTS"
+ value: "true"
+}
+
+# Run deployment tests for Cloud Run, EventArc Endpoints
+env_vars: {
+ key: "TEST_DIRECTORIES"
+ value: "endpoints eventarc run"
+}
diff --git a/.kokoro/php81.cfg b/.kokoro/php81.cfg
new file mode 100644
index 0000000000..1b7a81d36a
--- /dev/null
+++ b/.kokoro/php81.cfg
@@ -0,0 +1,17 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/php81"
+}
+
+# Give the docker image a unique project ID and credentials per PHP version
+env_vars: {
+ key: "GOOGLE_ALT_PROJECT_ID"
+ value: "php-docs-samples-kokoro1"
+}
+env_vars: {
+ key: "GOOGLE_ALT_CREDENTIALS_FILENAME"
+ value: "service-account-kokoro1.json"
+}
diff --git a/.kokoro/php82.cfg b/.kokoro/php82.cfg
new file mode 100644
index 0000000000..824663d40a
--- /dev/null
+++ b/.kokoro/php82.cfg
@@ -0,0 +1,17 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/php82"
+}
+
+# Give the docker image a unique project ID and credentials per PHP version
+env_vars: {
+ key: "GOOGLE_ALT_PROJECT_ID"
+ value: "php-docs-samples-kokoro3"
+}
+env_vars: {
+ key: "GOOGLE_ALT_CREDENTIALS_FILENAME"
+ value: "service-account-kokoro3.json"
+}
diff --git a/.kokoro/php83.cfg b/.kokoro/php83.cfg
new file mode 100644
index 0000000000..4e05f8133a
--- /dev/null
+++ b/.kokoro/php83.cfg
@@ -0,0 +1,17 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/php83"
+}
+
+# Give the docker image a unique project ID and credentials per PHP version
+env_vars: {
+ key: "GOOGLE_ALT_PROJECT_ID"
+ value: "php-docs-samples-kokoro2"
+}
+env_vars: {
+ key: "GOOGLE_ALT_CREDENTIALS_FILENAME"
+ value: "service-account-kokoro2.json"
+}
diff --git a/.kokoro/php_rest.cfg b/.kokoro/php_rest.cfg
new file mode 100644
index 0000000000..1e7cfc90d6
--- /dev/null
+++ b/.kokoro/php_rest.cfg
@@ -0,0 +1,13 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/php81"
+}
+
+# Set this project to run REST tests only
+env_vars: {
+ key: "RUN_REST_TESTS_ONLY"
+ value: "true"
+}
diff --git a/.kokoro/secrets-example.sh b/.kokoro/secrets-example.sh
new file mode 100644
index 0000000000..74c4167519
--- /dev/null
+++ b/.kokoro/secrets-example.sh
@@ -0,0 +1,159 @@
+#!/bin/bash
+
+# This file contains the necessary environment variables for the kokoro
+# tests. Contact the repository owners if you need access to view or modify
+# the variables.
+#
+# Run the following gcloud command to decrypt secrets.sh.enc as follows:
+#
+# gcloud kms decrypt --location=global --keyring=ci --key=ci \
+# --ciphertext-file=.kokoro/secrets.sh.enc \
+# --plaintext-file=.kokoro/secrets.sh
+#
+# Then run `source .kokoro/secrets.sh`
+#
+# To modify the file, edit .kokoro/secrets.sh then use the following gcloud
+# command to encrypt it with the changes:
+#
+# gcloud kms encrypt --location=global --keyring=ci --key=ci \
+# --ciphertext-file=.kokoro/secrets.sh.enc \
+# --plaintext-file=.kokoro/secrets.sh
+
+# General
+export GOOGLE_PROJECT_ID=
+export GOOGLE_STORAGE_BUCKET=$GOOGLE_PROJECT_ID
+export GOOGLE_PROJECT_NUMBER=
+export GOOGLE_CLIENT_ID=
+export GOOGLE_CLIENT_SECRET=
+export GCLOUD_PROJECT=$GOOGLE_PROJECT_ID
+# For running tests in separate projects
+export GOOGLE_ALT_PROJECT_ID=$GOOGLE_PROJECT_ID
+
+# AppEngine
+export MAILJET_APIKEY=
+export MAILJET_SECRET=
+export MAILGUN_APIKEY=
+export MAILGUN_DOMAIN=
+export MAILGUN_RECIPIENT=
+export SENDGRID_APIKEY=
+export SENDGRID_SENDER=
+export TWILIO_ACCOUNT_SID=
+export TWILIO_AUTH_TOKEN=
+export TWILIO_FROM_NUMBER=
+export TWILIO_TO_NUMBER=
+
+# BigQuery
+export GOOGLE_BIGQUERY_DATASET=test_dataset
+export GOOGLE_BIGQUERY_TABLE=test_table
+
+# CloudSQL
+export CLOUDSQL_CONNECTION_NAME_MYSQL=
+export CLOUDSQL_CONNECTION_NAME_POSTGRES=
+export CLOUDSQL_CONNECTION_NAME=$CLOUDSQL_CONNECTION_NAME_MYSQL
+export CLOUDSQL_DATABASE=
+export CLOUDSQL_USER=
+export CLOUDSQL_PASSWORD=
+export MYSQL_DSN=
+export MYSQL_DATABASE=
+export MYSQL_USER=
+export MYSQL_PASSWORD=
+export POSTGRES_DSN=
+export POSTGRES_DATABASE=
+export POSTGRES_USER=
+export POSTGRES_PASSWORD=
+export SQLSERVER_DSN=
+export SQLSERVER_DATABASE=
+export SQLSERVER_USER=
+export SQLSERVER_PASSWORD=
+export DB_SOCKET_DIR=
+
+# Datastore
+export CLOUD_DATASTORE_NAMESPACE=
+export DATASTORE_EVENTUALLY_CONSISTENT_RETRY_COUNT=
+
+# DLP
+export DLP_DEID_WRAPPED_KEY=
+export DLP_DEID_KEY_NAME=projects/$GOOGLE_PROJECT_ID/locations/global/keyRings/ci/cryptoKeys/ci
+
+# DocumentAI
+export GOOGLE_DOCUMENTAI_PROCESSOR_ID=
+
+# Firestore
+export FIRESTORE_PROJECT_ID=
+
+# IAP
+export IAP_CLIENT_ID=
+export IAP_PROJECT_ID=
+export IAP_PROJECT_NUMBER=
+export IAP_URL=
+
+# IAM
+export GOOGLE_IAM_USER=
+
+# KMS
+export GOOGLE_KMS_KEYRING=
+export GOOGLE_KMS_CRYPTOKEY=
+export GOOGLE_KMS_CRYPTOKEY_ALTERNATE=
+export GOOGLE_KMS_SERVICEACCOUNTEMAIL=
+
+# Memorystore
+export REDIS_HOST=
+export REDIS_PORT=
+
+# Model Armor
+export MA_FOLDER_ID=
+export MA_ORG_ID=
+
+# PubSub
+export GOOGLE_PUBSUB_SUBSCRIPTION=php-example-subscription
+export GOOGLE_PUBSUB_TOPIC=php-example-topic
+# GOOGLE_PUBSUB_BIGQUERY_TABLE excludes project_id
+# for example if table is ${PROJECT_ID}.pubsub_test_dataset.pubsub_test_table
+# the value of GOOGLE_PUBSUB_BIGQUERY_TABLE should be pubsub_test_dataset.pubsub_test_table
+export GOOGLE_PUBSUB_BIGQUERY_TABLE=
+
+# Security Center
+export GOOGLE_ORGANIZATION_ID=
+export GOOGLE_SECURITYCENTER_PUBSUB_TOPIC=
+
+# Spanner
+export GOOGLE_SPANNER_INSTANCE_ID=
+export GOOGLE_SPANNER_DATABASE_ID=test-database
+
+# Storage
+export GOOGLE_STORAGE_OBJECT=storage/test_data.csv
+export GOOGLE_STORAGE_KMS_KEYNAME=projects/$GOOGLE_PROJECT_ID/locations/us/keyRings/$GOOGLE_KMS_KEYRING/cryptoKeys/storage-bucket
+export GOOGLE_REQUESTER_PAYS_STORAGE_BUCKET=$GOOGLE_STORAGE_BUCKET
+
+# Tasks
+export CLOUD_TASKS_APPENGINE_QUEUE=
+export CLOUD_TASKS_LOCATION=
+export CLOUD_TASKS_PULL_QUEUE=
+
+# Redislabs Memcache
+export MEMCACHE_USERNAME=
+export MEMCACHE_PASSWORD=
+export MEMCACHE_ENDPOINT=
+
+# WordPress
+export WORDPRESS_DB_INSTANCE_NAME=
+export WORDPRESS_DB_USER=$CLOUDSQL_USER
+export WORDPRESS_DB_PASSWORD=$CLOUDSQL_PASSWORD
+
+# Laravel
+export LARAVEL_CLOUDSQL_CONNECTION_NAME=$CLOUDSQL_CONNECTION_NAME_MYSQL
+export LARAVEL_DB_DATABASE=laravel
+export LARAVEL_DB_USERNAME=$CLOUDSQL_USER
+export LARAVEL_DB_PASSWORD=$CLOUDSQL_PASSWORD
+
+# Symfony
+export SYMFONY_CLOUDSQL_CONNECTION_NAME=$CLOUDSQL_CONNECTION_NAME_MYSQL
+export SYMFONY_DB_DATABASE=symfony
+export SYMFONY_DB_USERNAME=$CLOUDSQL_USER
+export SYMFONY_DB_PASSWORD=$CLOUDSQL_PASSWORD
+
+# Functions
+export BLURRED_BUCKET_NAME=$GCLOUD_PROJECT-functions
+
+# Google Analytics APIs
+export GA_TEST_PROPERTY_ID=
diff --git a/.kokoro/secrets.sh.enc b/.kokoro/secrets.sh.enc
new file mode 100644
index 0000000000..cf97be8bf8
Binary files /dev/null and b/.kokoro/secrets.sh.enc differ
diff --git a/.kokoro/system_tests.sh b/.kokoro/system_tests.sh
new file mode 100755
index 0000000000..5c286a2ad1
--- /dev/null
+++ b/.kokoro/system_tests.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+
+# Copyright 2017 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -e
+
+if [ "${BASH_DEBUG}" = "true" ]; then
+ set -x
+fi
+
+# Kokoro directory for running these samples
+cd github/php-docs-samples
+
+export GOOGLE_APPLICATION_CREDENTIALS=$KOKORO_GFILE_DIR/service-account.json
+if [ -n "$GOOGLE_ALT_CREDENTIALS_FILENAME" ]; then
+ export GOOGLE_ALT_APPLICATION_CREDENTIALS=$KOKORO_GFILE_DIR/$GOOGLE_ALT_CREDENTIALS_FILENAME
+fi
+
+export PATH="$PATH:/opt/composer/vendor/bin:/root/google-cloud-sdk/bin"
+
+# export the secrets
+if [ -f ${GOOGLE_APPLICATION_CREDENTIALS} ]; then
+ gcloud auth activate-service-account \
+ --key-file "${GOOGLE_APPLICATION_CREDENTIALS}" \
+ --project $(cat "${GOOGLE_APPLICATION_CREDENTIALS}" | jq -r .project_id)
+ gcloud kms decrypt \
+ --location=global \
+ --keyring=ci \
+ --key=ci \
+ --ciphertext-file=.kokoro/secrets.sh.enc \
+ --plaintext-file=.kokoro/secrets.sh
+fi
+
+# Unencrypt and extract secrets
+source .kokoro/secrets.sh
+
+mkdir -p build/logs
+
+export PULL_REQUEST_NUMBER=$KOKORO_GITHUB_PULL_REQUEST_NUMBER
+
+# If we are running REST tests, disable gRPC
+if [ "${RUN_REST_TESTS_ONLY}" = "true" ]; then
+ GRPC_INI=$(php -i | grep grpc.ini | sed 's/^Additional .ini files parsed => //g' | sed 's/,*$//g' )
+ mv $GRPC_INI "${GRPC_INI}.disabled"
+fi
+
+# Install global test dependencies
+composer install -d testing/
+
+# Configure the current directory as a safe directory
+git config --global --add safe.directory $(pwd)
+
+# Run tests
+bash testing/run_test_suite.sh
diff --git a/.kokoro/trampoline.sh b/.kokoro/trampoline.sh
new file mode 100755
index 0000000000..6e293e638b
--- /dev/null
+++ b/.kokoro/trampoline.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+# Copyright 2017 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+python3 "${KOKORO_GFILE_DIR}/trampoline_v1.py"
diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php
new file mode 100644
index 0000000000..04464fb557
--- /dev/null
+++ b/.php-cs-fixer.dist.php
@@ -0,0 +1,43 @@
+setRules([
+ '@PSR2' => true,
+ 'concat_space' => ['spacing' => 'one'],
+ 'no_unused_imports' => true,
+ 'whitespace_after_comma_in_array' => true,
+ 'method_argument_space' => [
+ 'keep_multiple_spaces_after_comma' => true,
+ 'on_multiline' => 'ignore'
+ ],
+ 'return_type_declaration' => [
+ 'space_before' => 'none'
+ ],
+ // only converts simple strings in double quotes to single quotes
+ // ignores strings using variables, escape characters or single quotes inside
+ 'single_quote' => true,
+ // there should be a single space b/w the cast and it's operand
+ 'cast_spaces' => ['space' => 'single'],
+ // there shouldn't be any trailing whitespace at the end of a non-blank line
+ 'no_trailing_whitespace' => true,
+ // there shouldn't be any trailing whitespace at the end of a blank line
+ 'no_whitespace_in_blank_line' => true,
+ // there should be a space around binary operators like (=, => etc)
+ 'binary_operator_spaces' => ['default' => 'single_space'],
+ // deals with rogue empty blank lines
+ 'no_extra_blank_lines' => ['tokens' => ['extra']],
+ // reduces multi blank lines b/w phpdoc description and @param to a single line
+ // NOTE: Doesn't add a blank line if none exist
+ 'phpdoc_trim_consecutive_blank_line_separation' => true,
+ ])
+ ->setFinder(
+ PhpCsFixer\Finder::create()
+ ->in(__DIR__)
+ ->exclude(['generated'])
+ )
+;
+
+return $config;
diff --git a/.php_cs b/.php_cs
deleted file mode 100644
index 3cd1a16a01..0000000000
--- a/.php_cs
+++ /dev/null
@@ -1,17 +0,0 @@
-in(__DIR__)
-;
-
-return Symfony\CS\Config\Config::create()
- ->level(Symfony\CS\FixerInterface::PSR2_LEVEL)
- ->fixers([
- 'concat_with_spaces',
- 'unused_use',
- 'trailing_spaces',
- 'indentation',
- '-psr0'
- ])
- ->finder($finder)
-;
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 1c2fc460d0..0000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright 2015 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-branches:
- only:
- - master
-
-language: php
-
-matrix:
- include:
- - php: 5.6
- env: RUN_DEVSERVER_TESTS=true RUN_CS_FIXER=true
- - php: 7.0
-
-env:
- global:
- - GOOGLE_APPLICATION_CREDENTIALS=$TRAVIS_BUILD_DIR/credentials.json
- - GOOGLE_VERSION_ID=$TRAVIS_JOB_ID
- - PATH=${HOME}/google-cloud-sdk/bin:${PATH}
- - PHP_CGI_PATH=/home/travis/.phpenv/shims/php-cgi
- - TEST_BUILD_DIR=$TRAVIS_BUILD_DIR
-
-before_install:
- - pushd ${HOME}
- - git clone https://github.com/GoogleCloudPlatform/php-tools.git
- - php php-tools/scripts/dump_credentials.php
- - travis_retry php-tools/scripts/install_test_deps.sh
- - popd
- - mkdir -p build/logs
-
-script:
- - testing/run_test_suite.sh
-
-after_success:
- - composer require "satooshi/php-coveralls:^1.0"
- - travis_retry php vendor/bin/coveralls -v
diff --git a/CODEOWNERS b/CODEOWNERS
new file mode 100644
index 0000000000..043253db51
--- /dev/null
+++ b/CODEOWNERS
@@ -0,0 +1,58 @@
+# Code owners file
+
+# This file controls who is tagged for review for any given pull request
+
+#
+
+# For syntax help see
+
+#
+
+# The php-admins team is the default owner for anything not
+
+# explicitly taken by someone else
+
+* @GoogleCloudPlatform/php-samples-reviewers @GoogleCloudPlatform/cloud-samples-infra
+
+# Kokoro
+
+.kokoro @GoogleCloudPlatform/php-admins
+
+/bigtable/**/*.php @GoogleCloudPlatform/cloud-native-db-dpes @GoogleCloudPlatform/php-samples-reviewers
+/cloud_sql/**/*.php @GoogleCloudPlatform/infra-db-sdk @GoogleCloudPlatform/php-samples-reviewers
+/datastore/**/*.php @GoogleCloudPlatform/cloud-native-db-dpes @GoogleCloudPlatform/php-samples-reviewers
+/firestore/**/*.php @GoogleCloudPlatform/cloud-native-db-dpes @GoogleCloudPlatform/php-samples-reviewers
+/storage/ @GoogleCloudPlatform/gcs-sdk-team @GoogleCloudPlatform/php-samples-reviewers
+/spanner/ @GoogleCloudPlatform/api-spanner @GoogleCloudPlatform/php-samples-reviewers
+/secretmanager/ @GoogleCloudPlatform/php-samples-reviewers @GoogleCloudPlatform/cloud-secrets-team
+/parametermanager/ @GoogleCloudPlatform/php-samples-reviewers @GoogleCloudPlatform/cloud-secrets-team @GoogleCloudPlatform/cloud-parameters-team
+/modelarmor/ @GoogleCloudPlatform/php-samples-reviewers @GoogleCloudPlatform/cloud-modelarmor-team
+
+# Serverless, Orchestration, DevOps
+
+/appengine/ @GoogleCloudPlatform/torus-dpe @GoogleCloudPlatform/php-samples-reviewers
+/functions/ @GoogleCloudPlatform/torus-dpe @GoogleCloudPlatform/php-samples-reviewers
+/run/ @GoogleCloudPlatform/torus-dpe @GoogleCloudPlatform/php-samples-reviewers
+/eventarc/ @GoogleCloudPlatform/torus-dpe @GoogleCloudPlatform/php-samples-reviewers
+
+# DLP samples owned by DLP team
+
+/dlp/ @GoogleCloudPlatform/googleapis-dlp
+
+# Brent is taking ownership of these samples as they are not supported by the ML team
+
+/dialogflow/ @bshaffer
+/language/ @bshaffer
+/speech/ @bshaffer
+/translate/ @bshaffer
+/texttospeech/ @bshaffer
+/vision/ @bshaffer
+/video/ @bshaffer
+
+# Compute samples owned by Remik
+
+/compute/cloud-client/ @rsamborski
+
+# Deprecated
+
+/iot/ @GoogleCloudPlatform/php-samples-reviewers
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000000..46b2a08ea6
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,43 @@
+# Contributor Code of Conduct
+
+As contributors and maintainers of this project,
+and in the interest of fostering an open and welcoming community,
+we pledge to respect all people who contribute through reporting issues,
+posting feature requests, updating documentation,
+submitting pull requests or patches, and other activities.
+
+We are committed to making participation in this project
+a harassment-free experience for everyone,
+regardless of level of experience, gender, gender identity and expression,
+sexual orientation, disability, personal appearance,
+body size, race, ethnicity, age, religion, or nationality.
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery
+* Personal attacks
+* Trolling or insulting/derogatory comments
+* Public or private harassment
+* Publishing other's private information,
+such as physical or electronic
+addresses, without explicit permission
+* Other unethical or unprofessional conduct.
+
+Project maintainers have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct.
+By adopting this Code of Conduct,
+project maintainers commit themselves to fairly and consistently
+applying these principles to every aspect of managing this project.
+Project maintainers who do not follow or enforce the Code of Conduct
+may be permanently removed from the project team.
+
+This code of conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community.
+
+Instances of abusive, harassing, or otherwise unacceptable behavior
+may be reported by opening an issue
+or contacting one or more of the project maintainers.
+
+This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0,
+available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6116637e8b..c1f62d50fd 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -9,11 +9,11 @@ Please fill out either the individual or corporate Contributor License Agreement
(CLA).
* If you are an individual writing original source code and you're sure you
- own the intellectual property, then you'll need to sign an [individual CLA]
- (https://developers.google.com/open-source/cla/individual).
+ own the intellectual property, then you'll need to sign an
+ [individual CLA](https://developers.google.com/open-source/cla/individual).
* If you work for a company that wants to allow you to contribute your work,
- then you'll need to sign a [corporate CLA]
- (https://developers.google.com/open-source/cla/corporate).
+ then you'll need to sign a
+ [corporate CLA](https://developers.google.com/open-source/cla/corporate).
Follow either of the two links above to access the appropriate CLA and
instructions for how to sign and return it. Once we receive it, we'll be able to
@@ -21,21 +21,98 @@ accept your pull requests.
## Contributing A Patch
-1. Submit an issue describing your proposed change to the repo in question.
+1. Submit an issue describing your proposed change.
1. The repo owner will respond to your issue promptly.
1. If your proposed change is accepted, and you haven't already done so, sign a
Contributor License Agreement (see details above).
-1. Fork the desired repo, develop and test your code changes.
+1. Fork this repo, develop and test your code changes.
1. Ensure that your code adheres to the existing style in the sample to which
you are contributing.
1. Ensure that your code has an appropriate set of unit tests which all pass.
- Set up [Travis](./TRAVIS.md) to run the unit tests on your fork.
1. Submit a pull request.
+## Writing a new sample
+
+Write samples according to the [sample style guide](https://googlecloudplatform.github.io/samples-style-guide/).
+
+## Testing your code changes.
+
+### Install dependencies
+
+To run the tests in a samples directory, you will need to install
+[Composer](http://getcomposer.org/doc/00-intro.md).
+
+First install the testing dependencies which are shared across all samples:
+
+```
+composer install -d testing/
+```
+
+Next, install the dependencies for the individual sample you're testing:
+
+```
+SAMPLES_DIRECTORY=translate
+cd $SAMPLES_DIRECTORY
+composer install
+```
+
+### Environment variables
+Some tests require specific environment variables to run. PHPUnit will skip the tests
+if these environment variables are not found. Run `phpunit -v` for a message detailing
+which environment variables are missing. Then you can set those environment variables
+to run against any sample project as follows:
+
+```
+export GOOGLE_PROJECT_ID=YOUR_PROJECT_ID
+export GOOGLE_STORAGE_BUCKET=YOUR_BUCKET
+```
+
+If you have access to the Google Cloud Kokoro project, decrypt the
+`.kokoro/secrets.sh.enc` file and load those environment variables. Follow
+the instructions in [.kokoro/secrets-example.sh](.kokoro/secrets-example.sh).
+
+If your tests require new environment variables, you can set them up in
+`.kokoro/secrets.sh.enc` so they pass on Kokoro. For instructions on managing those
+variables, view [.kokoro/secrets-example.sh](.kokoro/secrets-example.sh) for more
+information.
+
+### Run the tests
+
+Once the dependencies are installed and the environment variables set, you can run the
+tests in a samples directory.
+```
+cd $SAMPLES_DIRECTORY
+# Execute the "phpunit" installed for the shared dependencies
+PATH_TO_REPO=/path/to/php-docs-samples
+$PATH_TO_REPO/testing/vendor/bin/phpunit
+```
+
+Use `phpunit -v` to get a more detailed output if there are errors.
+
## Style
-Samples in this repository follow the [PSR2][psr2] and [PSR4][psr4]
-recommendations. This is enforced using [PHP CS Fixer][php-cs-fixer].
+The [Google Cloud Samples Style Guide][style-guide] is considered the primary
+guidelines for all Google Cloud samples.
+
+[style-guide]: https://googlecloudplatform.github.io/samples-style-guide/
+
+Samples in this repository also follow the [PSR2][psr2] and [PSR4][psr4]
+recommendations. This is enforced using [PHP CS Fixer][php-cs-fixer], using the config in [.php-cs-fixer.dist.php](.php-cs-fixer.dist.php)
+
+Install that by running
+
+```
+composer global require friendsofphp/php-cs-fixer
+```
+
+Then to fix your directory or file run
+
+```
+php-cs-fixer fix . --config .php-cs-fixer.dist.php
+php-cs-fixer fix path/to/file --config .php-cs-fixer.dist.php
+```
+
+The [DLP snippets](https://github.com/GoogleCloudPlatform/php-docs-samples/tree/main/dlp) are an example of snippets following the latest style guidelines.
[psr2]: http://www.php-fig.org/psr/psr-2/
[psr4]: http://www.php-fig.org/psr/psr-4/
diff --git a/README.md b/README.md
index 5b36182821..606266a27f 100644
--- a/README.md
+++ b/README.md
@@ -2,14 +2,14 @@
A collection of samples that demonstrate how to call Google Cloud services from PHP.
-[](https://travis-ci.org/GoogleCloudPlatform/php-docs-samples)
-
-[](https://coveralls.io/github/GoogleCloudPlatform/php-docs-samples?branch=master)
-
See our other [Google Cloud Platform github
repos](https://github.com/GoogleCloudPlatform) for sample applications and
scaffolding for other frameworks and use cases.
+## Google Cloud Samples
+
+To browse ready to use code samples check [Google Cloud Samples](https://cloud.google.com/docs/samples?l=php).
+
## Contributing changes
* See [CONTRIBUTING.md](CONTRIBUTING.md)
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 0000000000..8b58ae9c01
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,7 @@
+# Security Policy
+
+To report a security issue, please use [g.co/vulnz](https://g.co/vulnz).
+
+The Google Security Team will respond within 5 working days of your report on g.co/vulnz.
+
+We use g.co/vulnz for our intake, and do coordination and disclosure here using GitHub Security Advisory to privately discuss and fix the issue.
diff --git a/TRAVIS.md b/TRAVIS.md
deleted file mode 100644
index ac8227c06b..0000000000
--- a/TRAVIS.md
+++ /dev/null
@@ -1,27 +0,0 @@
-## Running Tests on Travis
-
-[Travis](https://travis-ci.org/) automatically runs tests whenever a github
-repo changes. To have Travis automatically run tests on your forked copy
-of this repo:
-
-1. Fork this repo on [GitHub](https://github.com/).
-2. Visit the
- [Google Developers Console](https://console.developers.google.com/) and
- choose an existing project or create a new project.
-3. Under `APIs & auth`, choose Credentials.
-4. Click `Add credentials`, and then click `Service account`.
-5. Under `Key type`, choose `JSON`, and then click `Create`. A json credential
- file will be downloaded to your computer.
-6. Visit [Travis](https://travis-ci.org/profile ) and turn on Travis for your
- new forked repo.
-7. Go back to the [Travis](https://travis-ci.org/) home page, click on your
- repo, then click on `Settings`.
-8. Under Environment Variables, set GOOGLE_PROJECT_ID to the project id
- for the project you created or chose in step 2.
-9. Base-64 encode the json file you downloaded in step 5. On unix machines,
- this can be done with a command like
- `base64 -w 0 < my-test-bf4af540ca4c.json`.
-10. Under Environment Variables, set GOOGLE_CREDENTIALS_BASE64 to the
- base64-encoded json from step 9. **Be sure te leave `Display value in build
- log` switched OFF.**
-
diff --git a/analyticsdata/README.md b/analyticsdata/README.md
new file mode 100644
index 0000000000..4426c3b32a
--- /dev/null
+++ b/analyticsdata/README.md
@@ -0,0 +1,48 @@
+# Google Analytics Data API Samples
+
+[![Open in Cloud Shell][shell_img]][shell_link]
+
+[shell_img]: http://gstatic.com/cloudssh/images/open-btn.svg
+[shell_link]: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googlecloudplatform/php-docs-samples&page=editor&working_dir=analyticsdata
+
+## Description
+
+These samples show how to use the [Google Analytics Data API][analyticsdata-api]
+from PHP.
+
+[analyticsdata-api]: https://developers.google.com/analytics/devguides/reporting/data/v1
+
+## Build and Run
+1. **Enable APIs** - [Enable the Analytics Data API](https://console.cloud.google.com/flows/enableapi?apiid=analyticsdata.googleapis.com)
+ and create a new project or select an existing project.
+2. **Download The Credentials** - Configure your project using [Application Default Credentials][adc].
+ Click "Go to credentials" after enabling the APIs. Click "Create Credentials"
+ and select "Service Account Credentials" and download the credentials file. Then set the path to
+ this file to the environment variable `GOOGLE_APPLICATION_CREDENTIALS`:
+```sh
+ $ export GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json
+```
+3. **Clone the repo** and cd into this directory
+```sh
+ $ git clone https://github.com/GoogleCloudPlatform/php-docs-samples
+ $ cd php-docs-samples/analyticsdata
+```
+4. **Install dependencies** via [Composer](http://getcomposer.org/doc/00-intro.md).
+ Run `php composer.phar install` (if composer is installed locally) or `composer install`
+ (if composer is installed globally).
+5. **Replace `$property_id` variable** if present in the snippet with the
+value of the Google Analytics 4 property id you want to access.
+6. **Run** with the command `php SNIPPET_NAME.php`. For example:
+```sh
+ $ php quickstart.php
+```
+
+## Contributing changes
+
+* See [CONTRIBUTING.md](../CONTRIBUTING.md)
+
+## Licensing
+
+* See [LICENSE](../LICENSE)
+
+[adc]: https://cloud.google.com/docs/authentication/production#obtaining_and_providing_service_account_credentials_manually
diff --git a/analyticsdata/composer.json b/analyticsdata/composer.json
new file mode 100644
index 0000000000..47387775f0
--- /dev/null
+++ b/analyticsdata/composer.json
@@ -0,0 +1,5 @@
+{
+ "require": {
+ "google/analytics-data": "^0.23.0"
+ }
+}
diff --git a/analyticsdata/phpunit.xml.dist b/analyticsdata/phpunit.xml.dist
new file mode 100644
index 0000000000..abfd8f9fa4
--- /dev/null
+++ b/analyticsdata/phpunit.xml.dist
@@ -0,0 +1,37 @@
+
+
+
+
+
+ test
+
+
+
+
+
+
+
+ ./src
+
+ ./vendor
+
+
+
+
+
+
+
diff --git a/analyticsdata/quickstart.php b/analyticsdata/quickstart.php
new file mode 100644
index 0000000000..a0357e434f
--- /dev/null
+++ b/analyticsdata/quickstart.php
@@ -0,0 +1,82 @@
+setProperty('properties/' . $property_id)
+ ->setDateRanges([
+ new DateRange([
+ 'start_date' => '2020-03-31',
+ 'end_date' => 'today',
+ ]),
+ ])
+ ->setDimensions([new Dimension([
+ 'name' => 'city',
+ ]),
+ ])
+ ->setMetrics([new Metric([
+ 'name' => 'activeUsers',
+ ])
+ ]);
+$response = $client->runReport($request);
+// [END analyticsdata_run_report]
+
+// [START analyticsdata_run_report_response]
+// Print results of an API call.
+print 'Report result: ' . PHP_EOL;
+
+foreach ($response->getRows() as $row) {
+ print $row->getDimensionValues()[0]->getValue()
+ . ' ' . $row->getMetricValues()[0]->getValue() . PHP_EOL;
+ // [END analyticsdata_run_report_response]
+}
+// [END analytics_data_quickstart]
diff --git a/analyticsdata/quickstart_oauth2/README.md b/analyticsdata/quickstart_oauth2/README.md
new file mode 100644
index 0000000000..256e371450
--- /dev/null
+++ b/analyticsdata/quickstart_oauth2/README.md
@@ -0,0 +1,42 @@
+This application demonstrates the usage of the Analytics Data API using
+OAuth2 credentials.
+
+Please familiarize yourself with the OAuth2 flow guide at
+https://developers.google.com/identity/protocols/oauth2
+
+For more information on authenticating as an end user, see
+https://cloud.google.com/docs/authentication/end-user
+
+In a nutshell, you need to:
+
+1. Create your OAuth2 client credentials in Google Cloud Console.
+Choose "Web application" when asked for an application type.
+https://support.google.com/cloud/answer/6158849
+
+2. When configuring the web application credentials, add
+"http://localhost:3000/" to "Authorized redirect URIs".
+
+3. Download a credentials file using "Download JSON" button in the credentials
+configuration dialog and save it as `oauth2.keys.json` in the same
+directory with this sample app.
+
+4. Replace `$property_id` variable with the value of the Google Analytics 4
+property id you want to access.
+
+5. Install the PHP bcmath extension (due to https://github.com/protocolbuffers/protobuf/issues/4465):
+
+ ```
+ sudo -s apt-get install php-bcmath
+ ```
+
+6. Run the following commands from the current directory in order to install
+dependencies and run the sample app:
+
+ ```
+ composer update
+ php -S localhost:3000 -t .
+ ```
+
+7. In a browser, open the following url to start the sample:
+
+http://localhost:3000/
diff --git a/analyticsdata/quickstart_oauth2/composer.json b/analyticsdata/quickstart_oauth2/composer.json
new file mode 100644
index 0000000000..59f6620a1a
--- /dev/null
+++ b/analyticsdata/quickstart_oauth2/composer.json
@@ -0,0 +1,6 @@
+{
+ "require": {
+ "google/analytics-data": "^0.23.0",
+ "ext-bcmath": "*"
+ }
+}
diff --git a/analyticsdata/quickstart_oauth2/index.php b/analyticsdata/quickstart_oauth2/index.php
new file mode 100644
index 0000000000..d52a49022c
--- /dev/null
+++ b/analyticsdata/quickstart_oauth2/index.php
@@ -0,0 +1,109 @@
+ 'https://www.googleapis.com/auth/analytics.readonly',
+ 'tokenCredentialUri' => 'https://oauth2.googleapis.com/token',
+ 'authorizationUri' => $keys->{'web'}->{'auth_uri'},
+ 'clientId' => $keys->{'web'}->{'client_id'},
+ 'clientSecret' => $keys->{'web'}->{'client_secret'},
+ 'redirectUri' => 'http://' . $_SERVER['HTTP_HOST'] . '/',
+]);
+
+if (isset($_SESSION['access_token']) && $_SESSION['access_token']
+ && isset($_SESSION['refresh_token']) && $_SESSION['refresh_token']) {
+ // This is the final step of the OAuth2 authorization process, where an
+ // OAuth2 access token is available and can be used to set up a client.
+ $oauth->setAccessToken($_SESSION['access_token']);
+ $oauth->setRefreshToken($_SESSION['refresh_token']);
+
+ try {
+ // Make an API call.
+ $client = new BetaAnalyticsDataClient(['credentials' => $oauth]);
+ $request = (new RunReportRequest())
+ ->setProperty('properties/' . $property_id)
+ ->setDateRanges([
+ new DateRange([
+ 'start_date' => '2020-03-31',
+ 'end_date' => 'today',
+ ]),
+ ])
+ ->setDimensions([new Dimension([
+ 'name' => 'city',
+ ]),
+ ])
+ ->setMetrics([new Metric([
+ 'name' => 'activeUsers',
+ ])
+ ]);
+ $response = $client->runReport($request);
+
+ // Print results of an API call.
+ print 'Report result:
';
+
+ foreach ($response->getRows() as $row) {
+ print $row->getDimensionValues()[0]->getValue()
+ . ' ' . $row->getMetricValues()[0]->getValue() . '
';
+ }
+ } catch (ApiException $e) {
+ // Print an error message.
+ print $e->getMessage();
+ }
+} elseif (isset($_GET['code']) && $_GET['code']) {
+ // If an OAuth2 authorization code is present in the URL, exchange it for
+ // an access token.
+ $oauth->setCode($_GET['code']);
+ $oauth->fetchAuthToken();
+
+ // Persist the acquired access token in a session.
+ $_SESSION['access_token'] = $oauth->getAccessToken();
+
+ // Persist the acquired refresh token in a session.
+ $_SESSION['refresh_token'] = $oauth->getRefreshToken();
+
+ // Refresh the current page.
+ $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/';
+ header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
+} else {
+ // Redirect to Google's OAuth 2.0 server.
+ $auth_url = $oauth->buildFullAuthorizationUri();
+ header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
+}
+// [END analyticsdata_quickstart_oauth2]
diff --git a/analyticsdata/src/client_from_json_credentials.php b/analyticsdata/src/client_from_json_credentials.php
new file mode 100644
index 0000000000..8e46e99985
--- /dev/null
+++ b/analyticsdata/src/client_from_json_credentials.php
@@ -0,0 +1,51 @@
+ $credentialsJsonPath
+ ]);
+
+ return $client;
+}
+// [END analyticsdata_json_credentials_initialize]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/get_common_metadata.php b/analyticsdata/src/get_common_metadata.php
new file mode 100644
index 0000000000..3019f8b5c3
--- /dev/null
+++ b/analyticsdata/src/get_common_metadata.php
@@ -0,0 +1,122 @@
+setName($formattedName);
+ $response = $client->getMetadata($request);
+ } catch (ApiException $ex) {
+ printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
+ return;
+ }
+
+ print('Dimensions and metrics available for all Google Analytics 4 properties:');
+ printGetCommonMetadata($response);
+}
+
+/**
+ * Print results of a getMetadata call.
+ * @param Metadata $response
+ */
+function printGetCommonMetadata(Metadata $response)
+{
+ // [START analyticsdata_print_get_metadata_response]
+ foreach ($response->getDimensions() as $dimension) {
+ print('DIMENSION' . PHP_EOL);
+ printf(
+ '%s (%s): %s' . PHP_EOL,
+ $dimension->getApiName(),
+ $dimension->getUiName(),
+ $dimension->getDescription(),
+ );
+ printf(
+ 'custom definition: %s' . PHP_EOL,
+ $dimension->getCustomDefinition()? 'true' : 'false'
+ );
+ if ($dimension->getDeprecatedApiNames()->count() > 0) {
+ print('Deprecated API names: ');
+ foreach ($dimension->getDeprecatedApiNames() as $name) {
+ print($name . ',');
+ }
+ print(PHP_EOL);
+ }
+ print(PHP_EOL);
+ }
+
+ foreach ($response->getMetrics() as $metric) {
+ print('METRIC' . PHP_EOL);
+ printf(
+ '%s (%s): %s' . PHP_EOL,
+ $metric->getApiName(),
+ $metric->getUiName(),
+ $metric->getDescription(),
+ );
+ printf(
+ 'custom definition: %s' . PHP_EOL,
+ $metric->getCustomDefinition()? 'true' : 'false'
+ );
+ if ($metric->getDeprecatedApiNames()->count() > 0) {
+ print('Deprecated API names: ');
+ foreach ($metric->getDeprecatedApiNames() as $name) {
+ print($name . ',');
+ }
+ print(PHP_EOL);
+ }
+ print(PHP_EOL);
+ }
+ // [END analyticsdata_print_get_metadata_response]
+}
+// [END analyticsdata_get_common_metadata]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/get_metadata_by_property_id.php b/analyticsdata/src/get_metadata_by_property_id.php
new file mode 100644
index 0000000000..178a748761
--- /dev/null
+++ b/analyticsdata/src/get_metadata_by_property_id.php
@@ -0,0 +1,122 @@
+setName($formattedName);
+ $response = $client->getMetadata($request);
+ } catch (ApiException $ex) {
+ printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
+ return;
+ }
+
+ printf(
+ 'Dimensions and metrics available for Google Analytics 4 property'
+ . ' %s (including custom fields):' . PHP_EOL,
+ $propertyId
+ );
+ printGetMetadataByPropertyId($response);
+}
+
+/**
+ * Print results of a getMetadata call.
+ * @param Metadata $response
+ */
+function printGetMetadataByPropertyId(Metadata $response)
+{
+ // [START analyticsdata_print_get_metadata_response]
+ foreach ($response->getDimensions() as $dimension) {
+ print('DIMENSION' . PHP_EOL);
+ printf(
+ '%s (%s): %s' . PHP_EOL,
+ $dimension->getApiName(),
+ $dimension->getUiName(),
+ $dimension->getDescription(),
+ );
+ printf(
+ 'custom definition: %s' . PHP_EOL,
+ $dimension->getCustomDefinition() ? 'true' : 'false'
+ );
+ if ($dimension->getDeprecatedApiNames()->count() > 0) {
+ print('Deprecated API names: ');
+ foreach ($dimension->getDeprecatedApiNames() as $name) {
+ print($name . ',');
+ }
+ print(PHP_EOL);
+ }
+ print(PHP_EOL);
+ }
+
+ foreach ($response->getMetrics() as $metric) {
+ print('METRIC' . PHP_EOL);
+ printf(
+ '%s (%s): %s' . PHP_EOL,
+ $metric->getApiName(),
+ $metric->getUiName(),
+ $metric->getDescription(),
+ );
+ printf(
+ 'custom definition: %s' . PHP_EOL,
+ $metric->getCustomDefinition() ? 'true' : 'false'
+ );
+ if ($metric->getDeprecatedApiNames()->count() > 0) {
+ print('Deprecated API names: ');
+ foreach ($metric->getDeprecatedApiNames() as $name) {
+ print($name . ',');
+ }
+ print(PHP_EOL);
+ }
+ print(PHP_EOL);
+ }
+ // [END analyticsdata_print_get_metadata_response]
+}
+// [END analyticsdata_get_metadata_by_property_id]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_batch_report.php b/analyticsdata/src/run_batch_report.php
new file mode 100644
index 0000000000..5f6cdcf076
--- /dev/null
+++ b/analyticsdata/src/run_batch_report.php
@@ -0,0 +1,120 @@
+setProperty('properties/' . $propertyId)
+ ->setRequests([
+ new RunReportRequest([
+ 'dimensions' => [
+ new Dimension(['name' => 'country']),
+ new Dimension(['name' => 'region']),
+ new Dimension(['name' => 'city']),
+ ],
+ 'metrics' => [new Metric(['name' => 'activeUsers'])],
+ 'date_ranges' => [new DateRange([
+ 'start_date' => '2021-01-03',
+ 'end_date' => '2021-01-09',
+ ]),
+ ],
+ ]),
+ new RunReportRequest([
+ 'dimensions' => [new Dimension(['name' => 'browser'])],
+ 'metrics' => [new Metric(['name' => 'activeUsers'])],
+ 'date_ranges' => [new DateRange([
+ 'start_date' => '2021-01-01',
+ 'end_date' => '2021-01-31',
+ ]),
+ ],
+ ]),
+ ]);
+ $response = $client->batchRunReports($request);
+
+ print 'Batch report results' . PHP_EOL;
+ foreach ($response->getReports() as $report) {
+ printBatchRunReportsResponse($report);
+ }
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printBatchRunReportsResponse(RunReportResponse $response)
+{
+ // [START analyticsdata_print_run_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)' . PHP_EOL,
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType())
+ );
+ }
+ // [END analyticsdata_print_run_report_response_header]
+
+ // [START analyticsdata_print_run_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_report_response_rows]
+}
+// [END analyticsdata_run_batch_report]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_pivot_report.php b/analyticsdata/src/run_pivot_report.php
new file mode 100644
index 0000000000..b7e1cc53f7
--- /dev/null
+++ b/analyticsdata/src/run_pivot_report.php
@@ -0,0 +1,114 @@
+setProperty('properties/' . $propertyId)
+ ->setDateRanges([new DateRange([
+ 'start_date' => '2021-01-01',
+ 'end_date' => '2021-01-30',
+ ]),
+ ])
+ ->setPivots([
+ new Pivot([
+ 'field_names' => ['country'],
+ 'limit' => 250,
+ 'order_bys' => [new OrderBy([
+ 'dimension' => new DimensionOrderBy([
+ 'dimension_name' => 'country',
+ ]),
+ ])],
+ ]),
+ new Pivot([
+ 'field_names' => ['browser'],
+ 'offset' => 3,
+ 'limit' => 3,
+ 'order_bys' => [new OrderBy([
+ 'metric' => new MetricOrderBy([
+ 'metric_name' => 'sessions',
+ ]),
+ 'desc' => true,
+ ])],
+ ]),
+ ])
+ ->setMetrics([new Metric(['name' => 'sessions'])])
+ ->setDimensions([
+ new Dimension(['name' => 'country']),
+ new Dimension(['name' => 'browser']),
+ ]);
+ $response = $client->runPivotReport($request);
+
+ printPivotReportResponse($response);
+}
+
+/**
+ * Print results of a runPivotReport call.
+ * @param RunPivotReportResponse $response
+ */
+function printPivotReportResponse(RunPivotReportResponse $response)
+{
+ // [START analyticsdata_print_run_pivot_report_response]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_pivot_report_response]
+}
+// [END analyticsdata_run_pivot_report]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_realtime_report.php b/analyticsdata/src/run_realtime_report.php
new file mode 100644
index 0000000000..f8d93a887f
--- /dev/null
+++ b/analyticsdata/src/run_realtime_report.php
@@ -0,0 +1,94 @@
+setProperty('properties/' . $propertyId)
+ ->setDimensions([new Dimension(['name' => 'country'])])
+ ->setMetrics([new Metric(['name' => 'activeUsers'])]);
+ $response = $client->runRealtimeReport($request);
+
+ printRunRealtimeReportResponse($response);
+}
+
+/**
+ * Print results of a runRealtimeReport call.
+ * @param RunRealtimeReportResponse $response
+ */
+function printRunRealtimeReportResponse(RunRealtimeReportResponse $response)
+{
+ // [START analyticsdata_print_run_realtime_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)%s',
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType()),
+ PHP_EOL
+ );
+ }
+ // [END analyticsdata_print_run_realtime_report_response_header]
+
+ // [START analyticsdata_print_run_realtime_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_realtime_report_response_rows]
+}
+// [END analyticsdata_run_realtime_report]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_realtime_report_with_multiple_dimensions.php b/analyticsdata/src/run_realtime_report_with_multiple_dimensions.php
new file mode 100644
index 0000000000..c1d4440a05
--- /dev/null
+++ b/analyticsdata/src/run_realtime_report_with_multiple_dimensions.php
@@ -0,0 +1,97 @@
+setProperty('properties/' . $propertyId)
+ ->setDimensions([
+ new Dimension(['name' => 'country']),
+ new Dimension(['name' => 'city']),
+ ])
+ ->setMetrics([new Metric(['name' => 'activeUsers'])]);
+ $response = $client->runRealtimeReport($request);
+
+ printRunRealtimeReportWithMultipleDimensionsResponse($response);
+}
+
+/**
+ * Print results of a runRealtimeReport call.
+ * @param RunRealtimeReportResponse $response
+ */
+function printRunRealtimeReportWithMultipleDimensionsResponse(RunRealtimeReportResponse $response)
+{
+ // [START analyticsdata_print_run_realtime_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)%s',
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType()),
+ PHP_EOL
+ );
+ }
+ // [END analyticsdata_print_run_realtime_report_response_header]
+
+ // [START analyticsdata_print_run_realtime_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_realtime_report_response_rows]
+}
+// [END analyticsdata_run_realtime_report_with_multiple_dimensions]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_realtime_report_with_multiple_metrics.php b/analyticsdata/src/run_realtime_report_with_multiple_metrics.php
new file mode 100644
index 0000000000..478437efe3
--- /dev/null
+++ b/analyticsdata/src/run_realtime_report_with_multiple_metrics.php
@@ -0,0 +1,97 @@
+setProperty('properties/' . $propertyId)
+ ->setDimensions([new Dimension(['name' => 'unifiedScreenName'])])
+ ->setMetrics([
+ new Metric(['name' => 'screenPageViews']),
+ new Metric(['name' => 'conversions']),
+ ]);
+ $response = $client->runRealtimeReport($request);
+
+ printRunRealtimeReportWithMultipleMetricsResponse($response);
+}
+
+/**
+ * Print results of a runRealtimeReport call.
+ * @param RunRealtimeReportResponse $response
+ */
+function printRunRealtimeReportWithMultipleMetricsResponse(RunRealtimeReportResponse $response)
+{
+ // [START analyticsdata_print_run_realtime_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)%s',
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType()),
+ PHP_EOL
+ );
+ }
+ // [END analyticsdata_print_run_realtime_report_response_header]
+
+ // [START analyticsdata_print_run_realtime_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_realtime_report_response_rows]
+}
+// [END analyticsdata_run_realtime_report_with_multiple_metrics]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_report.php b/analyticsdata/src/run_report.php
new file mode 100644
index 0000000000..22611dcb34
--- /dev/null
+++ b/analyticsdata/src/run_report.php
@@ -0,0 +1,102 @@
+setProperty('properties/' . $propertyId)
+ ->setDateRanges([
+ new DateRange([
+ 'start_date' => '2020-09-01',
+ 'end_date' => '2020-09-15',
+ ]),
+ ])
+ ->setDimensions([
+ new Dimension([
+ 'name' => 'country',
+ ]),
+ ])
+ ->setMetrics([
+ new Metric([
+ 'name' => 'activeUsers',
+ ]),
+ ]);
+ $response = $client->runReport($request);
+
+ printRunReportResponse($response);
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printRunReportResponse(RunReportResponse $response)
+{
+ // [START analyticsdata_print_run_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)%s',
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType()),
+ PHP_EOL
+ );
+ }
+ // [END analyticsdata_print_run_report_response_header]
+
+ // [START analyticsdata_print_run_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ print $row->getDimensionValues()[0]->getValue()
+ . ' ' . $row->getMetricValues()[0]->getValue() . PHP_EOL;
+ }
+ // [END analyticsdata_print_run_report_response_rows]
+}
+// [END analyticsdata_run_report]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_report_with_aggregations.php b/analyticsdata/src/run_report_with_aggregations.php
new file mode 100644
index 0000000000..a2ef2affcb
--- /dev/null
+++ b/analyticsdata/src/run_report_with_aggregations.php
@@ -0,0 +1,107 @@
+setProperty('properties/' . $propertyId)
+ ->setDimensions([new Dimension(['name' => 'country'])])
+ ->setMetrics([new Metric(['name' => 'sessions'])])
+ ->setDateRanges([
+ new DateRange([
+ 'start_date' => '365daysAgo',
+ 'end_date' => 'today',
+ ]),
+ ])
+ ->setMetricAggregations([
+ MetricAggregation::TOTAL,
+ MetricAggregation::MAXIMUM,
+ MetricAggregation::MINIMUM
+ ]);
+ $response = $client->runReport($request);
+
+ printRunReportResponseWithAggregations($response);
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printRunReportResponseWithAggregations($response)
+{
+ // [START analyticsdata_print_run_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)' . PHP_EOL,
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType())
+ );
+ }
+ // [END analyticsdata_print_run_report_response_header]
+
+ // [START analyticsdata_print_run_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_report_response_rows]
+}
+// [END analyticsdata_run_report_with_aggregations]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_report_with_cohorts.php b/analyticsdata/src/run_report_with_cohorts.php
new file mode 100644
index 0000000000..29ec2dc7d5
--- /dev/null
+++ b/analyticsdata/src/run_report_with_cohorts.php
@@ -0,0 +1,125 @@
+setProperty('properties/' . $propertyId)
+ ->setDimensions([
+ new Dimension(['name' => 'cohort']),
+ new Dimension(['name' => 'cohortNthWeek']),
+ ])
+ ->setMetrics([
+ new Metric(['name' => 'cohortActiveUsers']),
+ new Metric([
+ 'name' => 'cohortRetentionRate',
+ 'expression' => 'cohortActiveUsers/cohortTotalUsers'
+ ])
+ ])
+ ->setCohortSpec(new CohortSpec([
+ 'cohorts' => [
+ new Cohort([
+ 'dimension' => 'firstSessionDate',
+ 'name' => 'cohort',
+ 'date_range' => new DateRange([
+ 'start_date' => '2021-01-03',
+ 'end_date' => '2021-01-09',
+ ]),
+ ])
+ ],
+ 'cohorts_range' => new CohortsRange([
+ 'start_offset' => '0',
+ 'end_offset' => '4',
+ 'granularity' => '2',
+ ]),
+ ]));
+ $response = $client->runReport($request);
+
+ printRunReportResponseWithCohorts($response);
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printRunReportResponseWithCohorts($response)
+{
+ // [START analyticsdata_print_run_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)' . PHP_EOL,
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType())
+ );
+ }
+ // [END analyticsdata_print_run_report_response_header]
+
+ // [START analyticsdata_print_run_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_report_response_rows]
+}
+// [END analyticsdata_run_report_with_cohorts]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_report_with_date_ranges.php b/analyticsdata/src/run_report_with_date_ranges.php
new file mode 100644
index 0000000000..aceb328d57
--- /dev/null
+++ b/analyticsdata/src/run_report_with_date_ranges.php
@@ -0,0 +1,104 @@
+setProperty('properties/' . $propertyId)
+ ->setDateRanges([
+ new DateRange([
+ 'start_date' => '2019-08-01',
+ 'end_date' => '2019-08-14',
+ ]),
+ new DateRange([
+ 'start_date' => '2020-08-01',
+ 'end_date' => '2020-08-14',
+ ]),
+ ])
+ ->setDimensions([new Dimension(['name' => 'platform'])])
+ ->setMetrics([new Metric(['name' => 'activeUsers'])]);
+ $response = $client->runReport($request);
+
+ printRunReportResponseWithDateRanges($response);
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printRunReportResponseWithDateRanges(RunReportResponse $response)
+{
+ // [START analyticsdata_print_run_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)' . PHP_EOL,
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType())
+ );
+ }
+ // [END analyticsdata_print_run_report_response_header]
+
+ // [START analyticsdata_print_run_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_report_response_rows]
+}
+// [END analyticsdata_run_report_with_date_ranges]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_report_with_dimension_and_metric_filters.php b/analyticsdata/src/run_report_with_dimension_and_metric_filters.php
new file mode 100644
index 0000000000..2c175a4760
--- /dev/null
+++ b/analyticsdata/src/run_report_with_dimension_and_metric_filters.php
@@ -0,0 +1,145 @@
+setProperty('properties/' . $propertyId)
+ ->setDimensions([new Dimension(['name' => 'city'])])
+ ->setMetrics([new Metric(['name' => 'activeUsers'])])
+ ->setDateRanges([new DateRange([
+ 'start_date' => '2020-03-31',
+ 'end_date' => 'today',
+ ]),
+ ])
+ ->setMetricFilter(new FilterExpression([
+ 'filter' => new Filter([
+ 'field_name' => 'sessions',
+ 'numeric_filter' => new NumericFilter([
+ 'operation' => Operation::GREATER_THAN,
+ 'value' => new NumericValue([
+ 'int64_value' => 1000,
+ ]),
+ ]),
+ ]),
+ ]))
+ ->setDimensionFilter(new FilterExpression([
+ 'and_group' => new FilterExpressionList([
+ 'expressions' => [
+ new FilterExpression([
+ 'filter' => new Filter([
+ 'field_name' => 'platform',
+ 'string_filter' => new StringFilter([
+ 'match_type' => MatchType::EXACT,
+ 'value' => 'Android',
+ ])
+ ]),
+ ]),
+ new FilterExpression([
+ 'filter' => new Filter([
+ 'field_name' => 'eventName',
+ 'string_filter' => new StringFilter([
+ 'match_type' => MatchType::EXACT,
+ 'value' => 'in_app_purchase',
+ ])
+ ])
+ ]),
+ ],
+ ]),
+ ]));
+ $response = $client->runReport($request);
+
+ printRunReportResponseWithDimensionAndMetricFilters($response);
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printRunReportResponseWithDimensionAndMetricFilters(RunReportResponse $response)
+{
+ // [START analyticsdata_print_run_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)' . PHP_EOL,
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType())
+ );
+ }
+ // [END analyticsdata_print_run_report_response_header]
+
+ // [START analyticsdata_print_run_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_report_response_rows]
+}
+// [END analyticsdata_run_report_with_dimension_and_metric_filters]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_report_with_dimension_exclude_filter.php b/analyticsdata/src/run_report_with_dimension_exclude_filter.php
new file mode 100644
index 0000000000..de5c7b8217
--- /dev/null
+++ b/analyticsdata/src/run_report_with_dimension_exclude_filter.php
@@ -0,0 +1,116 @@
+setProperty('properties/' . $propertyId)
+ ->setDimensions([new Dimension(['name' => 'pageTitle'])])
+ ->setMetrics([new Metric(['name' => 'sessions'])])
+ ->setDateRanges([new DateRange([
+ 'start_date' => '7daysAgo',
+ 'end_date' => 'yesterday',
+ ])
+ ])
+ ->setDimensionFilter(new FilterExpression([
+ 'not_expression' => new FilterExpression([
+ 'filter' => new Filter([
+ 'field_name' => 'pageTitle',
+ 'string_filter' => new StringFilter([
+ 'value' => 'My Homepage',
+ ]),
+ ]),
+ ]),
+ ]));
+ $response = $client->runReport($request);
+
+ printRunReportResponseWithDimensionExcludeFilter($response);
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printRunReportResponseWithDimensionExcludeFilter(RunReportResponse $response)
+{
+ // [START analyticsdata_print_run_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)' . PHP_EOL,
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType())
+ );
+ }
+ // [END analyticsdata_print_run_report_response_header]
+
+ // [START analyticsdata_print_run_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_report_response_rows]
+}
+// [END analyticsdata_run_report_with_dimension_exclude_filter]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_report_with_dimension_filter.php b/analyticsdata/src/run_report_with_dimension_filter.php
new file mode 100644
index 0000000000..9a375fa76a
--- /dev/null
+++ b/analyticsdata/src/run_report_with_dimension_filter.php
@@ -0,0 +1,115 @@
+setProperty('properties/' . $propertyId)
+ ->setDimensions([new Dimension(['name' => 'date'])])
+ ->setMetrics([new Metric(['name' => 'eventCount'])])
+ ->setDateRanges([
+ new DateRange([
+ 'start_date' => '7daysAgo',
+ 'end_date' => 'yesterday',
+ ])
+ ])
+ ->setDimensionFilter(new FilterExpression([
+ 'filter' => new Filter([
+ 'field_name' => 'eventName',
+ 'string_filter' => new StringFilter([
+ 'value' => 'first_open'
+ ]),
+ ]),
+ ]));
+ $response = $client->runReport($request);
+
+ printRunReportResponseWithDimensionFilter($response);
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printRunReportResponseWithDimensionFilter(RunReportResponse $response)
+{
+ // [START analyticsdata_print_run_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)' . PHP_EOL,
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType())
+ );
+ }
+ // [END analyticsdata_print_run_report_response_header]
+
+ // [START analyticsdata_print_run_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_report_response_rows]
+}
+// [END analyticsdata_run_report_with_dimension_filter]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_report_with_dimension_in_list_filter.php b/analyticsdata/src/run_report_with_dimension_in_list_filter.php
new file mode 100644
index 0000000000..9ad6001d80
--- /dev/null
+++ b/analyticsdata/src/run_report_with_dimension_in_list_filter.php
@@ -0,0 +1,119 @@
+setProperty('properties/' . $propertyId)
+ ->setDimensions([new Dimension(['name' => 'eventName'])])
+ ->setMetrics([new Metric(['name' => 'sessions'])])
+ ->setDateRanges([new DateRange([
+ 'start_date' => '7daysAgo',
+ 'end_date' => 'yesterday',
+ ])
+ ])
+ ->setDimensionFilter(new FilterExpression([
+ 'filter' => new Filter([
+ 'field_name' => 'eventName',
+ 'in_list_filter' => new InListFilter([
+ 'values' => [
+ 'purchase',
+ 'in_app_purchase',
+ 'app_store_subscription_renew',
+ ],
+ ]),
+ ]),
+ ]));
+ $response = $client->runReport($request);
+
+ printRunReportResponseWithDimensionInListFilter($response);
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printRunReportResponseWithDimensionInListFilter(RunReportResponse $response)
+{
+ // [START analyticsdata_print_run_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)' . PHP_EOL,
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType())
+ );
+ }
+ // [END analyticsdata_print_run_report_response_header]
+
+ // [START analyticsdata_print_run_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_report_response_rows]
+}
+// [END analyticsdata_run_report_with_dimension_in_list_filter]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_report_with_multiple_dimension_filters.php b/analyticsdata/src/run_report_with_multiple_dimension_filters.php
new file mode 100644
index 0000000000..5946048ac3
--- /dev/null
+++ b/analyticsdata/src/run_report_with_multiple_dimension_filters.php
@@ -0,0 +1,131 @@
+setProperty('properties/' . $propertyId)
+ ->setDimensions([new Dimension(['name' => 'browser'])])
+ ->setMetrics([new Metric(['name' => 'activeUsers'])])
+ ->setDateRanges([
+ new DateRange([
+ 'start_date' => '7daysAgo',
+ 'end_date' => 'yesterday',
+ ]),
+ ])
+ ->setDimensionFilter(new FilterExpression([
+ 'and_group' => new FilterExpressionList([
+ 'expressions' => [
+ new FilterExpression([
+ 'filter' => new Filter([
+ 'field_name' => 'browser',
+ 'string_filter' => new StringFilter([
+ 'value' => 'Chrome',
+ ])
+ ]),
+ ]),
+ new FilterExpression([
+ 'filter' => new Filter([
+ 'field_name' => 'countryId',
+ 'string_filter' => new StringFilter([
+ 'value' => 'US',
+ ])
+ ]),
+ ]),
+ ],
+ ]),
+ ]));
+ $response = $client->runReport($request);
+
+ printRunReportResponseWithMultipleDimensionFilters($response);
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printRunReportResponseWithMultipleDimensionFilters(RunReportResponse $response)
+{
+ // [START analyticsdata_print_run_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)' . PHP_EOL,
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType())
+ );
+ }
+ // [END analyticsdata_print_run_report_response_header]
+
+ // [START analyticsdata_print_run_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_report_response_rows]
+}
+// [END analyticsdata_run_report_with_multiple_dimension_filters]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_report_with_multiple_dimensions.php b/analyticsdata/src/run_report_with_multiple_dimensions.php
new file mode 100644
index 0000000000..4b7f7ebd32
--- /dev/null
+++ b/analyticsdata/src/run_report_with_multiple_dimensions.php
@@ -0,0 +1,104 @@
+setProperty('properties/' . $propertyId)
+ ->setDimensions([
+ new Dimension(['name' => 'country']),
+ new Dimension(['name' => 'region']),
+ new Dimension(['name' => 'city']),
+ ])
+ ->setMetrics([new Metric(['name' => 'activeUsers'])])
+ ->setDateRanges([
+ new DateRange([
+ 'start_date' => '7daysAgo',
+ 'end_date' => 'today',
+ ])
+ ]);
+ $response = $client->runReport($request);
+
+ printRunReportResponseWithMultipleDimensions($response);
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printRunReportResponseWithMultipleDimensions(RunReportResponse $response)
+{
+ // [START analyticsdata_print_run_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)' . PHP_EOL,
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType())
+ );
+ }
+ // [END analyticsdata_print_run_report_response_header]
+
+ // [START analyticsdata_print_run_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_report_response_rows]
+}
+// [END analyticsdata_run_report_with_multiple_dimensions]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_report_with_multiple_metrics.php b/analyticsdata/src/run_report_with_multiple_metrics.php
new file mode 100644
index 0000000000..e96c9829c8
--- /dev/null
+++ b/analyticsdata/src/run_report_with_multiple_metrics.php
@@ -0,0 +1,104 @@
+setProperty('properties/' . $propertyId)
+ ->setDimensions([new Dimension(['name' => 'date'])])
+ ->setMetrics([
+ new Metric(['name' => 'activeUsers']),
+ new Metric(['name' => 'newUsers']),
+ new Metric(['name' => 'totalRevenue'])
+ ])
+ ->setDateRanges([
+ new DateRange([
+ 'start_date' => '7daysAgo',
+ 'end_date' => 'today',
+ ])
+ ]);
+ $response = $client->runReport($request);
+
+ printRunReportResponseWithMultipleMetrics($response);
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printRunReportResponseWithMultipleMetrics(RunReportResponse $response)
+{
+ // [START analyticsdata_print_run_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)' . PHP_EOL,
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType())
+ );
+ }
+ // [END analyticsdata_print_run_report_response_header]
+
+ // [START analyticsdata_print_run_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_report_response_rows]
+}
+// [END analyticsdata_run_report_with_multiple_metrics]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_report_with_named_date_ranges.php b/analyticsdata/src/run_report_with_named_date_ranges.php
new file mode 100644
index 0000000000..59b71ff7da
--- /dev/null
+++ b/analyticsdata/src/run_report_with_named_date_ranges.php
@@ -0,0 +1,106 @@
+setProperty('properties/' . $propertyId)
+ ->setDateRanges([
+ new DateRange([
+ 'start_date' => '2020-01-01',
+ 'end_date' => '2020-01-31',
+ 'name' => 'year_ago',
+ ]),
+ new DateRange([
+ 'start_date' => '2021-01-01',
+ 'end_date' => '2021-01-31',
+ 'name' => 'current_year',
+ ]),
+ ])
+ ->setDimensions([new Dimension(['name' => 'country'])])
+ ->setMetrics([new Metric(['name' => 'sessions'])]);
+ $response = $client->runReport($request);
+
+ printRunReportResponseWithNamedDateRanges($response);
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printRunReportResponseWithNamedDateRanges(RunReportResponse $response)
+{
+ // [START analyticsdata_print_run_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)' . PHP_EOL,
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType())
+ );
+ }
+ // [END analyticsdata_print_run_report_response_header]
+
+ // [START analyticsdata_print_run_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_report_response_rows]
+}
+// [END analyticsdata_run_report_with_named_date_ranges]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_report_with_ordering.php b/analyticsdata/src/run_report_with_ordering.php
new file mode 100644
index 0000000000..0f578cbab1
--- /dev/null
+++ b/analyticsdata/src/run_report_with_ordering.php
@@ -0,0 +1,115 @@
+setProperty('properties/' . $propertyId)
+ ->setDimensions([new Dimension(['name' => 'date'])])
+ ->setMetrics([
+ new Metric(['name' => 'activeUsers']),
+ new Metric(['name' => 'newUsers']),
+ new Metric(['name' => 'totalRevenue']),
+ ])
+ ->setDateRanges([
+ new DateRange([
+ 'start_date' => '7daysAgo',
+ 'end_date' => 'today',
+ ]),
+ ])
+ ->setOrderBys([
+ new OrderBy([
+ 'metric' => new MetricOrderBy([
+ 'metric_name' => 'totalRevenue',
+ ]),
+ 'desc' => true,
+ ]),
+ ]);
+ $response = $client->runReport($request);
+
+ printRunReportResponseWithOrdering($response);
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printRunReportResponseWithOrdering(RunReportResponse $response)
+{
+ // [START analyticsdata_print_run_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)' . PHP_EOL,
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType())
+ );
+ }
+ // [END analyticsdata_print_run_report_response_header]
+
+ // [START analyticsdata_print_run_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_report_response_rows]
+}
+// [END analyticsdata_run_report_with_ordering]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_report_with_pagination.php b/analyticsdata/src/run_report_with_pagination.php
new file mode 100644
index 0000000000..32fcf7fbae
--- /dev/null
+++ b/analyticsdata/src/run_report_with_pagination.php
@@ -0,0 +1,111 @@
+setProperty('properties/' . $propertyId)
+ ->setDateRanges([
+ new DateRange([
+ 'start_date' => '350daysAgo',
+ 'end_date' => 'yesterday',
+ ])
+ ])
+ ->setDimensions([
+ new Dimension(['name' => 'firstUserSource']),
+ new Dimension(['name' => 'firstUserMedium']),
+ new Dimension(['name' => 'firstUserCampaignName']),
+ ])
+ ->setMetrics([
+ new Metric(['name' => 'sessions']),
+ new Metric(['name' => 'conversions']),
+ new Metric(['name' => 'totalRevenue']),
+ ])
+ ->setLimit(100000)
+ ->setOffset(0);
+ $response = $client->runReport($request);
+
+ printRunReportResponseWithPagination($response);
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printRunReportResponseWithPagination(RunReportResponse $response)
+{
+ // [START analyticsdata_print_run_report_response_header]
+ printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
+ foreach ($response->getDimensionHeaders() as $dimensionHeader) {
+ printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
+ }
+ foreach ($response->getMetricHeaders() as $metricHeader) {
+ printf(
+ 'Metric header name: %s (%s)' . PHP_EOL,
+ $metricHeader->getName(),
+ MetricType::name($metricHeader->getType())
+ );
+ }
+ // [END analyticsdata_print_run_report_response_header]
+
+ // [START analyticsdata_print_run_report_response_rows]
+ print 'Report result: ' . PHP_EOL;
+
+ foreach ($response->getRows() as $row) {
+ printf(
+ '%s %s' . PHP_EOL,
+ $row->getDimensionValues()[0]->getValue(),
+ $row->getMetricValues()[0]->getValue()
+ );
+ }
+ // [END analyticsdata_print_run_report_response_rows]
+}
+// [END analyticsdata_run_report_with_pagination]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/src/run_report_with_property_quota.php b/analyticsdata/src/run_report_with_property_quota.php
new file mode 100644
index 0000000000..056f08ef84
--- /dev/null
+++ b/analyticsdata/src/run_report_with_property_quota.php
@@ -0,0 +1,111 @@
+setProperty('properties/' . $propertyId)
+ ->setReturnPropertyQuota(true)
+ ->setDimensions([new Dimension(['name' => 'country'])])
+ ->setMetrics([new Metric(['name' => 'activeUsers'])])
+ ->setDateRanges([
+ new DateRange([
+ 'start_date' => '7daysAgo',
+ 'end_date' => 'today',
+ ]),
+ ]);
+ $response = $client->runReport($request);
+
+ printRunReportResponseWithPropertyQuota($response);
+}
+
+/**
+ * Print results of a runReport call.
+ * @param RunReportResponse $response
+ */
+function printRunReportResponseWithPropertyQuota(RunReportResponse $response)
+{
+ // [START analyticsdata_run_report_with_property_quota_print_response]
+ if ($response->hasPropertyQuota()) {
+ $propertyQuota = $response->getPropertyQuota();
+ $tokensPerDay = $propertyQuota->getTokensPerDay();
+ $tokensPerHour = $propertyQuota->getTokensPerHour();
+ $concurrentRequests = $propertyQuota->getConcurrentRequests();
+ $serverErrors = $propertyQuota->getServerErrorsPerProjectPerHour();
+ $thresholdedRequests = $propertyQuota->getPotentiallyThresholdedRequestsPerHour();
+
+ printf(
+ 'Tokens per day quota consumed: %s, remaining: %s' . PHP_EOL,
+ $tokensPerDay->getConsumed(),
+ $tokensPerDay->getRemaining(),
+ );
+ printf(
+ 'Tokens per hour quota consumed: %s, remaining: %s' . PHP_EOL,
+ $tokensPerHour->getConsumed(),
+ $tokensPerHour->getRemaining(),
+ );
+ printf(
+ 'Concurrent requests quota consumed: %s, remaining: %s' . PHP_EOL,
+ $concurrentRequests->getConsumed(),
+ $concurrentRequests->getRemaining(),
+ );
+ printf(
+ 'Server errors per project per hour quota consumed: %s, remaining: %s' . PHP_EOL,
+ $serverErrors->getConsumed(),
+ $serverErrors->getRemaining(),
+ );
+ printf(
+ 'Potentially thresholded requests per hour quota consumed: %s, remaining: %s' . PHP_EOL,
+ $thresholdedRequests->getConsumed(),
+ $thresholdedRequests->getRemaining(),
+ );
+ }
+ // [END analyticsdata_run_report_with_property_quota_print_response]
+}
+// [END analyticsdata_run_report_with_property_quota]
+
+// The following 2 lines are only needed to run the samples
+require_once __DIR__ . '/../../testing/sample_helpers.php';
+return \Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);
diff --git a/analyticsdata/test/analyticsDataTest.php b/analyticsdata/test/analyticsDataTest.php
new file mode 100644
index 0000000000..8ed8a7eac8
--- /dev/null
+++ b/analyticsdata/test/analyticsDataTest.php
@@ -0,0 +1,222 @@
+runFunctionSnippet('run_report', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testClientFromJsonCredentials()
+ {
+ $jsonCredentials = self::requireEnv('GOOGLE_APPLICATION_CREDENTIALS');
+ $this->runFunctionSnippet('client_from_json_credentials', [$jsonCredentials]);
+
+ $client = $this->getLastReturnedSnippetValue();
+
+ $this->assertInstanceOf(BetaAnalyticsDataClient::class, $client);
+
+ try {
+ $this->runFunctionSnippet('client_from_json_credentials', ['does-not-exist.json']);
+ $this->fail('Non-existant json credentials should throw exception');
+ } catch (ValidationException $ex) {
+ $this->assertStringContainsString('does-not-exist.json', $ex->getMessage());
+ }
+ }
+
+ public function testGetCommonMetadata()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('get_common_metadata');
+
+ $this->assertStringContainsString('Dimensions and metrics', $output);
+ }
+
+ public function testGetMetadataByPropertyId()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('get_metadata_by_property_id', [$propertyId]);
+
+ $this->assertStringContainsString('Dimensions and metrics', $output);
+ }
+
+ public function testRunRealtimeReport()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_realtime_report', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunRealtimeReportWithMultipleDimensions()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_realtime_report_with_multiple_dimensions', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunBatchReport()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_batch_report', [$propertyId]);
+
+ $this->assertStringContainsString('Batch report result', $output);
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunPivotReport()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_pivot_report', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunRunRealtimeReportWithMultipleMetrics()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_realtime_report_with_multiple_metrics', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunReportWithDimensionExcludeFilter()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_report_with_dimension_exclude_filter', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunReportWithDimensionAndMetricFilters()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_report_with_dimension_and_metric_filters', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunReportWithDimensionFilter()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_report_with_dimension_filter', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunReportWithMultipleDimensionFilters()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_report_with_multiple_dimension_filters', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunReportWithMultipleMetrics()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_report_with_multiple_metrics', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunReportWithDimensionInListFilter()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_report_with_dimension_in_list_filter', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunReportWithNamedDateRanges()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_report_with_named_date_ranges', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunReportWithMultipleDimensions()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_report_with_multiple_dimensions', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunReportWithDateRanges()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_report_with_date_ranges', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunReportWithCohorts()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_report_with_cohorts', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunReportWithAggregations()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_report_with_aggregations', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunReportWithOrdering()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_report_with_ordering', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunReportWithPagination()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_report_with_pagination', [$propertyId]);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+
+ public function testRunReportWithPropertyQuota()
+ {
+ $propertyId = self::requireEnv('GA_TEST_PROPERTY_ID');
+ $output = $this->runFunctionSnippet('run_report_with_property_quota', [$propertyId]);
+
+ $this->assertStringContainsString('Tokens per day quota consumed', $output);
+ }
+}
diff --git a/analyticsdata/test/quickstartTest.php b/analyticsdata/test/quickstartTest.php
new file mode 100644
index 0000000000..705701dca3
--- /dev/null
+++ b/analyticsdata/test/quickstartTest.php
@@ -0,0 +1,42 @@
+runSnippet($file);
+
+ $this->assertStringContainsString('Report result', $output);
+ }
+}
diff --git a/appengine/flexible/analytics/app.php b/appengine/flexible/analytics/app.php
index 4b2084585b..16c21acdea 100644
--- a/appengine/flexible/analytics/app.php
+++ b/appengine/flexible/analytics/app.php
@@ -1,6 +1,6 @@
register(new TwigServiceProvider());
-$app['twig.path'] = [ __DIR__ ];
+// Create App
+$app = AppFactory::create();
-$app->get('/', function (Application $app, Request $request) {
- /** @var Twig_Environment $twig */
- $twig = $app['twig'];
+// Display errors
+$app->addErrorMiddleware(true, true, true);
+
+// Create Twig
+$twig = Twig::create(__DIR__);
+
+// Add Twig-View Middleware
+$app->add(TwigMiddleware::create($app, $twig));
+
+$app->get('/', function (Request $request, Response $response) use ($twig) {
+ $trackingId = getenv('GA_TRACKING_ID');
+ # [START gae_flex_analytics_track_event]
$baseUri = 'http://www.google-analytics.com/';
$client = new GuzzleHttp\Client(['base_uri' => $baseUri]);
- $form = [
+ $formData = [
'v' => '1', # API Version.
- 'tid' => $app['GA_TRACKING_ID'], # Tracking ID / Property ID.
+ 'tid' => $trackingId, # Tracking ID / Property ID.
# Anonymous Client Identifier. Ideally, this should be a UUID that
# is associated with particular user, device, or browser instance.
'cid' => '555',
@@ -42,11 +51,13 @@
'el' => 'Hearts', # Event label.
'ev' => 0, # Event value, must be an integer
];
- $response = $client->request('POST', 'collect', ['form_params' => $form]);
- return $twig->render('index.html.twig', [
- 'base_uri' => $baseUri,
- 'response_code' => $response->getStatusCode(),
- 'response_reason' => $response->getReasonPhrase()]);
+ $gaResponse = $client->request('POST', 'collect', ['form_params' => $formData]);
+ # [END gae_flex_analytics_track_event]
+ return $twig->render($response, 'index.html.twig', [
+ 'base_uri' => $baseUri,
+ 'response_code' => $gaResponse->getStatusCode(),
+ 'response_reason' => $gaResponse->getReasonPhrase()
+ ]);
});
return $app;
diff --git a/appengine/flexible/analytics/app.yaml b/appengine/flexible/analytics/app.yaml
index db289fcae2..f19ef14e67 100644
--- a/appengine/flexible/analytics/app.yaml
+++ b/appengine/flexible/analytics/app.yaml
@@ -1,5 +1,10 @@
runtime: php
-vm: true
+env: flex
runtime_config:
- document_root: web
\ No newline at end of file
+ document_root: .
+
+# [START gae_flex_analytics_env_variables]
+env_variables:
+ GA_TRACKING_ID: "YOUR-GA-TRACKING-ID"
+# [END gae_flex_analytics_env_variables]
diff --git a/appengine/flexible/analytics/composer.json b/appengine/flexible/analytics/composer.json
index be36330204..50c1ea7a3c 100644
--- a/appengine/flexible/analytics/composer.json
+++ b/appengine/flexible/analytics/composer.json
@@ -1,12 +1,8 @@
{
"require": {
- "silex/silex": "^1.3",
- "twig/twig": "^1.24",
- "guzzlehttp/guzzle": "^6.2",
- "symfony/css-selector": "^3.1"
- },
- "require-dev": {
- "google/cloud-tools": "<=1.0",
- "phpunit/phpunit": "~4"
+ "slim/slim": "^4.0",
+ "slim/psr7": "^1.3",
+ "slim/twig-view": "^3.2",
+ "guzzlehttp/guzzle": "^7.0"
}
}
diff --git a/appengine/flexible/analytics/composer.lock b/appengine/flexible/analytics/composer.lock
deleted file mode 100644
index cdfb696f1a..0000000000
--- a/appengine/flexible/analytics/composer.lock
+++ /dev/null
@@ -1,2216 +0,0 @@
-{
- "_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": "59555ce4a1e7978c31887d5ad06fb074",
- "content-hash": "13a16b8bc890c7c81f5400f14d46db83",
- "packages": [
- {
- "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": "pimple/pimple",
- "version": "v1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Pimple.git",
- "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d",
- "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Pimple": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Pimple is a simple Dependency Injection Container for PHP 5.3",
- "homepage": "http://pimple.sensiolabs.org/",
- "keywords": [
- "container",
- "dependency injection"
- ],
- "time": "2013-11-22 08:30:29"
- },
- {
- "name": "psr/http-message",
- "version": "1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "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",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ],
- "time": "2015-05-04 20:22:00"
- },
- {
- "name": "psr/log",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "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",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ],
- "time": "2012-12-21 11:40:51"
- },
- {
- "name": "silex/silex",
- "version": "v1.3.5",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Silex.git",
- "reference": "374c7e04040a6f781c90f7d746726a5daa78e783"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Silex/zipball/374c7e04040a6f781c90f7d746726a5daa78e783",
- "reference": "374c7e04040a6f781c90f7d746726a5daa78e783",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "pimple/pimple": "~1.0",
- "symfony/event-dispatcher": "~2.3|3.0.*",
- "symfony/http-foundation": "~2.3|3.0.*",
- "symfony/http-kernel": "~2.3|3.0.*",
- "symfony/routing": "~2.3|3.0.*"
- },
- "require-dev": {
- "doctrine/dbal": "~2.2",
- "monolog/monolog": "^1.4.1",
- "swiftmailer/swiftmailer": "~5",
- "symfony/browser-kit": "~2.3|3.0.*",
- "symfony/config": "~2.3|3.0.*",
- "symfony/css-selector": "~2.3|3.0.*",
- "symfony/debug": "~2.3|3.0.*",
- "symfony/dom-crawler": "~2.3|3.0.*",
- "symfony/finder": "~2.3|3.0.*",
- "symfony/form": "~2.3|3.0.*",
- "symfony/locale": "~2.3|3.0.*",
- "symfony/monolog-bridge": "~2.3|3.0.*",
- "symfony/options-resolver": "~2.3|3.0.*",
- "symfony/phpunit-bridge": "~2.7",
- "symfony/process": "~2.3|3.0.*",
- "symfony/security": "~2.3|3.0.*",
- "symfony/serializer": "~2.3|3.0.*",
- "symfony/translation": "~2.3|3.0.*",
- "symfony/twig-bridge": "~2.3|3.0.*",
- "symfony/validator": "~2.3|3.0.*",
- "twig/twig": "~1.8|~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Silex\\": "src/Silex"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Igor Wiedler",
- "email": "igor@wiedler.ch"
- }
- ],
- "description": "The PHP micro-framework based on the Symfony Components",
- "homepage": "http://silex.sensiolabs.org/",
- "keywords": [
- "microframework"
- ],
- "time": "2016-01-06 14:59:35"
- },
- {
- "name": "symfony/css-selector",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/css-selector.git",
- "reference": "2851e1932d77ce727776154d659b232d061e816a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/2851e1932d77ce727776154d659b232d061e816a",
- "reference": "2851e1932d77ce727776154d659b232d061e816a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\CssSelector\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jean-François Simon",
- "email": "jeanfrancois.simon@sensiolabs.com"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony CssSelector Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/debug",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/debug.git",
- "reference": "06e2d52e307ef880ac739f44ee6c2418ca9e3283"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/06e2d52e307ef880ac739f44ee6c2418ca9e3283",
- "reference": "06e2d52e307ef880ac739f44ee6c2418ca9e3283",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "psr/log": "~1.0"
- },
- "conflict": {
- "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
- },
- "require-dev": {
- "symfony/class-loader": "~2.8|~3.0",
- "symfony/http-kernel": "~2.8|~3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Debug\\": ""
- },
- "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 Debug Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "43e9a14f71db135da5c75dd5d383ecff6ada920e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/43e9a14f71db135da5c75dd5d383ecff6ada920e",
- "reference": "43e9a14f71db135da5c75dd5d383ecff6ada920e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/dependency-injection": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
- },
- "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 EventDispatcher Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:40:00"
- },
- {
- "name": "symfony/http-foundation",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-foundation.git",
- "reference": "1341139f906d295baa4f4abd55293d07e25a065a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1341139f906d295baa4f4abd55293d07e25a065a",
- "reference": "1341139f906d295baa4f4abd55293d07e25a065a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/polyfill-mbstring": "~1.1"
- },
- "require-dev": {
- "symfony/expression-language": "~2.8|~3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpFoundation\\": ""
- },
- "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 HttpFoundation Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 07:02:21"
- },
- {
- "name": "symfony/http-kernel",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-kernel.git",
- "reference": "177b63b2d50b63fa6d82ea41359ed9928cc7a1fb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/177b63b2d50b63fa6d82ea41359ed9928cc7a1fb",
- "reference": "177b63b2d50b63fa6d82ea41359ed9928cc7a1fb",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "psr/log": "~1.0",
- "symfony/debug": "~2.8|~3.0",
- "symfony/event-dispatcher": "~2.8|~3.0",
- "symfony/http-foundation": "~2.8.8|~3.0.8|~3.1.2|~3.2"
- },
- "conflict": {
- "symfony/config": "<2.8"
- },
- "require-dev": {
- "symfony/browser-kit": "~2.8|~3.0",
- "symfony/class-loader": "~2.8|~3.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/console": "~2.8|~3.0",
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/dependency-injection": "~2.8|~3.0",
- "symfony/dom-crawler": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/finder": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0",
- "symfony/routing": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0",
- "symfony/templating": "~2.8|~3.0",
- "symfony/translation": "~2.8|~3.0",
- "symfony/var-dumper": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/browser-kit": "",
- "symfony/class-loader": "",
- "symfony/config": "",
- "symfony/console": "",
- "symfony/dependency-injection": "",
- "symfony/finder": "",
- "symfony/var-dumper": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpKernel\\": ""
- },
- "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 HttpKernel Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-30 16:30:17"
- },
- {
- "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/routing",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/routing.git",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/9038984bd9c05ab07280121e9e10f61a7231457b",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "conflict": {
- "symfony/config": "<2.8"
- },
- "require-dev": {
- "doctrine/annotations": "~1.0",
- "doctrine/common": "~2.2",
- "psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/http-foundation": "~2.8|~3.0",
- "symfony/yaml": "~2.8|~3.0"
- },
- "suggest": {
- "doctrine/annotations": "For using the annotation loader",
- "symfony/config": "For using the all-in-one router or any loader",
- "symfony/dependency-injection": "For loading routes from a service",
- "symfony/expression-language": "For using expression matching",
- "symfony/http-foundation": "For using a Symfony Request object",
- "symfony/yaml": "For using the YAML loader"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Routing\\": ""
- },
- "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 Routing Component",
- "homepage": "https://symfony.com/",
- "keywords": [
- "router",
- "routing",
- "uri",
- "url"
- ],
- "time": "2016-06-29 05:40:00"
- },
- {
- "name": "twig/twig",
- "version": "v1.24.1",
- "source": {
- "type": "git",
- "url": "https://github.com/twigphp/Twig.git",
- "reference": "3566d311a92aae4deec6e48682dc5a4528c4a512"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/3566d311a92aae4deec6e48682dc5a4528c4a512",
- "reference": "3566d311a92aae4deec6e48682dc5a4528c4a512",
- "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.24-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-05-30 09:11:59"
- }
- ],
- "packages-dev": [
- {
- "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": "google/cloud-tools",
- "version": "v0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/GoogleCloudPlatform/php-tools.git",
- "reference": "5bbdd075efcfc07d13e364b9d6b7697344c6914d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/GoogleCloudPlatform/php-tools/zipball/5bbdd075efcfc07d13e364b9d6b7697344c6914d",
- "reference": "5bbdd075efcfc07d13e364b9d6b7697344c6914d",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/guzzle": "~5.3|~6.0",
- "php": ">=5.5",
- "phpunit/phpunit": "~4|~5",
- "symfony/browser-kit": "~2|~3",
- "symfony/process": "~2|~3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Google\\Cloud\\TestUtils\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "Takashi Matsuo",
- "email": "tmatsuo@google.com",
- "homepage": "https://wp.gaeflex.ninja/"
- }
- ],
- "description": "PHP tools for Google Cloud Platform",
- "homepage": "https://github.com/GoogleCloudPlatform/php-tools",
- "keywords": [
- "appengine",
- "gcp",
- "test"
- ],
- "time": "2016-07-11 17:18:10"
- },
- {
- "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": "2.2.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "phpunit/php-file-iterator": "~1.3",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-token-stream": "~1.3",
- "sebastian/environment": "^1.3.2",
- "sebastian/version": "~1.0"
- },
- "require-dev": {
- "ext-xdebug": ">=2.1.4",
- "phpunit/phpunit": "~4"
- },
- "suggest": {
- "ext-dom": "*",
- "ext-xdebug": ">=2.2.1",
- "ext-xmlwriter": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.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": "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": "2015-10-06 15:47:00"
- },
- {
- "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": "4.8.27",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c062dddcb68e44b563f66ee319ddae2b5a322a90",
- "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=5.3.3",
- "phpspec/prophecy": "^1.3.1",
- "phpunit/php-code-coverage": "~2.1",
- "phpunit/php-file-iterator": "~1.4",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-timer": "^1.0.6",
- "phpunit/phpunit-mock-objects": "~2.3",
- "sebastian/comparator": "~1.1",
- "sebastian/diff": "~1.2",
- "sebastian/environment": "~1.3",
- "sebastian/exporter": "~1.2",
- "sebastian/global-state": "~1.0",
- "sebastian/version": "~1.0",
- "symfony/yaml": "~2.1|~3.0"
- },
- "suggest": {
- "phpunit/php-invoker": "~1.1"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.8.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-07-21 06:48:14"
- },
- {
- "name": "phpunit/phpunit-mock-objects",
- "version": "2.3.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "php": ">=5.3.3",
- "phpunit/php-text-template": "~1.2",
- "sebastian/exporter": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "suggest": {
- "ext-soap": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3.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": "2015-10-02 06:51:40"
- },
- {
- "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.7",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716",
- "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "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": "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-05-17 03:18:57"
- },
- {
- "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/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/version",
- "version": "1.0.6",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "shasum": ""
- },
- "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": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2015-06-21 13:59:46"
- },
- {
- "name": "symfony/browser-kit",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/browser-kit.git",
- "reference": "dcf41ed026b0499254385b5c88f03247b2ba010b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/dcf41ed026b0499254385b5c88f03247b2ba010b",
- "reference": "dcf41ed026b0499254385b5c88f03247b2ba010b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/dom-crawler": "~2.8|~3.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\BrowserKit\\": ""
- },
- "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 BrowserKit Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/dom-crawler",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/dom-crawler.git",
- "reference": "99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0",
- "reference": "99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/css-selector": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\DomCrawler\\": ""
- },
- "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 DomCrawler Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/process",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "5c11a1a4d4016662eeaf0f8757958c7de069f9a0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/5c11a1a4d4016662eeaf0f8757958c7de069f9a0",
- "reference": "5c11a1a4d4016662eeaf0f8757958c7de069f9a0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Process\\": ""
- },
- "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 Process Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:42:25"
- },
- {
- "name": "symfony/yaml",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/2884c26ce4c1d61aebf423a8b912950fe7c764de",
- "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "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 Yaml Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "webmozart/assert",
- "version": "1.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozart/assert.git",
- "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
- "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.6"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-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": "2015-08-24 13:29:44"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": [],
- "platform-dev": []
-}
diff --git a/appengine/flexible/analytics/index.php b/appengine/flexible/analytics/index.php
new file mode 100644
index 0000000000..3fc7a490f3
--- /dev/null
+++ b/appengine/flexible/analytics/index.php
@@ -0,0 +1,26 @@
+run();
diff --git a/appengine/flexible/analytics/phpunit.xml b/appengine/flexible/analytics/phpunit.xml
deleted file mode 100644
index 3f69c724d7..0000000000
--- a/appengine/flexible/analytics/phpunit.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
- tests
-
-
-
-
-
-
-
- app.php
-
-
-
diff --git a/appengine/flexible/analytics/phpunit.xml.dist b/appengine/flexible/analytics/phpunit.xml.dist
new file mode 100644
index 0000000000..86b5ca017a
--- /dev/null
+++ b/appengine/flexible/analytics/phpunit.xml.dist
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+ test
+ test/DeployTest.php
+
+
+
+
+
+
+
+ app.php
+
+ ./vendor
+
+
+
+
diff --git a/appengine/flexible/analytics/test/DeployTest.php b/appengine/flexible/analytics/test/DeployTest.php
new file mode 100644
index 0000000000..25d27cee63
--- /dev/null
+++ b/appengine/flexible/analytics/test/DeployTest.php
@@ -0,0 +1,35 @@
+client->get('/');
+ $this->assertEquals('200', $resp->getStatusCode(),
+ 'top page status code');
+ $this->assertStringContainsString('returned 200', (string) $resp->getBody(),
+ 'top page content');
+ }
+}
diff --git a/appengine/flexible/analytics/test/LocalTest.php b/appengine/flexible/analytics/test/LocalTest.php
new file mode 100644
index 0000000000..26915b8924
--- /dev/null
+++ b/appengine/flexible/analytics/test/LocalTest.php
@@ -0,0 +1,40 @@
+requireEnv('GA_TRACKING_ID');
+
+ $app = require __DIR__ . '/../app.php';
+
+ // Access the modules app top page.
+ $request = (new RequestFactory)->createRequest('GET', '/');
+ $response = $app->handle($request);
+ $this->assertEquals(200, $response->getStatusCode());
+ $body = (string) $response->getBody();
+ $this->assertStringContainsString('returned 200', $body);
+ }
+}
diff --git a/appengine/flexible/analytics/tests/LocalTest.php b/appengine/flexible/analytics/tests/LocalTest.php
deleted file mode 100644
index a6163ef215..0000000000
--- a/appengine/flexible/analytics/tests/LocalTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-client = $this->createClient();
- }
-
- public function createApplication()
- {
- $app = require __DIR__ . '/../app.php';
- $app['GA_TRACKING_ID'] = getenv('GA_TRACKING_ID');
- return $app;
- }
-
- public function testIndex()
- {
- // Access the modules app top page.
- $client = $this->client;
- $crawler = $client->request('GET', '/');
- $this->assertTrue($client->getResponse()->isOk());
- $this->assertEquals(1, $crawler->filter(
- 'html:contains("returned 200")')->count());
- }
-}
diff --git a/appengine/flexible/analytics/tests/bootstrap.php b/appengine/flexible/analytics/tests/bootstrap.php
deleted file mode 100644
index 855a955f73..0000000000
--- a/appengine/flexible/analytics/tests/bootstrap.php
+++ /dev/null
@@ -1,17 +0,0 @@
-run();
diff --git a/appengine/flexible/cloudsql/README.md b/appengine/flexible/cloudsql/README.md
deleted file mode 100644
index e2c4b8a321..0000000000
--- a/appengine/flexible/cloudsql/README.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# Cloud SQL & Google App Engine Flexible Environment
-
-This sample application demonstrates how to use [Cloud SQL with Google App Engine Flexible Environment](https://cloud.google.com/appengine/docs/flexible/php/using-cloud-sql).
-
-## Setup
-
-Before running this sample:
-
-## Prerequisites
-
-- Install [`composer`](https://getcomposer.org)
-- Install dependencies by running:
-
-```sh
-composer install
-```
-
-## Setup
-
-Before you can run or deploy the sample, you will need to do the following:
-
-1. Create a [First Generation Cloud SQL](https://cloud.google.com/sql/docs/create-instance) instance. You can do this from the [Cloud Console](https://console.developers.google.com) or via the [Cloud SDK](https://cloud.google.com/sdk). To create it via the SDK use the following command:
-
- $ gcloud sql instances create YOUR_INSTANCE_NAME
-
-1. Set the root password on your Cloud SQL instance:
-
- $ gcloud sql instances set-root-password YOUR_INSTANCE_NAME --password YOUR_INSTANCE_ROOT_PASSWORD
-
-1. Update the connection string in `app.yaml` with your configuration values. These values are used when the application is deployed.
-
-## Run locally
-
-To run locally, you can either run your own MySQL server locally and set the connection string in `app.yaml`, or you can [connect to your CloudSQL instance externally](https://cloud.google.com/sql/docs/external#appaccess).
-
-```sh
-cd php-docs-samples/appengine/standard/cloudsql
-
-# set local mysql connection parameters
-export MYSQL_DSN="mysql:host=127.0.0.1;port=3306;dbname=guestbook"
-export MYSQL_USERNAME=root
-export MYSQL_PASSWORD=
-
-php -S localhost:8080
-```
-
-> be sure the `MYSQL_` environment variables are appropriate for your mysql instance
-
-Now you can view the app running at [http://localhost:8080](http://localhost:8080)
-in your browser.
-
-## Deploy to App Engine
-
-**Prerequisites**
-
-- Install the [Google Cloud SDK](https://developers.google.com/cloud/sdk/).
-
-**Deploy with gcloud**
-
-```
-gcloud config set project YOUR_PROJECT_ID
-gcloud app deploy
-gcloud app browse
-```
-
-The last command will open `https://{YOUR_PROJECT_ID}.appspot.com/`
-in your browser.
diff --git a/appengine/flexible/cloudsql/app.php b/appengine/flexible/cloudsql/app.php
deleted file mode 100644
index c6df99c118..0000000000
--- a/appengine/flexible/cloudsql/app.php
+++ /dev/null
@@ -1,72 +0,0 @@
-setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- $pdo->query('CREATE TABLE IF NOT EXISTS visits ' .
- '(time_stamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP, user_ip CHAR(64))');
- return $pdo;
-};
-
-$app->get('/', function (Application $app, Request $request) {
- $ip = $request->GetClientIp();
- // Keep only the first two octets of the IP address.
- $octets = explode($separator = ':', $ip);
- if (count($octets) < 2) { // Must be ip4 address
- $octets = explode($separator = '.', $ip);
- }
- if (count($octets) < 2) {
- $octets = ['bad', 'ip']; // IP address will be recorded as bad.ip.
- }
- // Replace empty chunks with zeros.
- $octets = array_map(function ($x) {
- return $x == '' ? '0' : $x;
- }, $octets);
- $user_ip = $octets[0] . $separator . $octets[1];
-
- // Insert a visit into the database.
- /** @var PDO $pdo */
- $pdo = $app['pdo'];
- $insert = $pdo->prepare('INSERT INTO visits (user_ip) values (:user_ip)');
- $insert->execute(['user_ip' => $user_ip]);
-
- // Look up the last 10 visits
- $select = $pdo->prepare(
- 'SELECT * FROM visits ORDER BY time_stamp DESC LIMIT 10');
- $select->execute();
- $visits = ["Last 10 visits:"];
- while ($row = $select->fetch(PDO::FETCH_ASSOC)) {
- array_push($visits, sprintf('Time: %s Addr: %s', $row['time_stamp'],
- $row['user_ip']));
- }
- return new Response(implode("\n", $visits), 200,
- ['Content-Type' => 'text/plain']);
-});
-
-return $app;
diff --git a/appengine/flexible/cloudsql/app.yaml b/appengine/flexible/cloudsql/app.yaml
deleted file mode 100644
index db289fcae2..0000000000
--- a/appengine/flexible/cloudsql/app.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-runtime: php
-vm: true
-
-runtime_config:
- document_root: web
\ No newline at end of file
diff --git a/appengine/flexible/cloudsql/composer.json b/appengine/flexible/cloudsql/composer.json
deleted file mode 100644
index 48deb1ee12..0000000000
--- a/appengine/flexible/cloudsql/composer.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "require": {
- "silex/silex": "^1.3",
- "google/apiclient": "^2.0"
- },
- "require-dev": {
- "google/cloud-tools": "<=1.0",
- "phpunit/phpunit": "~4"
- }
-}
diff --git a/appengine/flexible/cloudsql/composer.lock b/appengine/flexible/cloudsql/composer.lock
deleted file mode 100644
index 0fb32bb359..0000000000
--- a/appengine/flexible/cloudsql/composer.lock
+++ /dev/null
@@ -1,2503 +0,0 @@
-{
- "_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": "cab8f37ba4d937f5a7f5a06543d8c2a8",
- "content-hash": "b1542efc811f21f6a65c92410484e5da",
- "packages": [
- {
- "name": "firebase/php-jwt",
- "version": "v3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/firebase/php-jwt.git",
- "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/firebase/php-jwt/zipball/fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1",
- "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Firebase\\JWT\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Neuman Vong",
- "email": "neuman+pear@twilio.com",
- "role": "Developer"
- },
- {
- "name": "Anant Narayanan",
- "email": "anant@php.net",
- "role": "Developer"
- }
- ],
- "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.",
- "homepage": "https://github.com/firebase/php-jwt",
- "time": "2015-07-22 18:31:08"
- },
- {
- "name": "google/apiclient",
- "version": "v2.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/google/google-api-php-client.git",
- "reference": "18dd5534280318598e8770cb7929e9a542e91c0d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/google/google-api-php-client/zipball/18dd5534280318598e8770cb7929e9a542e91c0d",
- "reference": "18dd5534280318598e8770cb7929e9a542e91c0d",
- "shasum": ""
- },
- "require": {
- "firebase/php-jwt": "~2.0|~3.0",
- "google/apiclient-services": "^0.5",
- "google/auth": "0.9",
- "guzzlehttp/guzzle": "~5.2|~6.0",
- "guzzlehttp/psr7": "^1.2",
- "monolog/monolog": "^1.17",
- "php": ">=5.4",
- "phpseclib/phpseclib": "~2.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4",
- "squizlabs/php_codesniffer": "~2.3",
- "symfony/css-selector": "~2.1",
- "symfony/dom-crawler": "~2.1",
- "tedivm/stash": "^0.14.1"
- },
- "suggest": {
- "tedivm/stash": "For caching certs and tokens (using Google_Client::setCache)"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Google_": "src/"
- },
- "classmap": [
- "src/Google/Service/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "description": "Client library for Google APIs",
- "homepage": "http://developers.google.com/api-client-library/php",
- "keywords": [
- "google"
- ],
- "time": "2016-07-21 18:41:10"
- },
- {
- "name": "google/apiclient-services",
- "version": "v0.5",
- "target-dir": "Google/Service",
- "source": {
- "type": "git",
- "url": "https://github.com/google/google-api-php-client-services.git",
- "reference": "a2d43f4c7eace8c7aa16c5ea83191344c63b4526"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/google/google-api-php-client-services/zipball/a2d43f4c7eace8c7aa16c5ea83191344c63b4526",
- "reference": "a2d43f4c7eace8c7aa16c5ea83191344c63b4526",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Google_Service_": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "description": "Client library for Google APIs",
- "homepage": "http://developers.google.com/api-client-library/php",
- "keywords": [
- "google"
- ],
- "time": "2016-07-21 18:01:41"
- },
- {
- "name": "google/auth",
- "version": "v0.9",
- "source": {
- "type": "git",
- "url": "https://github.com/google/google-auth-library-php.git",
- "reference": "47c3c6bece495e58381a21fed13a735bd23a51cc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/google/google-auth-library-php/zipball/47c3c6bece495e58381a21fed13a735bd23a51cc",
- "reference": "47c3c6bece495e58381a21fed13a735bd23a51cc",
- "shasum": ""
- },
- "require": {
- "firebase/php-jwt": "~2.0|~3.0",
- "guzzlehttp/guzzle": "~5.3|~6.0",
- "guzzlehttp/psr7": "~1.2",
- "php": ">=5.4",
- "psr/cache": "^1.0",
- "psr/http-message": "^1.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^1.11",
- "phpunit/phpunit": "3.7.*"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ],
- "psr-4": {
- "Google\\Auth\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "description": "Google Auth Library for PHP",
- "homepage": "http://github.com/google/google-auth-library-php",
- "keywords": [
- "Authentication",
- "google",
- "oauth2"
- ],
- "time": "2016-06-01 22:07:52"
- },
- {
- "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": "monolog/monolog",
- "version": "1.20.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Seldaek/monolog.git",
- "reference": "55841909e2bcde01b5318c35f2b74f8ecc86e037"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/55841909e2bcde01b5318c35f2b74f8ecc86e037",
- "reference": "55841909e2bcde01b5318c35f2b74f8ecc86e037",
- "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-02 14:02:10"
- },
- {
- "name": "phpseclib/phpseclib",
- "version": "2.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "3d265f7c079f5b37d33475f996d7a383c5fc8aeb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/3d265f7c079f5b37d33475f996d7a383c5fc8aeb",
- "reference": "3d265f7c079f5b37d33475f996d7a383c5fc8aeb",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phing/phing": "~2.7",
- "phpunit/phpunit": "~4.0",
- "sami/sami": "~2.0",
- "squizlabs/php_codesniffer": "~2.0"
- },
- "suggest": {
- "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.",
- "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.",
- "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
- "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
- },
- "type": "library",
- "autoload": {
- "files": [
- "phpseclib/bootstrap.php"
- ],
- "psr-4": {
- "phpseclib\\": "phpseclib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jim Wigginton",
- "email": "terrafrost@php.net",
- "role": "Lead Developer"
- },
- {
- "name": "Patrick Monnerat",
- "email": "pm@datasphere.ch",
- "role": "Developer"
- },
- {
- "name": "Andreas Fischer",
- "email": "bantu@phpbb.com",
- "role": "Developer"
- },
- {
- "name": "Hans-Jürgen Petrich",
- "email": "petrich@tronic-media.com",
- "role": "Developer"
- },
- {
- "name": "Graham Campbell",
- "email": "graham@alt-three.com",
- "role": "Developer"
- }
- ],
- "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.",
- "homepage": "http://phpseclib.sourceforge.net/",
- "keywords": [
- "BigInteger",
- "aes",
- "asn.1",
- "asn1",
- "blowfish",
- "crypto",
- "cryptography",
- "encryption",
- "rsa",
- "security",
- "sftp",
- "signature",
- "signing",
- "ssh",
- "twofish",
- "x.509",
- "x509"
- ],
- "time": "2016-05-13 01:15:21"
- },
- {
- "name": "pimple/pimple",
- "version": "v1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Pimple.git",
- "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d",
- "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Pimple": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Pimple is a simple Dependency Injection Container for PHP 5.3",
- "homepage": "http://pimple.sensiolabs.org/",
- "keywords": [
- "container",
- "dependency injection"
- ],
- "time": "2013-11-22 08:30:29"
- },
- {
- "name": "psr/cache",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/cache.git",
- "reference": "9e66031f41fbbdda45ee11e93c45d480ccba3eb3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/cache/zipball/9e66031f41fbbdda45ee11e93c45d480ccba3eb3",
- "reference": "9e66031f41fbbdda45ee11e93c45d480ccba3eb3",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Cache\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for caching libraries",
- "keywords": [
- "cache",
- "psr",
- "psr-6"
- ],
- "time": "2015-12-11 02:52:07"
- },
- {
- "name": "psr/http-message",
- "version": "1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "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",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ],
- "time": "2015-05-04 20:22:00"
- },
- {
- "name": "psr/log",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "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",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ],
- "time": "2012-12-21 11:40:51"
- },
- {
- "name": "silex/silex",
- "version": "v1.3.5",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Silex.git",
- "reference": "374c7e04040a6f781c90f7d746726a5daa78e783"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Silex/zipball/374c7e04040a6f781c90f7d746726a5daa78e783",
- "reference": "374c7e04040a6f781c90f7d746726a5daa78e783",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "pimple/pimple": "~1.0",
- "symfony/event-dispatcher": "~2.3|3.0.*",
- "symfony/http-foundation": "~2.3|3.0.*",
- "symfony/http-kernel": "~2.3|3.0.*",
- "symfony/routing": "~2.3|3.0.*"
- },
- "require-dev": {
- "doctrine/dbal": "~2.2",
- "monolog/monolog": "^1.4.1",
- "swiftmailer/swiftmailer": "~5",
- "symfony/browser-kit": "~2.3|3.0.*",
- "symfony/config": "~2.3|3.0.*",
- "symfony/css-selector": "~2.3|3.0.*",
- "symfony/debug": "~2.3|3.0.*",
- "symfony/dom-crawler": "~2.3|3.0.*",
- "symfony/finder": "~2.3|3.0.*",
- "symfony/form": "~2.3|3.0.*",
- "symfony/locale": "~2.3|3.0.*",
- "symfony/monolog-bridge": "~2.3|3.0.*",
- "symfony/options-resolver": "~2.3|3.0.*",
- "symfony/phpunit-bridge": "~2.7",
- "symfony/process": "~2.3|3.0.*",
- "symfony/security": "~2.3|3.0.*",
- "symfony/serializer": "~2.3|3.0.*",
- "symfony/translation": "~2.3|3.0.*",
- "symfony/twig-bridge": "~2.3|3.0.*",
- "symfony/validator": "~2.3|3.0.*",
- "twig/twig": "~1.8|~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Silex\\": "src/Silex"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Igor Wiedler",
- "email": "igor@wiedler.ch"
- }
- ],
- "description": "The PHP micro-framework based on the Symfony Components",
- "homepage": "http://silex.sensiolabs.org/",
- "keywords": [
- "microframework"
- ],
- "time": "2016-01-06 14:59:35"
- },
- {
- "name": "symfony/debug",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/debug.git",
- "reference": "06e2d52e307ef880ac739f44ee6c2418ca9e3283"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/06e2d52e307ef880ac739f44ee6c2418ca9e3283",
- "reference": "06e2d52e307ef880ac739f44ee6c2418ca9e3283",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "psr/log": "~1.0"
- },
- "conflict": {
- "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
- },
- "require-dev": {
- "symfony/class-loader": "~2.8|~3.0",
- "symfony/http-kernel": "~2.8|~3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Debug\\": ""
- },
- "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 Debug Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "43e9a14f71db135da5c75dd5d383ecff6ada920e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/43e9a14f71db135da5c75dd5d383ecff6ada920e",
- "reference": "43e9a14f71db135da5c75dd5d383ecff6ada920e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/dependency-injection": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
- },
- "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 EventDispatcher Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:40:00"
- },
- {
- "name": "symfony/http-foundation",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-foundation.git",
- "reference": "1341139f906d295baa4f4abd55293d07e25a065a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1341139f906d295baa4f4abd55293d07e25a065a",
- "reference": "1341139f906d295baa4f4abd55293d07e25a065a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/polyfill-mbstring": "~1.1"
- },
- "require-dev": {
- "symfony/expression-language": "~2.8|~3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpFoundation\\": ""
- },
- "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 HttpFoundation Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 07:02:21"
- },
- {
- "name": "symfony/http-kernel",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-kernel.git",
- "reference": "177b63b2d50b63fa6d82ea41359ed9928cc7a1fb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/177b63b2d50b63fa6d82ea41359ed9928cc7a1fb",
- "reference": "177b63b2d50b63fa6d82ea41359ed9928cc7a1fb",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "psr/log": "~1.0",
- "symfony/debug": "~2.8|~3.0",
- "symfony/event-dispatcher": "~2.8|~3.0",
- "symfony/http-foundation": "~2.8.8|~3.0.8|~3.1.2|~3.2"
- },
- "conflict": {
- "symfony/config": "<2.8"
- },
- "require-dev": {
- "symfony/browser-kit": "~2.8|~3.0",
- "symfony/class-loader": "~2.8|~3.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/console": "~2.8|~3.0",
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/dependency-injection": "~2.8|~3.0",
- "symfony/dom-crawler": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/finder": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0",
- "symfony/routing": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0",
- "symfony/templating": "~2.8|~3.0",
- "symfony/translation": "~2.8|~3.0",
- "symfony/var-dumper": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/browser-kit": "",
- "symfony/class-loader": "",
- "symfony/config": "",
- "symfony/console": "",
- "symfony/dependency-injection": "",
- "symfony/finder": "",
- "symfony/var-dumper": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpKernel\\": ""
- },
- "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 HttpKernel Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-30 16:30:17"
- },
- {
- "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/routing",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/routing.git",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/9038984bd9c05ab07280121e9e10f61a7231457b",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "conflict": {
- "symfony/config": "<2.8"
- },
- "require-dev": {
- "doctrine/annotations": "~1.0",
- "doctrine/common": "~2.2",
- "psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/http-foundation": "~2.8|~3.0",
- "symfony/yaml": "~2.8|~3.0"
- },
- "suggest": {
- "doctrine/annotations": "For using the annotation loader",
- "symfony/config": "For using the all-in-one router or any loader",
- "symfony/dependency-injection": "For loading routes from a service",
- "symfony/expression-language": "For using expression matching",
- "symfony/http-foundation": "For using a Symfony Request object",
- "symfony/yaml": "For using the YAML loader"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Routing\\": ""
- },
- "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 Routing Component",
- "homepage": "https://symfony.com/",
- "keywords": [
- "router",
- "routing",
- "uri",
- "url"
- ],
- "time": "2016-06-29 05:40:00"
- }
- ],
- "packages-dev": [
- {
- "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": "google/cloud-tools",
- "version": "v0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/GoogleCloudPlatform/php-tools.git",
- "reference": "5bbdd075efcfc07d13e364b9d6b7697344c6914d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/GoogleCloudPlatform/php-tools/zipball/5bbdd075efcfc07d13e364b9d6b7697344c6914d",
- "reference": "5bbdd075efcfc07d13e364b9d6b7697344c6914d",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/guzzle": "~5.3|~6.0",
- "php": ">=5.5",
- "phpunit/phpunit": "~4|~5",
- "symfony/browser-kit": "~2|~3",
- "symfony/process": "~2|~3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Google\\Cloud\\TestUtils\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "Takashi Matsuo",
- "email": "tmatsuo@google.com",
- "homepage": "https://wp.gaeflex.ninja/"
- }
- ],
- "description": "PHP tools for Google Cloud Platform",
- "homepage": "https://github.com/GoogleCloudPlatform/php-tools",
- "keywords": [
- "appengine",
- "gcp",
- "test"
- ],
- "time": "2016-07-11 17:18:10"
- },
- {
- "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": "2.2.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "phpunit/php-file-iterator": "~1.3",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-token-stream": "~1.3",
- "sebastian/environment": "^1.3.2",
- "sebastian/version": "~1.0"
- },
- "require-dev": {
- "ext-xdebug": ">=2.1.4",
- "phpunit/phpunit": "~4"
- },
- "suggest": {
- "ext-dom": "*",
- "ext-xdebug": ">=2.2.1",
- "ext-xmlwriter": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.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": "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": "2015-10-06 15:47:00"
- },
- {
- "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": "4.8.27",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c062dddcb68e44b563f66ee319ddae2b5a322a90",
- "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=5.3.3",
- "phpspec/prophecy": "^1.3.1",
- "phpunit/php-code-coverage": "~2.1",
- "phpunit/php-file-iterator": "~1.4",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-timer": "^1.0.6",
- "phpunit/phpunit-mock-objects": "~2.3",
- "sebastian/comparator": "~1.1",
- "sebastian/diff": "~1.2",
- "sebastian/environment": "~1.3",
- "sebastian/exporter": "~1.2",
- "sebastian/global-state": "~1.0",
- "sebastian/version": "~1.0",
- "symfony/yaml": "~2.1|~3.0"
- },
- "suggest": {
- "phpunit/php-invoker": "~1.1"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.8.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-07-21 06:48:14"
- },
- {
- "name": "phpunit/phpunit-mock-objects",
- "version": "2.3.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "php": ">=5.3.3",
- "phpunit/php-text-template": "~1.2",
- "sebastian/exporter": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "suggest": {
- "ext-soap": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3.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": "2015-10-02 06:51:40"
- },
- {
- "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.7",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716",
- "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "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": "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-05-17 03:18:57"
- },
- {
- "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/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/version",
- "version": "1.0.6",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "shasum": ""
- },
- "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": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2015-06-21 13:59:46"
- },
- {
- "name": "symfony/browser-kit",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/browser-kit.git",
- "reference": "dcf41ed026b0499254385b5c88f03247b2ba010b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/dcf41ed026b0499254385b5c88f03247b2ba010b",
- "reference": "dcf41ed026b0499254385b5c88f03247b2ba010b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/dom-crawler": "~2.8|~3.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\BrowserKit\\": ""
- },
- "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 BrowserKit Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/dom-crawler",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/dom-crawler.git",
- "reference": "99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0",
- "reference": "99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/css-selector": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\DomCrawler\\": ""
- },
- "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 DomCrawler Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/process",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "5c11a1a4d4016662eeaf0f8757958c7de069f9a0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/5c11a1a4d4016662eeaf0f8757958c7de069f9a0",
- "reference": "5c11a1a4d4016662eeaf0f8757958c7de069f9a0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Process\\": ""
- },
- "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 Process Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:42:25"
- },
- {
- "name": "symfony/yaml",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/2884c26ce4c1d61aebf423a8b912950fe7c764de",
- "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "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 Yaml Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "webmozart/assert",
- "version": "1.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozart/assert.git",
- "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
- "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.6"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-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": "2015-08-24 13:29:44"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": [],
- "platform-dev": []
-}
diff --git a/appengine/flexible/cloudsql/nginx-app.conf b/appengine/flexible/cloudsql/nginx-app.conf
deleted file mode 100644
index 634c60a7d7..0000000000
--- a/appengine/flexible/cloudsql/nginx-app.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-# [START static-config]
-location / {
- # try to serve file directly, fallback to front controller
- try_files $uri /index.php$is_args$args;
-}
-# [END static-config]
diff --git a/appengine/flexible/cloudsql/phpunit.xml b/appengine/flexible/cloudsql/phpunit.xml
deleted file mode 100644
index 21e45651dd..0000000000
--- a/appengine/flexible/cloudsql/phpunit.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- tests
-
-
-
-
-
-
-
- app.php
-
-
-
diff --git a/appengine/flexible/cloudsql/tests/LocalTest.php b/appengine/flexible/cloudsql/tests/LocalTest.php
deleted file mode 100644
index a28fb5c68c..0000000000
--- a/appengine/flexible/cloudsql/tests/LocalTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-client = $this->createClient();
- }
-
- public function createApplication()
- {
- $app = require __DIR__ . '/../app.php';
- $app['mysql.dsn'] = getenv('MYSQL_DSN');
- $app['mysql.user'] = getenv('MYSQL_USER');
- $app['mysql.password'] = getenv('MYSQL_PASSWORD');
- if ($app['mysql.dsn'] === false ||
- $app['mysql.user'] === false ||
- $app['mysql.password'] === false) {
- $this->markTestSkipped('set the MYSQL_DSN, MYSQL_USER and MYSQL_PASSWORD environment variables');
- }
- return $app;
- }
-
- public function testIndex()
- {
- // Access the modules app top page.
- $client = $this->client;
- $client->request('GET', '/');
- $this->assertTrue($client->getResponse()->isOk());
- $text = $client->getResponse()->getContent();
- $this->assertContains("Last 10 visits:", $text);
- }
-}
diff --git a/appengine/flexible/cloudsql/tests/bootstrap.php b/appengine/flexible/cloudsql/tests/bootstrap.php
deleted file mode 100644
index 855a955f73..0000000000
--- a/appengine/flexible/cloudsql/tests/bootstrap.php
+++ /dev/null
@@ -1,17 +0,0 @@
-run();
diff --git a/appengine/flexible/datastore/README.md b/appengine/flexible/datastore/README.md
index 0c96fa0ab9..f25bce4ef8 100644
--- a/appengine/flexible/datastore/README.md
+++ b/appengine/flexible/datastore/README.md
@@ -12,19 +12,6 @@ This sample application demonstrates how to invoke Google Cloud Datastore from
- Enable the "Google Cloud Datastore API" under "APIs & auth > APIs."
-- edit `app.yaml` and change `YOUR_GCP_PROJECT_ID` to your App Engine project ID
-
-- For local development also follow the instructions below.
-
- - Go to "Credentials" and create a new Service Account.
-
- - Select "Generate new JSON key", then download a new JSON file.
-
- - Set the following environment variables:
-
- - `GOOGLE_APPLICATION_CREDENTIALS`: the file path to the downloaded JSON file.
- - `GCLOUD_DATASET_ID`: Your app engine project ID
-
## Prerequisites
- Install [`composer`](https://getcomposer.org)
@@ -46,3 +33,14 @@ This sample application demonstrates how to invoke Google Cloud Datastore from
$ gcloud config set project YOUR_PROJECT_ID
$ gcloud app deploy
```
+
+## Run Locally
+
+- Go to "Credentials" and create a new Service Account.
+
+- Select "Generate new JSON key", then download a new JSON file.
+
+- Set the following environment variables:
+
+ - `GOOGLE_APPLICATION_CREDENTIALS`: the file path to the downloaded JSON file.
+ - `GCLOUD_PROJECT`: Your project ID
diff --git a/appengine/flexible/datastore/app.php b/appengine/flexible/datastore/app.php
index 6bcf61923d..4eb850a2f9 100644
--- a/appengine/flexible/datastore/app.php
+++ b/appengine/flexible/datastore/app.php
@@ -1,6 +1,6 @@
2 ];
- $client = new \Google_Client(['retry' => $retryConfig ]);
- $client->setScopes([
- Google_Service_Datastore::CLOUD_PLATFORM,
- Google_Service_Datastore::DATASTORE,
+// Display errors
+$app->addErrorMiddleware(true, true, true);
+
+// Add IP address middleware
+$checkProxyHeaders = true;
+$trustedProxies = ['10.0.0.1', '10.0.0.2'];
+$app->add(new IpAddress($checkProxyHeaders, $trustedProxies));
+
+$app->get('/', function (Request $request, Response $response) {
+ $projectId = getenv('GCLOUD_PROJECT');
+ if (empty($projectId)) {
+ $response->getBody()->write('Set the GCLOUD_PROJECT environment variable to run locally');
+ return $response;
+ }
+
+ # [START gae_flex_datastore_client]
+ $datastore = new DatastoreClient([
+ 'projectId' => $projectId
+ ]);
+ # [END gae_flex_datastore_client]
+
+ // determine the user's IP
+ $user_ip = get_user_ip($request);
+
+ # [START gae_flex_datastore_entity]
+ // Create an entity to insert into datastore.
+ $key = $datastore->key('visit');
+ $entity = $datastore->entity($key, [
+ 'user_ip' => $user_ip,
+ 'timestamp' => new DateTime(),
]);
- $client->useApplicationDefaultCredentials();
- return new \Google_Service_Datastore($client);
-};
+ $datastore->insert($entity);
+ # [END gae_flex_datastore_entity]
+
+ # [START gae_flex_datastore_query]
+ // Query recent visits.
+ $query = $datastore->query()
+ ->kind('visit')
+ ->order('timestamp', 'DESCENDING')
+ ->limit(10);
+ $results = $datastore->runQuery($query);
+ $visits = [];
+ foreach ($results as $entity) {
+ $visits[] = sprintf('Time: %s Addr: %s',
+ $entity['timestamp']->format('Y-m-d H:i:s'),
+ $entity['user_ip']);
+ }
+ # [END gae_flex_datastore_query]
+ array_unshift($visits, 'Last 10 visits:');
+ $response->getBody()->write(implode("\n", $visits));
-$app->get('/', function (Application $app, Request $request) {
- /** @var \Google_Service_Datastore $datastore */
- $datastore = $app['datastore'];
- $ip = $request->GetClientIp();
+ return $response
+ ->withStatus(200)
+ ->withHeader('Content-Type', 'text/plain');
+});
+
+function get_user_ip(Request $request)
+{
+ $ip = $request->getAttribute('ip_address');
// Keep only the first two octets of the IP address.
$octets = explode($separator = ':', $ip);
if (count($octets) < 2) { // Must be ip4 address
@@ -52,60 +96,7 @@
return $x == '' ? '0' : $x;
}, $octets);
$user_ip = $octets[0] . $separator . $octets[1];
- // Create an entity to insert into datastore.
- $key = new \Google_Service_Datastore_Key(['path' => ['kind' => 'visit']]);
- $date = new DateTime();
- $date->setTimezone(new DateTimeZone('UTC'));
- $properties = [
- 'user_ip' => ['stringValue' => $user_ip],
- 'timestamp' => ['timestampValue' => $date->format("Y-m-d\TH:i:s\Z")]
- ];
- $entity = new \Google_Service_Datastore_Entity([
- 'key' => $key,
- 'properties' => $properties
- ]);
-
- // Use "NON_TRANSACTIONAL" for simplicity. However, it means that we may
- // not see this result in the query below.
- $request = new \Google_Service_Datastore_CommitRequest([
- 'mode' => 'NON_TRANSACTIONAL',
- 'mutations' => [
- [
- 'insert' => $entity,
- ]
- ]
- ]);
- $dataset_id = $app['google.dataset_id'];
- $datastore->projects->commit($dataset_id, $request);
-
- $query = new \Google_Service_Datastore_Query([
- 'kind' => [
- [
- 'name' => 'visit',
- ],
- ],
- 'order' => [
- 'property' => [
- 'name' => 'timestamp',
- ],
- 'direction' => 'DESCENDING',
- ],
- 'limit' => 10,
- ]);
- $request = new \Google_Service_Datastore_RunQueryRequest();
- $request->setQuery($query);
- $response = $datastore->projects->runQuery($dataset_id, $request);
- /** @var \Google_Service_Datastore_QueryResultBatch $batch */
- $batch = $response->getBatch();
- $visits = ["Last 10 visits:"];
- foreach ($batch->getEntityResults() as $entityResult) {
- $properties = $entityResult->getEntity()->getProperties();
- array_push($visits, sprintf('Time: %s Addr: %s',
- $properties['timestamp']['timestampValue'],
- $properties['user_ip']['stringValue']));
- }
- return new Response(implode("\n", $visits), 200,
- ['Content-Type' => 'text/plain']);
-});
+ return $user_ip;
+}
return $app;
diff --git a/appengine/flexible/datastore/app.yaml b/appengine/flexible/datastore/app.yaml
index db289fcae2..bb23ac24f3 100644
--- a/appengine/flexible/datastore/app.yaml
+++ b/appengine/flexible/datastore/app.yaml
@@ -1,5 +1,7 @@
runtime: php
-vm: true
+env: flex
runtime_config:
- document_root: web
\ No newline at end of file
+ document_root: .
+ operating_system: ubuntu22
+ runtime_version: 8.3
diff --git a/appengine/flexible/datastore/composer.json b/appengine/flexible/datastore/composer.json
index 48deb1ee12..dfb1e10bbe 100644
--- a/appengine/flexible/datastore/composer.json
+++ b/appengine/flexible/datastore/composer.json
@@ -1,10 +1,8 @@
{
"require": {
- "silex/silex": "^1.3",
- "google/apiclient": "^2.0"
- },
- "require-dev": {
- "google/cloud-tools": "<=1.0",
- "phpunit/phpunit": "~4"
+ "google/cloud-datastore": "^1.0",
+ "slim/slim": "^4.0",
+ "slim/psr7": "^1.3",
+ "akrabat/ip-address-middleware": "^2.0"
}
}
diff --git a/appengine/flexible/datastore/composer.lock b/appengine/flexible/datastore/composer.lock
deleted file mode 100644
index 0fb32bb359..0000000000
--- a/appengine/flexible/datastore/composer.lock
+++ /dev/null
@@ -1,2503 +0,0 @@
-{
- "_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": "cab8f37ba4d937f5a7f5a06543d8c2a8",
- "content-hash": "b1542efc811f21f6a65c92410484e5da",
- "packages": [
- {
- "name": "firebase/php-jwt",
- "version": "v3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/firebase/php-jwt.git",
- "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/firebase/php-jwt/zipball/fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1",
- "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Firebase\\JWT\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Neuman Vong",
- "email": "neuman+pear@twilio.com",
- "role": "Developer"
- },
- {
- "name": "Anant Narayanan",
- "email": "anant@php.net",
- "role": "Developer"
- }
- ],
- "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.",
- "homepage": "https://github.com/firebase/php-jwt",
- "time": "2015-07-22 18:31:08"
- },
- {
- "name": "google/apiclient",
- "version": "v2.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/google/google-api-php-client.git",
- "reference": "18dd5534280318598e8770cb7929e9a542e91c0d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/google/google-api-php-client/zipball/18dd5534280318598e8770cb7929e9a542e91c0d",
- "reference": "18dd5534280318598e8770cb7929e9a542e91c0d",
- "shasum": ""
- },
- "require": {
- "firebase/php-jwt": "~2.0|~3.0",
- "google/apiclient-services": "^0.5",
- "google/auth": "0.9",
- "guzzlehttp/guzzle": "~5.2|~6.0",
- "guzzlehttp/psr7": "^1.2",
- "monolog/monolog": "^1.17",
- "php": ">=5.4",
- "phpseclib/phpseclib": "~2.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4",
- "squizlabs/php_codesniffer": "~2.3",
- "symfony/css-selector": "~2.1",
- "symfony/dom-crawler": "~2.1",
- "tedivm/stash": "^0.14.1"
- },
- "suggest": {
- "tedivm/stash": "For caching certs and tokens (using Google_Client::setCache)"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Google_": "src/"
- },
- "classmap": [
- "src/Google/Service/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "description": "Client library for Google APIs",
- "homepage": "http://developers.google.com/api-client-library/php",
- "keywords": [
- "google"
- ],
- "time": "2016-07-21 18:41:10"
- },
- {
- "name": "google/apiclient-services",
- "version": "v0.5",
- "target-dir": "Google/Service",
- "source": {
- "type": "git",
- "url": "https://github.com/google/google-api-php-client-services.git",
- "reference": "a2d43f4c7eace8c7aa16c5ea83191344c63b4526"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/google/google-api-php-client-services/zipball/a2d43f4c7eace8c7aa16c5ea83191344c63b4526",
- "reference": "a2d43f4c7eace8c7aa16c5ea83191344c63b4526",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Google_Service_": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "description": "Client library for Google APIs",
- "homepage": "http://developers.google.com/api-client-library/php",
- "keywords": [
- "google"
- ],
- "time": "2016-07-21 18:01:41"
- },
- {
- "name": "google/auth",
- "version": "v0.9",
- "source": {
- "type": "git",
- "url": "https://github.com/google/google-auth-library-php.git",
- "reference": "47c3c6bece495e58381a21fed13a735bd23a51cc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/google/google-auth-library-php/zipball/47c3c6bece495e58381a21fed13a735bd23a51cc",
- "reference": "47c3c6bece495e58381a21fed13a735bd23a51cc",
- "shasum": ""
- },
- "require": {
- "firebase/php-jwt": "~2.0|~3.0",
- "guzzlehttp/guzzle": "~5.3|~6.0",
- "guzzlehttp/psr7": "~1.2",
- "php": ">=5.4",
- "psr/cache": "^1.0",
- "psr/http-message": "^1.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^1.11",
- "phpunit/phpunit": "3.7.*"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ],
- "psr-4": {
- "Google\\Auth\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "description": "Google Auth Library for PHP",
- "homepage": "http://github.com/google/google-auth-library-php",
- "keywords": [
- "Authentication",
- "google",
- "oauth2"
- ],
- "time": "2016-06-01 22:07:52"
- },
- {
- "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": "monolog/monolog",
- "version": "1.20.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Seldaek/monolog.git",
- "reference": "55841909e2bcde01b5318c35f2b74f8ecc86e037"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/55841909e2bcde01b5318c35f2b74f8ecc86e037",
- "reference": "55841909e2bcde01b5318c35f2b74f8ecc86e037",
- "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-02 14:02:10"
- },
- {
- "name": "phpseclib/phpseclib",
- "version": "2.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "3d265f7c079f5b37d33475f996d7a383c5fc8aeb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/3d265f7c079f5b37d33475f996d7a383c5fc8aeb",
- "reference": "3d265f7c079f5b37d33475f996d7a383c5fc8aeb",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phing/phing": "~2.7",
- "phpunit/phpunit": "~4.0",
- "sami/sami": "~2.0",
- "squizlabs/php_codesniffer": "~2.0"
- },
- "suggest": {
- "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.",
- "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.",
- "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
- "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
- },
- "type": "library",
- "autoload": {
- "files": [
- "phpseclib/bootstrap.php"
- ],
- "psr-4": {
- "phpseclib\\": "phpseclib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jim Wigginton",
- "email": "terrafrost@php.net",
- "role": "Lead Developer"
- },
- {
- "name": "Patrick Monnerat",
- "email": "pm@datasphere.ch",
- "role": "Developer"
- },
- {
- "name": "Andreas Fischer",
- "email": "bantu@phpbb.com",
- "role": "Developer"
- },
- {
- "name": "Hans-Jürgen Petrich",
- "email": "petrich@tronic-media.com",
- "role": "Developer"
- },
- {
- "name": "Graham Campbell",
- "email": "graham@alt-three.com",
- "role": "Developer"
- }
- ],
- "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.",
- "homepage": "http://phpseclib.sourceforge.net/",
- "keywords": [
- "BigInteger",
- "aes",
- "asn.1",
- "asn1",
- "blowfish",
- "crypto",
- "cryptography",
- "encryption",
- "rsa",
- "security",
- "sftp",
- "signature",
- "signing",
- "ssh",
- "twofish",
- "x.509",
- "x509"
- ],
- "time": "2016-05-13 01:15:21"
- },
- {
- "name": "pimple/pimple",
- "version": "v1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Pimple.git",
- "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d",
- "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Pimple": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Pimple is a simple Dependency Injection Container for PHP 5.3",
- "homepage": "http://pimple.sensiolabs.org/",
- "keywords": [
- "container",
- "dependency injection"
- ],
- "time": "2013-11-22 08:30:29"
- },
- {
- "name": "psr/cache",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/cache.git",
- "reference": "9e66031f41fbbdda45ee11e93c45d480ccba3eb3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/cache/zipball/9e66031f41fbbdda45ee11e93c45d480ccba3eb3",
- "reference": "9e66031f41fbbdda45ee11e93c45d480ccba3eb3",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Cache\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for caching libraries",
- "keywords": [
- "cache",
- "psr",
- "psr-6"
- ],
- "time": "2015-12-11 02:52:07"
- },
- {
- "name": "psr/http-message",
- "version": "1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "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",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ],
- "time": "2015-05-04 20:22:00"
- },
- {
- "name": "psr/log",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "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",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ],
- "time": "2012-12-21 11:40:51"
- },
- {
- "name": "silex/silex",
- "version": "v1.3.5",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Silex.git",
- "reference": "374c7e04040a6f781c90f7d746726a5daa78e783"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Silex/zipball/374c7e04040a6f781c90f7d746726a5daa78e783",
- "reference": "374c7e04040a6f781c90f7d746726a5daa78e783",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "pimple/pimple": "~1.0",
- "symfony/event-dispatcher": "~2.3|3.0.*",
- "symfony/http-foundation": "~2.3|3.0.*",
- "symfony/http-kernel": "~2.3|3.0.*",
- "symfony/routing": "~2.3|3.0.*"
- },
- "require-dev": {
- "doctrine/dbal": "~2.2",
- "monolog/monolog": "^1.4.1",
- "swiftmailer/swiftmailer": "~5",
- "symfony/browser-kit": "~2.3|3.0.*",
- "symfony/config": "~2.3|3.0.*",
- "symfony/css-selector": "~2.3|3.0.*",
- "symfony/debug": "~2.3|3.0.*",
- "symfony/dom-crawler": "~2.3|3.0.*",
- "symfony/finder": "~2.3|3.0.*",
- "symfony/form": "~2.3|3.0.*",
- "symfony/locale": "~2.3|3.0.*",
- "symfony/monolog-bridge": "~2.3|3.0.*",
- "symfony/options-resolver": "~2.3|3.0.*",
- "symfony/phpunit-bridge": "~2.7",
- "symfony/process": "~2.3|3.0.*",
- "symfony/security": "~2.3|3.0.*",
- "symfony/serializer": "~2.3|3.0.*",
- "symfony/translation": "~2.3|3.0.*",
- "symfony/twig-bridge": "~2.3|3.0.*",
- "symfony/validator": "~2.3|3.0.*",
- "twig/twig": "~1.8|~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Silex\\": "src/Silex"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Igor Wiedler",
- "email": "igor@wiedler.ch"
- }
- ],
- "description": "The PHP micro-framework based on the Symfony Components",
- "homepage": "http://silex.sensiolabs.org/",
- "keywords": [
- "microframework"
- ],
- "time": "2016-01-06 14:59:35"
- },
- {
- "name": "symfony/debug",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/debug.git",
- "reference": "06e2d52e307ef880ac739f44ee6c2418ca9e3283"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/06e2d52e307ef880ac739f44ee6c2418ca9e3283",
- "reference": "06e2d52e307ef880ac739f44ee6c2418ca9e3283",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "psr/log": "~1.0"
- },
- "conflict": {
- "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
- },
- "require-dev": {
- "symfony/class-loader": "~2.8|~3.0",
- "symfony/http-kernel": "~2.8|~3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Debug\\": ""
- },
- "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 Debug Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "43e9a14f71db135da5c75dd5d383ecff6ada920e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/43e9a14f71db135da5c75dd5d383ecff6ada920e",
- "reference": "43e9a14f71db135da5c75dd5d383ecff6ada920e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/dependency-injection": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
- },
- "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 EventDispatcher Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:40:00"
- },
- {
- "name": "symfony/http-foundation",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-foundation.git",
- "reference": "1341139f906d295baa4f4abd55293d07e25a065a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1341139f906d295baa4f4abd55293d07e25a065a",
- "reference": "1341139f906d295baa4f4abd55293d07e25a065a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/polyfill-mbstring": "~1.1"
- },
- "require-dev": {
- "symfony/expression-language": "~2.8|~3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpFoundation\\": ""
- },
- "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 HttpFoundation Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 07:02:21"
- },
- {
- "name": "symfony/http-kernel",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-kernel.git",
- "reference": "177b63b2d50b63fa6d82ea41359ed9928cc7a1fb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/177b63b2d50b63fa6d82ea41359ed9928cc7a1fb",
- "reference": "177b63b2d50b63fa6d82ea41359ed9928cc7a1fb",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "psr/log": "~1.0",
- "symfony/debug": "~2.8|~3.0",
- "symfony/event-dispatcher": "~2.8|~3.0",
- "symfony/http-foundation": "~2.8.8|~3.0.8|~3.1.2|~3.2"
- },
- "conflict": {
- "symfony/config": "<2.8"
- },
- "require-dev": {
- "symfony/browser-kit": "~2.8|~3.0",
- "symfony/class-loader": "~2.8|~3.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/console": "~2.8|~3.0",
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/dependency-injection": "~2.8|~3.0",
- "symfony/dom-crawler": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/finder": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0",
- "symfony/routing": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0",
- "symfony/templating": "~2.8|~3.0",
- "symfony/translation": "~2.8|~3.0",
- "symfony/var-dumper": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/browser-kit": "",
- "symfony/class-loader": "",
- "symfony/config": "",
- "symfony/console": "",
- "symfony/dependency-injection": "",
- "symfony/finder": "",
- "symfony/var-dumper": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpKernel\\": ""
- },
- "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 HttpKernel Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-30 16:30:17"
- },
- {
- "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/routing",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/routing.git",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/9038984bd9c05ab07280121e9e10f61a7231457b",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "conflict": {
- "symfony/config": "<2.8"
- },
- "require-dev": {
- "doctrine/annotations": "~1.0",
- "doctrine/common": "~2.2",
- "psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/http-foundation": "~2.8|~3.0",
- "symfony/yaml": "~2.8|~3.0"
- },
- "suggest": {
- "doctrine/annotations": "For using the annotation loader",
- "symfony/config": "For using the all-in-one router or any loader",
- "symfony/dependency-injection": "For loading routes from a service",
- "symfony/expression-language": "For using expression matching",
- "symfony/http-foundation": "For using a Symfony Request object",
- "symfony/yaml": "For using the YAML loader"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Routing\\": ""
- },
- "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 Routing Component",
- "homepage": "https://symfony.com/",
- "keywords": [
- "router",
- "routing",
- "uri",
- "url"
- ],
- "time": "2016-06-29 05:40:00"
- }
- ],
- "packages-dev": [
- {
- "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": "google/cloud-tools",
- "version": "v0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/GoogleCloudPlatform/php-tools.git",
- "reference": "5bbdd075efcfc07d13e364b9d6b7697344c6914d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/GoogleCloudPlatform/php-tools/zipball/5bbdd075efcfc07d13e364b9d6b7697344c6914d",
- "reference": "5bbdd075efcfc07d13e364b9d6b7697344c6914d",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/guzzle": "~5.3|~6.0",
- "php": ">=5.5",
- "phpunit/phpunit": "~4|~5",
- "symfony/browser-kit": "~2|~3",
- "symfony/process": "~2|~3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Google\\Cloud\\TestUtils\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "Takashi Matsuo",
- "email": "tmatsuo@google.com",
- "homepage": "https://wp.gaeflex.ninja/"
- }
- ],
- "description": "PHP tools for Google Cloud Platform",
- "homepage": "https://github.com/GoogleCloudPlatform/php-tools",
- "keywords": [
- "appengine",
- "gcp",
- "test"
- ],
- "time": "2016-07-11 17:18:10"
- },
- {
- "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": "2.2.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "phpunit/php-file-iterator": "~1.3",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-token-stream": "~1.3",
- "sebastian/environment": "^1.3.2",
- "sebastian/version": "~1.0"
- },
- "require-dev": {
- "ext-xdebug": ">=2.1.4",
- "phpunit/phpunit": "~4"
- },
- "suggest": {
- "ext-dom": "*",
- "ext-xdebug": ">=2.2.1",
- "ext-xmlwriter": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.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": "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": "2015-10-06 15:47:00"
- },
- {
- "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": "4.8.27",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c062dddcb68e44b563f66ee319ddae2b5a322a90",
- "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=5.3.3",
- "phpspec/prophecy": "^1.3.1",
- "phpunit/php-code-coverage": "~2.1",
- "phpunit/php-file-iterator": "~1.4",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-timer": "^1.0.6",
- "phpunit/phpunit-mock-objects": "~2.3",
- "sebastian/comparator": "~1.1",
- "sebastian/diff": "~1.2",
- "sebastian/environment": "~1.3",
- "sebastian/exporter": "~1.2",
- "sebastian/global-state": "~1.0",
- "sebastian/version": "~1.0",
- "symfony/yaml": "~2.1|~3.0"
- },
- "suggest": {
- "phpunit/php-invoker": "~1.1"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.8.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-07-21 06:48:14"
- },
- {
- "name": "phpunit/phpunit-mock-objects",
- "version": "2.3.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "php": ">=5.3.3",
- "phpunit/php-text-template": "~1.2",
- "sebastian/exporter": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "suggest": {
- "ext-soap": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3.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": "2015-10-02 06:51:40"
- },
- {
- "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.7",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716",
- "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "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": "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-05-17 03:18:57"
- },
- {
- "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/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/version",
- "version": "1.0.6",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "shasum": ""
- },
- "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": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2015-06-21 13:59:46"
- },
- {
- "name": "symfony/browser-kit",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/browser-kit.git",
- "reference": "dcf41ed026b0499254385b5c88f03247b2ba010b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/dcf41ed026b0499254385b5c88f03247b2ba010b",
- "reference": "dcf41ed026b0499254385b5c88f03247b2ba010b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/dom-crawler": "~2.8|~3.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\BrowserKit\\": ""
- },
- "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 BrowserKit Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/dom-crawler",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/dom-crawler.git",
- "reference": "99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0",
- "reference": "99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/css-selector": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\DomCrawler\\": ""
- },
- "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 DomCrawler Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/process",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "5c11a1a4d4016662eeaf0f8757958c7de069f9a0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/5c11a1a4d4016662eeaf0f8757958c7de069f9a0",
- "reference": "5c11a1a4d4016662eeaf0f8757958c7de069f9a0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Process\\": ""
- },
- "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 Process Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:42:25"
- },
- {
- "name": "symfony/yaml",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/2884c26ce4c1d61aebf423a8b912950fe7c764de",
- "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "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 Yaml Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "webmozart/assert",
- "version": "1.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozart/assert.git",
- "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
- "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.6"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-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": "2015-08-24 13:29:44"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": [],
- "platform-dev": []
-}
diff --git a/appengine/flexible/datastore/index.php b/appengine/flexible/datastore/index.php
new file mode 100644
index 0000000000..3fc7a490f3
--- /dev/null
+++ b/appengine/flexible/datastore/index.php
@@ -0,0 +1,26 @@
+run();
diff --git a/appengine/flexible/datastore/nginx-app.conf b/appengine/flexible/datastore/nginx-app.conf
deleted file mode 100644
index 634c60a7d7..0000000000
--- a/appengine/flexible/datastore/nginx-app.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-# [START static-config]
-location / {
- # try to serve file directly, fallback to front controller
- try_files $uri /index.php$is_args$args;
-}
-# [END static-config]
diff --git a/appengine/flexible/datastore/phpunit.xml b/appengine/flexible/datastore/phpunit.xml
deleted file mode 100644
index 21e45651dd..0000000000
--- a/appengine/flexible/datastore/phpunit.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- tests
-
-
-
-
-
-
-
- app.php
-
-
-
diff --git a/appengine/flexible/datastore/phpunit.xml.dist b/appengine/flexible/datastore/phpunit.xml.dist
new file mode 100644
index 0000000000..2dab33826f
--- /dev/null
+++ b/appengine/flexible/datastore/phpunit.xml.dist
@@ -0,0 +1,35 @@
+
+
+
+
+
+ test
+ test/DeployTest.php
+
+
+
+
+
+
+
+ app.php
+
+ ./vendor
+
+
+
+
diff --git a/appengine/flexible/datastore/test/DeployTest.php b/appengine/flexible/datastore/test/DeployTest.php
new file mode 100644
index 0000000000..90b0179a5c
--- /dev/null
+++ b/appengine/flexible/datastore/test/DeployTest.php
@@ -0,0 +1,35 @@
+client->get('/');
+ $this->assertEquals('200', $resp->getStatusCode(),
+ 'top page status code');
+
+ $this->assertStringContainsString('Last 10 visits:', (string) $resp->getBody());
+ }
+}
diff --git a/appengine/flexible/datastore/test/LocalTest.php b/appengine/flexible/datastore/test/LocalTest.php
new file mode 100644
index 0000000000..21ba929c28
--- /dev/null
+++ b/appengine/flexible/datastore/test/LocalTest.php
@@ -0,0 +1,38 @@
+createRequest('GET', '/');
+ $response = $app->handle($request);
+ $this->assertEquals(200, $response->getStatusCode());
+ $text = (string) $response->getBody();
+ $this->assertStringContainsString('Last 10 visits:', $text);
+ }
+}
diff --git a/appengine/flexible/datastore/tests/LocalTest.php b/appengine/flexible/datastore/tests/LocalTest.php
deleted file mode 100644
index 0506cf45a6..0000000000
--- a/appengine/flexible/datastore/tests/LocalTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-client = $this->createClient();
- }
-
- public function createApplication()
- {
- $app = require __DIR__ . '/../app.php';
- $app['google.dataset_id'] = getenv('GOOGLE_PROJECT_ID');
- return $app;
- }
-
- public function testIndex()
- {
- // Access the modules app top page.
- $client = $this->client;
- $client->request('GET', '/');
- $this->assertTrue($client->getResponse()->isOk());
- $text = $client->getResponse()->getContent();
- $this->assertContains("Last 10 visits:", $text);
- }
-}
diff --git a/appengine/flexible/datastore/tests/bootstrap.php b/appengine/flexible/datastore/tests/bootstrap.php
deleted file mode 100644
index 855a955f73..0000000000
--- a/appengine/flexible/datastore/tests/bootstrap.php
+++ /dev/null
@@ -1,17 +0,0 @@
-run();
diff --git a/appengine/flexible/drupal8/README.md b/appengine/flexible/drupal8/README.md
index 03dcb61af7..f36a86861a 100644
--- a/appengine/flexible/drupal8/README.md
+++ b/appengine/flexible/drupal8/README.md
@@ -1,13 +1,13 @@
-Drupal 8 on Managed VMs
-=======================
+Drupal 8 on App Engine Flexible Environment
+===========================================
## Overview
-This guide will help you deploy Drupal 8 on [App Engine Managed VMs][1]
+This guide will help you deploy Drupal 8 on [App Engine Flexible][1]
## Prerequisites
-Before setting up Drupal 8 on Managed VMs, you will need to complete the following:
+Before setting up Drupal 8 on App Engine Flexible, you will need to complete the following:
1. Create a [Google Cloud Platform project][2]. Note your **Project ID**, as you will need it
later.
@@ -32,7 +32,7 @@ cd /path/to/drupal
/path/to/drush dl drupal
```
-Alternatively, you can download a compressed file of Druapl 8 from the [Drupal Website][5].
+Alternatively, you can download a compressed file of Drupal 8 from the [Drupal Website][5].
### Installation
@@ -59,46 +59,37 @@ Alternatively, you can download a compressed file of Druapl 8 from the [Drupal W
You will want to use the Cloud SQL credentials you created in the **Prerequisites** section as your
Drupal backend.
-## Copy over App Engine files
+## Add app.yaml
-For your app to deploy on App Engine Managed VMs, you will need to copy over the files in this
-directory:
+Add a file `app.yaml` with the following contents to the root of your Drupal project:
-```sh
-# clone this repo somewhere
-git clone https://github.com/GoogleCloudPlatform/php-docs-samples /path/to/php-docs-samples
-cd /path/to/php-docs-samples/
-
-# copy the four files below to the root directory of your Drupal project
-cp managed_vms/drupal8/{app.yaml,php.ini,nginx-app.conf} /path/to/drupal
+```yaml
+runtime: php
+env: flex
```
-The four files needed are as follows:
-
- 1. [`app.yaml`](app.yaml) - The App Engine configuration for your project
- 1. [`php.ini`](php.ini) - Optional ini used to extend the runtime configuration.
- 1. [`nginx-app.conf`](nginx-app.conf) - Nginx web server configuration needed for `Drupal 8`
+`app.yaml` is the App Engine configuration for your project.
## Disable CSS and JS Cache
For now, you need to disable the CSS and JS preprocessed caching that Drupal 8 enables by default.
To do this, go to `/admin/config/development/performance` and deselect the two
-chechboxes (`Aggregate CSS files` and `Aggregate JS files`) under **Bandwidth Optimizations**.
+checkboxes (`Aggregate CSS files` and `Aggregate JS files`) under **Bandwidth Optimizations**.
Alternatively, you can use [Drush][4] to change this config setting:
```sh
# this command must be run inside the root directory of a drupal project
-$ cd /path/to/drupal
-$ /path/to/drush pm-enable config -y
-$ /path/to/drush config-set system.performance css.preprocess 0
-$ /path/to/drush config-set system.performance js.preprocess 0
+cd /path/to/drupal
+/path/to/drush pm-enable config -y
+/path/to/drush config-set system.performance css.preprocess 0
+/path/to/drush config-set system.performance js.preprocess 0
```
This will change the values `preprocess` under `css` and `js` to `false`.
-[1]: https://cloud.google.com/appengine/docs/managed-vms/
+[1]: https://cloud.google.com/appengine/docs/flexible/
[2]: https://console.cloud.google.com
[3]: https://cloud.google.com/sql/docs/getting-started
[4]: http://docs.drush.org/en/master/install/
-[5]: https://www.drupal.org/8/download
\ No newline at end of file
+[5]: https://www.drupal.org/8/download
diff --git a/appengine/flexible/drupal8/app.yaml b/appengine/flexible/drupal8/app.yaml
index 784be7ea02..7ae9a2661c 100644
--- a/appengine/flexible/drupal8/app.yaml
+++ b/appengine/flexible/drupal8/app.yaml
@@ -1,5 +1,5 @@
runtime: php
-vm: true
+env: flex
runtime_config:
- document_root: ""
\ No newline at end of file
+ document_root: .
diff --git a/appengine/flexible/drupal8/composer.json b/appengine/flexible/drupal8/composer.json
index d946374f12..de9be9426d 100644
--- a/appengine/flexible/drupal8/composer.json
+++ b/appengine/flexible/drupal8/composer.json
@@ -1,11 +1,12 @@
{
"require": {
- "drush/drush": "^8.1"
+ "drush/drush": "^10.0"
},
"require-dev": {
- "guzzlehttp/guzzle": "^6.2",
+ "guzzlehttp/guzzle": "^6.3",
"monolog/monolog": "^1.19",
"symfony/console": " ^2.7",
- "symfony/process": "^3.0"
+ "symfony/process": "^3.0",
+ "paragonie/random_compat": " ^9.0"
}
}
diff --git a/appengine/flexible/drupal8/composer.lock b/appengine/flexible/drupal8/composer.lock
deleted file mode 100644
index d8858680fc..0000000000
--- a/appengine/flexible/drupal8/composer.lock
+++ /dev/null
@@ -1,1555 +0,0 @@
-{
- "_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": "8fe1e49264d9dafda5e7f061eba52b14",
- "content-hash": "03146c12e434da59151471cbd09b964a",
- "packages": [],
- "packages-dev": [
- {
- "name": "consolidation/annotated-command",
- "version": "1.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/consolidation/annotated-command.git",
- "reference": "c2dc2464e1edf0498bf97a99f34cac5805d00946"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/c2dc2464e1edf0498bf97a99f34cac5805d00946",
- "reference": "c2dc2464e1edf0498bf97a99f34cac5805d00946",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0",
- "phpdocumentor/reflection-docblock": "^2.0|^3.0.2",
- "psr/log": "~1.0",
- "symfony/console": "~2.5|~3.0",
- "symfony/event-dispatcher": "~2.5|~3.0",
- "symfony/finder": "~2.5|~3.0"
- },
- "require-dev": {
- "consolidation/output-formatters": "~1",
- "phpunit/phpunit": "4.*",
- "satooshi/php-coveralls": "^1.0",
- "squizlabs/php_codesniffer": "2.*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Consolidation\\AnnotatedCommand\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Greg Anderson",
- "email": "greg.1.anderson@greenknowe.org"
- }
- ],
- "description": "Initialize Symfony Console commands from annotated command class methods.",
- "time": "2016-09-13 21:37:50"
- },
- {
- "name": "consolidation/output-formatters",
- "version": "1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/consolidation/output-formatters.git",
- "reference": "aadb1ed2deb72bc1351bb6f3b3ddd328222e9261"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/aadb1ed2deb72bc1351bb6f3b3ddd328222e9261",
- "reference": "aadb1ed2deb72bc1351bb6f3b3ddd328222e9261",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0",
- "symfony/console": "~2.5|~3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*",
- "satooshi/php-coveralls": "^1.0",
- "squizlabs/php_codesniffer": "2.*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Consolidation\\OutputFormatters\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Greg Anderson",
- "email": "greg.1.anderson@greenknowe.org"
- }
- ],
- "description": "Format text by applying transformations provided by plug-in formatters.",
- "time": "2016-09-14 23:51:08"
- },
- {
- "name": "dnoegel/php-xdg-base-dir",
- "version": "0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
- "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a",
- "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2"
- },
- "require-dev": {
- "phpunit/phpunit": "@stable"
- },
- "type": "project",
- "autoload": {
- "psr-4": {
- "XdgBaseDir\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "implementation of xdg base directory specification for php",
- "time": "2014-10-24 07:27:01"
- },
- {
- "name": "drush/drush",
- "version": "8.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/drush-ops/drush.git",
- "reference": "1cf4b2df22d1940bec1637d56c69ba5634a982f5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/drush-ops/drush/zipball/1cf4b2df22d1940bec1637d56c69ba5634a982f5",
- "reference": "1cf4b2df22d1940bec1637d56c69ba5634a982f5",
- "shasum": ""
- },
- "require": {
- "consolidation/annotated-command": "~1",
- "consolidation/output-formatters": "~1",
- "pear/console_table": "~1.3.0",
- "php": ">=5.4.5",
- "psr/log": "~1.0",
- "psy/psysh": "~0.6",
- "symfony/console": "~2.7",
- "symfony/event-dispatcher": "~2.7",
- "symfony/finder": "~2.7",
- "symfony/var-dumper": "~2.7",
- "symfony/yaml": "~2.3",
- "webmozart/path-util": "~2"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*",
- "symfony/process": "2.7.*"
- },
- "suggest": {
- "drush/config-extra": "Provides configuration workflow commands, such as config-merge.",
- "ext-pcntl": "*"
- },
- "bin": [
- "drush",
- "drush.launcher",
- "drush.php",
- "drush.complete.sh"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "8.0.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Drush": "lib/",
- "Consolidation": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "GPL-2.0+"
- ],
- "authors": [
- {
- "name": "Moshe Weitzman",
- "email": "weitzman@tejasa.com"
- },
- {
- "name": "Owen Barton",
- "email": "drupal@owenbarton.com"
- },
- {
- "name": "Mark Sonnabaum",
- "email": "marksonnabaum@gmail.com"
- },
- {
- "name": "Antoine Beaupré",
- "email": "anarcat@koumbit.org"
- },
- {
- "name": "Greg Anderson",
- "email": "greg.1.anderson@greenknowe.org"
- },
- {
- "name": "Jonathan Araña Cruz",
- "email": "jonhattan@faita.net"
- },
- {
- "name": "Jonathan Hedstrom",
- "email": "jhedstrom@gmail.com"
- },
- {
- "name": "Christopher Gervais",
- "email": "chris@ergonlogic.com"
- },
- {
- "name": "Dave Reid",
- "email": "dave@davereid.net"
- },
- {
- "name": "Damian Lee",
- "email": "damiankloip@googlemail.com"
- }
- ],
- "description": "Drush is a command line shell and scripting interface for Drupal, a veritable Swiss Army knife designed to make life easier for those of us who spend some of our working hours hacking away at the command prompt.",
- "homepage": "http://www.drush.org/",
- "time": "2016-09-25 16:55:26"
- },
- {
- "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": "jakub-onderka/php-console-color",
- "version": "0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/JakubOnderka/PHP-Console-Color.git",
- "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/e0b393dacf7703fc36a4efc3df1435485197e6c1",
- "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2"
- },
- "require-dev": {
- "jakub-onderka/php-code-style": "1.0",
- "jakub-onderka/php-parallel-lint": "0.*",
- "jakub-onderka/php-var-dump-check": "0.*",
- "phpunit/phpunit": "3.7.*",
- "squizlabs/php_codesniffer": "1.*"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "JakubOnderka\\PhpConsoleColor": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-2-Clause"
- ],
- "authors": [
- {
- "name": "Jakub Onderka",
- "email": "jakub.onderka@gmail.com",
- "homepage": "http://www.acci.cz/"
- }
- ],
- "time": "2014-04-08 15:00:19"
- },
- {
- "name": "jakub-onderka/php-console-highlighter",
- "version": "v0.3.2",
- "source": {
- "type": "git",
- "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git",
- "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/7daa75df45242c8d5b75a22c00a201e7954e4fb5",
- "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5",
- "shasum": ""
- },
- "require": {
- "jakub-onderka/php-console-color": "~0.1",
- "php": ">=5.3.0"
- },
- "require-dev": {
- "jakub-onderka/php-code-style": "~1.0",
- "jakub-onderka/php-parallel-lint": "~0.5",
- "jakub-onderka/php-var-dump-check": "~0.1",
- "phpunit/phpunit": "~4.0",
- "squizlabs/php_codesniffer": "~1.5"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "JakubOnderka\\PhpConsoleHighlighter": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jakub Onderka",
- "email": "acci@acci.cz",
- "homepage": "http://www.acci.cz/"
- }
- ],
- "time": "2015-04-20 18:58:01"
- },
- {
- "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": "nikic/php-parser",
- "version": "v2.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "4dd659edadffdc2143e4753df655d866dbfeedf0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4dd659edadffdc2143e4753df655d866dbfeedf0",
- "reference": "4dd659edadffdc2143e4753df655d866dbfeedf0",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": ">=5.4"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "bin": [
- "bin/php-parse"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "PhpParser\\": "lib/PhpParser"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Nikita Popov"
- }
- ],
- "description": "A PHP parser written in PHP",
- "keywords": [
- "parser",
- "php"
- ],
- "time": "2016-09-16 12:04:44"
- },
- {
- "name": "pear/console_table",
- "version": "v1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/pear/Console_Table.git",
- "reference": "64100b9ee81852f4fa17823e55d0b385a544f976"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/pear/Console_Table/zipball/64100b9ee81852f4fa17823e55d0b385a544f976",
- "reference": "64100b9ee81852f4fa17823e55d0b385a544f976",
- "shasum": ""
- },
- "require": {
- "php": ">=5.2.0"
- },
- "suggest": {
- "pear/Console_Color2": ">=0.1.2"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "Table.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-2-Clause"
- ],
- "authors": [
- {
- "name": "Jan Schneider",
- "homepage": "http://pear.php.net/user/yunosh"
- },
- {
- "name": "Tal Peer",
- "homepage": "http://pear.php.net/user/tal"
- },
- {
- "name": "Xavier Noguer",
- "homepage": "http://pear.php.net/user/xnoguer"
- },
- {
- "name": "Richard Heyes",
- "homepage": "http://pear.php.net/user/richard"
- }
- ],
- "description": "Library that makes it easy to build console style tables.",
- "homepage": "http://pear.php.net/package/Console_Table/",
- "keywords": [
- "console"
- ],
- "time": "2016-01-21 16:14:31"
- },
- {
- "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.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e",
- "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e",
- "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-09-30 07:12:33"
- },
- {
- "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": "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": "psy/psysh",
- "version": "v0.7.2",
- "source": {
- "type": "git",
- "url": "https://github.com/bobthecow/psysh.git",
- "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e64e10b20f8d229cac76399e1f3edddb57a0f280",
- "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280",
- "shasum": ""
- },
- "require": {
- "dnoegel/php-xdg-base-dir": "0.1",
- "jakub-onderka/php-console-highlighter": "0.3.*",
- "nikic/php-parser": "^1.2.1|~2.0",
- "php": ">=5.3.9",
- "symfony/console": "~2.3.10|^2.4.2|~3.0",
- "symfony/var-dumper": "~2.7|~3.0"
- },
- "require-dev": {
- "fabpot/php-cs-fixer": "~1.5",
- "phpunit/phpunit": "~3.7|~4.0|~5.0",
- "squizlabs/php_codesniffer": "~2.0",
- "symfony/finder": "~2.1|~3.0"
- },
- "suggest": {
- "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)",
- "ext-pdo-sqlite": "The doc command requires SQLite to work.",
- "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.",
- "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history."
- },
- "bin": [
- "bin/psysh"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-develop": "0.8.x-dev"
- }
- },
- "autoload": {
- "files": [
- "src/Psy/functions.php"
- ],
- "psr-4": {
- "Psy\\": "src/Psy/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Justin Hileman",
- "email": "justin@justinhileman.info",
- "homepage": "http://justinhileman.com/"
- }
- ],
- "description": "An interactive shell for modern PHP.",
- "homepage": "http://psysh.org/",
- "keywords": [
- "REPL",
- "console",
- "interactive",
- "shell"
- ],
- "time": "2016-03-09 05:03:14"
- },
- {
- "name": "symfony/console",
- "version": "v2.8.12",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "d7a5a88178f94dcc29531ea4028ea614e35452d4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/d7a5a88178f94dcc29531ea4028ea614e35452d4",
- "reference": "d7a5a88178f94dcc29531ea4028ea614e35452d4",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "symfony/debug": "~2.7,>=2.7.2|~3.0.0",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/event-dispatcher": "~2.1|~3.0.0",
- "symfony/process": "~2.1|~3.0.0"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Console\\": ""
- },
- "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 Console Component",
- "homepage": "https://symfony.com/",
- "time": "2016-09-28 00:10:16"
- },
- {
- "name": "symfony/debug",
- "version": "v3.0.9",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/debug.git",
- "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a",
- "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "psr/log": "~1.0"
- },
- "conflict": {
- "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
- },
- "require-dev": {
- "symfony/class-loader": "~2.8|~3.0",
- "symfony/http-kernel": "~2.8|~3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Debug\\": ""
- },
- "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 Debug Component",
- "homepage": "https://symfony.com/",
- "time": "2016-07-30 07:22:48"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v2.8.12",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "889983a79a043dfda68f38c38b6dba092dd49cd8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/889983a79a043dfda68f38c38b6dba092dd49cd8",
- "reference": "889983a79a043dfda68f38c38b6dba092dd49cd8",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~2.0,>=2.0.5|~3.0.0",
- "symfony/dependency-injection": "~2.6|~3.0.0",
- "symfony/expression-language": "~2.6|~3.0.0",
- "symfony/stopwatch": "~2.3|~3.0.0"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
- },
- "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 EventDispatcher Component",
- "homepage": "https://symfony.com/",
- "time": "2016-07-28 16:56:28"
- },
- {
- "name": "symfony/finder",
- "version": "v2.8.12",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "bc24c8f5674c6f6841f2856b70e5d60784be5691"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/bc24c8f5674c6f6841f2856b70e5d60784be5691",
- "reference": "bc24c8f5674c6f6841f2856b70e5d60784be5691",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Finder\\": ""
- },
- "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 Finder Component",
- "homepage": "https://symfony.com/",
- "time": "2016-09-28 00:10:16"
- },
- {
- "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/process",
- "version": "v3.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "66de154ae86b1a07001da9fbffd620206e4faf94"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/66de154ae86b1a07001da9fbffd620206e4faf94",
- "reference": "66de154ae86b1a07001da9fbffd620206e4faf94",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Process\\": ""
- },
- "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 Process Component",
- "homepage": "https://symfony.com/",
- "time": "2016-09-29 14:13:09"
- },
- {
- "name": "symfony/var-dumper",
- "version": "v2.8.12",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/var-dumper.git",
- "reference": "08761341cc4a3b2d9d9578364f7c655b178254aa"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/08761341cc4a3b2d9d9578364f7c655b178254aa",
- "reference": "08761341cc4a3b2d9d9578364f7c655b178254aa",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "require-dev": {
- "twig/twig": "~1.20|~2.0"
- },
- "suggest": {
- "ext-symfony_debug": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "files": [
- "Resources/functions/dump.php"
- ],
- "psr-4": {
- "Symfony\\Component\\VarDumper\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "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 mechanism for exploring and dumping PHP variables",
- "homepage": "https://symfony.com/",
- "keywords": [
- "debug",
- "dump"
- ],
- "time": "2016-09-29 14:06:15"
- },
- {
- "name": "symfony/yaml",
- "version": "v2.8.12",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "e7540734bad981fe59f8ef14b6fc194ae9df8d9c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/e7540734bad981fe59f8ef14b6fc194ae9df8d9c",
- "reference": "e7540734bad981fe59f8ef14b6fc194ae9df8d9c",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "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 Yaml Component",
- "homepage": "https://symfony.com/",
- "time": "2016-09-02 01:57:56"
- },
- {
- "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"
- },
- {
- "name": "webmozart/path-util",
- "version": "2.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozart/path-util.git",
- "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
- "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "webmozart/assert": "~1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.6",
- "sebastian/version": "^1.0.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Webmozart\\PathUtil\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
- }
- ],
- "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.",
- "time": "2015-12-17 08:42:14"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": [],
- "platform-dev": []
-}
diff --git a/appengine/flexible/drupal8/php.ini b/appengine/flexible/drupal8/php.ini
deleted file mode 100644
index 230bc8a2d0..0000000000
--- a/appengine/flexible/drupal8/php.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-suhosin.post.max_vars = 1000
-suhosin.request.max_vars = 1000
-
-; we should tighten up these restrictions eventually
-suhosin.executor.func.blacklist =
-disable_functions =
diff --git a/appengine/flexible/drupal8/phpunit.xml b/appengine/flexible/drupal8/phpunit.xml
deleted file mode 100644
index 0960052f6f..0000000000
--- a/appengine/flexible/drupal8/phpunit.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
- tests
-
-
-
diff --git a/appengine/flexible/drupal8/phpunit.xml.dist b/appengine/flexible/drupal8/phpunit.xml.dist
new file mode 100644
index 0000000000..da7ad8da8e
--- /dev/null
+++ b/appengine/flexible/drupal8/phpunit.xml.dist
@@ -0,0 +1,32 @@
+
+
+
+
+
+ test
+ test/DeployTest.php
+
+
+
+
+ ./web
+
+ ./vendor
+
+
+
+
diff --git a/appengine/flexible/drupal8/test/DeployTest.php b/appengine/flexible/drupal8/test/DeployTest.php
new file mode 100644
index 0000000000..73d113ab98
--- /dev/null
+++ b/appengine/flexible/drupal8/test/DeployTest.php
@@ -0,0 +1,126 @@
+setDir($tmpDir);
+ }
+
+ private static function verifyEnvironmentVariables()
+ {
+ $envVars = [
+ 'GOOGLE_PROJECT_ID',
+ 'DRUPAL8_ADMIN_USERNAME',
+ 'DRUPAL8_ADMIN_PASSWORD',
+ 'DRUPAL8_DATABASE_HOST',
+ 'DRUPAL8_DATABASE_NAME',
+ 'DRUPAL8_DATABASE_USER',
+ 'DRUPAL8_DATABASE_PASS',
+ ];
+ foreach ($envVars as $envVar) {
+ if (false === getenv($envVar)) {
+ self::markTestSkipped("Please set the {$envVar} environment variable");
+ }
+ }
+ }
+
+ private static function downloadAndInstallDrupal($targetDir)
+ {
+ $console = __DIR__ . '/../vendor/bin/drush';
+
+ $dbUrl = sprintf(
+ 'mysql://%s:%s@%s/%s',
+ getenv('DRUPAL8_DATABASE_USER'),
+ getenv('DRUPAL8_DATABASE_PASS'),
+ getenv('DRUPAL8_DATABASE_HOST'),
+ getenv('DRUPAL8_DATABASE_NAME')
+ );
+
+ // download
+ self::setWorkingDirectory(dirname($targetDir));
+ $downloadCmd = sprintf(
+ '%s dl drupal --drupal-project-rename=%s',
+ $console,
+ basename($targetDir)
+ );
+ self::execute($downloadCmd);
+
+ // install
+ self::setWorkingDirectory($targetDir);
+ $installCmd = sprintf(
+ '%s site-install standard ' .
+ '--db-url=%s --account-name=%s --account-pass=%s -y',
+ $console,
+ $dbUrl,
+ getenv('DRUPAL8_ADMIN_USERNAME'),
+ getenv('DRUPAL8_ADMIN_PASSWORD')
+ );
+ $process = self::createProcess($installCmd);
+ $process->setTimeout(null);
+ self::executeProcess($process);
+
+ // this is to fix a PHP runtime bug
+ // @TODO - FIX THIS!!
+ self::execute('rm composer.*');
+
+ // move the code for the sample to the new drupal installation
+ $files = ['app.yaml'];
+ foreach ($files as $file) {
+ $source = sprintf('%s/../%s', __DIR__, $file);
+ $target = sprintf('%s/%s', $targetDir, $file);
+ copy($source, $target);
+ }
+ }
+
+ public function testContacts()
+ {
+ // Access the blog top page
+ $resp = $this->client->get('/contact');
+ $this->assertEquals(
+ '200',
+ $resp->getStatusCode(),
+ 'top page status code'
+ );
+ $content = $resp->getBody()->getContents();
+ $this->assertStringContainsString('Website feedback', $content);
+ $this->assertStringContainsString('Drupal', $content);
+ }
+}
diff --git a/appengine/flexible/drupal8/tests/DeployTest.php b/appengine/flexible/drupal8/tests/DeployTest.php
deleted file mode 100644
index 0ecd5bcc5a..0000000000
--- a/appengine/flexible/drupal8/tests/DeployTest.php
+++ /dev/null
@@ -1,206 +0,0 @@
-setTimeout(null);
- self::executeProcess($process);
-
- // this is to fix a PHP runtime bug
- // @TODO - FIX THIS!!
- self::execute('rm composer.*');
-
- // move the code for the sample to the new drupal installation
- $files = ['app.yaml', 'php.ini', 'nginx-app.conf'];
- foreach ($files as $file) {
- $source = sprintf('%s/../%s', __DIR__, $file);
- $target = sprintf('%s/%s', $targetDir, $file);
- copy($source, $target);
- }
-
- // if a service name has been defined, add it to "app.yaml"
- if ($service = self::getServiceName()) {
- $appYaml = sprintf('%s/app.yaml', $targetDir);
- file_put_contents($appYaml, "\nservice: $service\n", FILE_APPEND);
- }
- }
-
- public static function deploy($projectId, $versionId, $targetDir)
- {
- for ($i = 0; $i <= 3; $i++) {
- $process = self::createProcess(
- "gcloud -q app deploy "
- . "--version $versionId "
- . "--project $projectId --no-promote -q "
- . "$targetDir/app.yaml"
- );
- $process->setTimeout(60 * 30); // 30 minutes
- if (self::executeProcess($process, false)) {
- return;
- }
- self::$logger->warning('Retrying deployment');
- }
- self::fail('Deployment failed.');
- }
-
- public static function tearDownAfterClass()
- {
- for ($i = 0; $i <= 3; $i++) {
- $process = self::createProcess(sprintf(
- 'gcloud -q app versions delete %s --service %s --project %s',
- self::getVersion(),
- self::getServiceName() ?: 'default',
- self::getProjectId()
- ));
- $process->setTimeout(600); // 10 minutes
- if (self::executeProcess($process, false)) {
- return;
- }
- self::$logger->warning('Retrying to delete the version');
- }
- }
-
- public function setUp()
- {
- $service = self::getServiceName();
- $url = sprintf('https://%s%s-dot-%s.appspot.com/',
- self::getVersion(),
- $service ? "-dot-$service" : '',
- self::getProjectId());
- $this->client = new Client(['base_uri' => $url]);
- }
-
- public function testContacts()
- {
- // Access the blog top page
- $resp = $this->client->get('/contact');
- $this->assertEquals(
- '200',
- $resp->getStatusCode(),
- 'top page status code'
- );
- $content = $resp->getBody()->getContents();
- $this->assertContains('Website feedback', $content);
- $this->assertContains('Drupal', $content);
- }
-}
diff --git a/appengine/flexible/drupal8/tests/bootstrap.php b/appengine/flexible/drupal8/tests/bootstrap.php
deleted file mode 100644
index dff2bd298c..0000000000
--- a/appengine/flexible/drupal8/tests/bootstrap.php
+++ /dev/null
@@ -1,4 +0,0 @@
-setName('make-request')
- ->setDescription('Send in a request to endpoints')
- ->addArgument(
- 'host',
- InputArgument::REQUIRED,
- 'Your API host, e.g. https://your-project.appspot.com.'
- )
- ->addArgument(
- 'api_key',
- InputArgument::REQUIRED,
- 'Your API key.'
- )
- ->addArgument(
- 'credentials',
- InputArgument::OPTIONAL,
- 'The path to your credentials file. This can be service account credentials, client secrets, or omitted.'
- )
- ->addOption(
- 'message',
- 'm',
- InputOption::VALUE_REQUIRED,
- 'The message to send in',
- 'TEST MESSAGE (change this with -m)'
- );
- }
-
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- $api_key = $input->getArgument('api_key');
- $host = $input->getArgument('host');
- $message = $input->getOption('message');
-
- $http = new HttpClient(['base_uri' => $host]);
- $headers = [];
- $body = null;
-
- if ($credentials = $input->getArgument('credentials')) {
- if (!file_exists($credentials)) {
- throw new InvalidArgumentException('file does not exist');
- }
- if (!$config = json_decode(file_get_contents($credentials), true)) {
- throw new LogicException('invalid json for auth config');
- }
-
- $oauth = new OAuth2([
- 'issuer' => 'jwt-client.endpoints.sample.google.com',
- 'audience' => 'echo.endpoints.sample.google.com',
- 'scope' => 'email',
- 'authorizationUri' => 'https://accounts.google.com/o/oauth2/auth',
- 'tokenCredentialUri' => 'https://www.googleapis.com/oauth2/v4/token',
- ]);
-
- if (isset($config['type']) && $config['type'] == 'service_account') {
- // return the "jwt" info from the request
- $method = 'GET';
- $path = '/auth/info/googlejwt';
-
- $oauth->setSub('123456');
- $oauth->setSigningKey($config['private_key']);
- $oauth->setSigningAlgorithm('RS256');
- $oauth->setClientId($config['client_id']);
- $jwt = $oauth->toJwt();
-
- $headers['Authorization'] = sprintf('Bearer %s', $jwt);
- } else {
- // return the "idtoken" info from the request
- $method = 'GET';
- $path = '/auth/info/googleidtoken';
-
- // open the URL
- $oauth->setClientId($config['installed']['client_id']);
- $oauth->setClientSecret($config['installed']['client_secret']);
- $oauth->setRedirectUri('urn:ietf:wg:oauth:2.0:oob');
- $authUrl = $oauth->buildFullAuthorizationUri(['access_type' => 'offline']);
- `open '$authUrl'`;
-
- // prompt for the auth code
- $q = new Question('Please enter the authorization code:');
- $helper = new QuestionHelper();
- $authCode = $helper->ask($input, $output, $q);
- $oauth->setCode($authCode);
-
- $token = $oauth->fetchAuthToken();
- if (empty($token['id_token'])) {
- return $output->writeln("unable to retrieve ID token");
- }
- $headers['Authorization'] = sprintf('Bearer %s', $token['id_token']);
- }
- } else {
- // return just the message we sent in
- $method = 'POST';
- $path = '/echo';
- $body = json_encode([ 'message' => $message ]);
- $headers['Content-Type'] = 'application/json';
- }
-
- $output->writeln(sprintf('requesting "%s"...', $path));
-
- $response = $http->request($method, $path, [
- 'query' => ['key' => $api_key],
- 'body' => $body,
- 'headers' => $headers
- ]);
-
- $output->writeln((string) $response->getBody());
- }
-}
diff --git a/appengine/flexible/endpoints/README.md b/appengine/flexible/endpoints/README.md
index 5d5b983dd4..e1e092114d 100644
--- a/appengine/flexible/endpoints/README.md
+++ b/appengine/flexible/endpoints/README.md
@@ -1,106 +1,8 @@
# Google Cloud Endpoints & App Engine Flexible Environment & PHP
-This sample demonstrates how to use Google Cloud Endpoints on Google App Engine Flexible Environment using PHP.
+This sample demonstrates how to use Google Cloud Endpoints on Google App Engine
+Flexible Environment using PHP.
-This sample consists of two parts:
+The sample code lives in [a parent endpoints directory][1].
-1. The backend
-2. The clients
-
-## Running locally
-
-### Running the backend
-
-For more info on running Flexible applications locally, see [the getting started documentation](https://cloud.google.com/php/getting-started/hello-world).
-
-Install all the dependencies:
-
- $ composer install
-
-Run the application:
-
- $ php -S localhost:8080
-
-### Using the echo client
-
-With the app running locally, you can execute the simple echo client using:
-
- $ php endpoints.php make-request http://localhost:8080 APIKEY
-
-The `APIKEY` can be any string as the local endpoint proxy doesn't need authentication.
-
-## Deploying to Google App Engine
-
-Open the `swagger.yaml` file and in the `host` property, replace
-`YOUR-PROJECT-ID` with your project's ID.
-
-Then, deploy the sample using `gcloud`:
-
- gcloud beta app deploy
-
-Once deployed, you can access the application at https://YOUR-PROJECT-ID.appspot.com/
-or run the command `gcloud app browse`.
-
-### Using the echo client
-
-With the project deployed, you'll need to create an API key to access the API.
-
-1. Open the Credentials page of the API Manager in the [Cloud Console](https://console.cloud.google.com/apis/credentials).
-2. Click 'Create credentials'.
-3. Select 'API Key'.
-4. Choose 'Server Key'
-
-With the API key, you can use the echo client to access the API:
-
- $ php endpoints.php make-request https://YOUR-PROJECT-ID.appspot.com YOUR-API-KEY
-
-### Using the JWT client.
-
-The JWT client demonstrates how to use service accounts to authenticate to endpoints. To use the client, you'll need both an API key (as described in the echo client section) and a service account. To create a service account:
-
-1. Open the Credentials page of the API Manager in the [Cloud Console](https://console.cloud.google.com/apis/credentials).
-2. Click 'Create credentials'.
-3. Select 'Service account key'.
-4. In the 'Select service account' dropdown, select 'Create new service account'.
-5. Choose 'JSON' for the key type.
-
-To use the service account for authentication:
-
-1. Update the `google_jwt`'s `x-jwks_uri` in `swagger.yaml` with your service account's email address.
-2. Redeploy your application.
-
-Now you can use the JWT client to make requests to the API:
-
- $ php endpoints.php make-request https://YOUR-PROJECT-ID.appspot.com YOUR-API-KEY /path/to/service-account.json
-
-### Using the ID Token client.
-
-The ID Token client demonstrates how to use user credentials to authenticate to endpoints. To use the client, you'll need both an API key (as described in the echo client section) and a OAuth2 client ID. To create a client ID:
-
-1. Open the Credentials page of the API Manager in the [Cloud Console](https://console.cloud.google.com/apis/credentials).
-2. Click 'Create credentials'.
-3. Select 'OAuth client ID'.
-4. Choose 'Other' for the application type.
-
-To use the client ID for authentication:
-
-1. Update the `/auth/info/googleidtoken`'s `audiences` in `swagger.yaml` with your client ID.
-2. Redeploy your application.
-
-Now you can use the client ID to make requests to the API:
-
- $ php endpoints.php make-request https://YOUR-PROJECT-ID.appspot.com YOUR-API-KEY /path/to/client-secrets.json
-
-
-## Viewing the Endpoints graphs
-
-By using Endpoints, you get access to several metrics that are displayed graphically in the Cloud Console.
-
-To view the Endpoints graphs:
-
-1. Go to the [Endpoints section in Cloud Console](https://console.cloud.google.com/endpoints) of the project you deployed your API to.
-2. Click on your API to view more detailed information about the metrics collected.
-
-## Swagger UI
-
-The Swagger UI is an open source Swagger project that allows you to explore your API through a UI. Find out more about it on the [Swagger site](http://swagger.io/swagger-ui/).
+[1]: ../../../endpoints/getting-started
diff --git a/appengine/flexible/endpoints/app.php b/appengine/flexible/endpoints/app.php
deleted file mode 100644
index 4a486f3330..0000000000
--- a/appengine/flexible/endpoints/app.php
+++ /dev/null
@@ -1,72 +0,0 @@
-post('/echo', function () use ($app) {
- // Simple echo service.
- $message = $app['request']->get('message');
- return $app->json(['message' => $message]);
-});
-
-$app->get('/auth/info/googlejwt', function () use ($app) {
- // Auth info with Google signed JWT.
- return $app->json($app['auth_info']);
-});
-
-
-$app->get('/auth/info/googleidtoken', function () use ($app) {
- // Auth info with Google ID token.
- return $app->json($app['auth_info']);
-});
-
-$app['auth_info'] = function () use ($app) {
- /** @var Symfony\Component\HttpFoundation\Request $request */
- $request = $app['request'];
- // Retrieves the authenication information from Google Cloud Endpoints.
- $encoded_info = $request->headers->get('X-Endpoint-API-UserInfo');
-
- if ($encoded_info) {
- $info_json = utf8_decode(base64_decode($encoded_info));
- $user_info = json_decode($info_json);
- } else {
- $user_info = ['id' => 'anonymous'];
- }
-
- return $user_info;
-};
-
-// Accept JSON requests
-$app->before(function (Request $request) {
- if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
- $data = json_decode($request->getContent(), true);
- $request->request->replace(is_array($data) ? $data : array());
- }
-});
-
-return $app;
diff --git a/appengine/flexible/endpoints/app.yaml b/appengine/flexible/endpoints/app.yaml
deleted file mode 100644
index 6c9f705c34..0000000000
--- a/appengine/flexible/endpoints/app.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-runtime: php
-vm: true
-
-beta_settings:
- # Enable Google Cloud Endpoints API management.
- use_endpoints_api_management: true
- # Specify the Swagger API specification.
- endpoints_swagger_spec_file: swagger.yaml
diff --git a/appengine/flexible/endpoints/composer.json b/appengine/flexible/endpoints/composer.json
deleted file mode 100644
index bf15f6d722..0000000000
--- a/appengine/flexible/endpoints/composer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "require": {
- "silex/silex": " ^1.3",
- "symfony/console": " ^3.0",
- "google/auth": " 0.7"
- },
- "require-dev": {
- "symfony/browser-kit": " ^3.0"
- },
- "autoload": {
- "psr-4": {
- "Google\\Cloud\\Samples\\Appengine\\Endpoints\\": ""
- }
- }
-}
diff --git a/appengine/flexible/endpoints/composer.lock b/appengine/flexible/endpoints/composer.lock
deleted file mode 100644
index bb9fa13c8b..0000000000
--- a/appengine/flexible/endpoints/composer.lock
+++ /dev/null
@@ -1,1061 +0,0 @@
-{
- "_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": "121592586ca4769d050817e0005f4ca9",
- "content-hash": "34adf1319e9dd192f8056ef846f9b4be",
- "packages": [
- {
- "name": "firebase/php-jwt",
- "version": "v3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/firebase/php-jwt.git",
- "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/firebase/php-jwt/zipball/fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1",
- "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Firebase\\JWT\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Neuman Vong",
- "email": "neuman+pear@twilio.com",
- "role": "Developer"
- },
- {
- "name": "Anant Narayanan",
- "email": "anant@php.net",
- "role": "Developer"
- }
- ],
- "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.",
- "homepage": "https://github.com/firebase/php-jwt",
- "time": "2015-07-22 18:31:08"
- },
- {
- "name": "google/auth",
- "version": "v0.7",
- "source": {
- "type": "git",
- "url": "https://github.com/google/google-auth-library-php.git",
- "reference": "f3288860ce7b3076a6768e4ff7b85e0f6100e221"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/google/google-auth-library-php/zipball/f3288860ce7b3076a6768e4ff7b85e0f6100e221",
- "reference": "f3288860ce7b3076a6768e4ff7b85e0f6100e221",
- "shasum": ""
- },
- "require": {
- "firebase/php-jwt": "~2.0|~3.0",
- "guzzlehttp/guzzle": "~5.2|~6.0",
- "guzzlehttp/psr7": "1.2.*",
- "php": ">=5.4",
- "psr/http-message": "1.0.*"
- },
- "require-dev": {
- "phplint/phplint": "0.0.1",
- "phpunit/phpunit": "3.7.*"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ],
- "psr-4": {
- "Google\\Auth\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "description": "Google Auth Library for PHP",
- "homepage": "http://github.com/google/google-auth-library-php",
- "keywords": [
- "Authentication",
- "google",
- "oauth2"
- ],
- "time": "2016-03-03 02:03:58"
- },
- {
- "name": "guzzlehttp/guzzle",
- "version": "6.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/guzzle.git",
- "reference": "d094e337976dff9d8e2424e8485872194e768662"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d094e337976dff9d8e2424e8485872194e768662",
- "reference": "d094e337976dff9d8e2424e8485872194e768662",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/promises": "~1.0",
- "guzzlehttp/psr7": "~1.1",
- "php": ">=5.5.0"
- },
- "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-03-21 20:02:09"
- },
- {
- "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.2.3",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/psr7.git",
- "reference": "2e89629ff057ebb49492ba08e6995d3a6a80021b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/2e89629ff057ebb49492ba08e6995d3a6a80021b",
- "reference": "2e89629ff057ebb49492ba08e6995d3a6a80021b",
- "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.0-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-02-18 21:54:00"
- },
- {
- "name": "pimple/pimple",
- "version": "v1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Pimple.git",
- "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d",
- "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Pimple": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Pimple is a simple Dependency Injection Container for PHP 5.3",
- "homepage": "http://pimple.sensiolabs.org/",
- "keywords": [
- "container",
- "dependency injection"
- ],
- "time": "2013-11-22 08:30:29"
- },
- {
- "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.2",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
- "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
- "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-10-10 12:19:37"
- },
- {
- "name": "silex/silex",
- "version": "v1.3.5",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Silex.git",
- "reference": "374c7e04040a6f781c90f7d746726a5daa78e783"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Silex/zipball/374c7e04040a6f781c90f7d746726a5daa78e783",
- "reference": "374c7e04040a6f781c90f7d746726a5daa78e783",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "pimple/pimple": "~1.0",
- "symfony/event-dispatcher": "~2.3|3.0.*",
- "symfony/http-foundation": "~2.3|3.0.*",
- "symfony/http-kernel": "~2.3|3.0.*",
- "symfony/routing": "~2.3|3.0.*"
- },
- "require-dev": {
- "doctrine/dbal": "~2.2",
- "monolog/monolog": "^1.4.1",
- "swiftmailer/swiftmailer": "~5",
- "symfony/browser-kit": "~2.3|3.0.*",
- "symfony/config": "~2.3|3.0.*",
- "symfony/css-selector": "~2.3|3.0.*",
- "symfony/debug": "~2.3|3.0.*",
- "symfony/dom-crawler": "~2.3|3.0.*",
- "symfony/finder": "~2.3|3.0.*",
- "symfony/form": "~2.3|3.0.*",
- "symfony/locale": "~2.3|3.0.*",
- "symfony/monolog-bridge": "~2.3|3.0.*",
- "symfony/options-resolver": "~2.3|3.0.*",
- "symfony/phpunit-bridge": "~2.7",
- "symfony/process": "~2.3|3.0.*",
- "symfony/security": "~2.3|3.0.*",
- "symfony/serializer": "~2.3|3.0.*",
- "symfony/translation": "~2.3|3.0.*",
- "symfony/twig-bridge": "~2.3|3.0.*",
- "symfony/validator": "~2.3|3.0.*",
- "twig/twig": "~1.8|~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Silex\\": "src/Silex"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Igor Wiedler",
- "email": "igor@wiedler.ch"
- }
- ],
- "description": "The PHP micro-framework based on the Symfony Components",
- "homepage": "http://silex.sensiolabs.org/",
- "keywords": [
- "microframework"
- ],
- "time": "2016-01-06 14:59:35"
- },
- {
- "name": "symfony/console",
- "version": "v3.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "6cb0872fb57b38b3b09ff213c21ed693956b9eb0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/6cb0872fb57b38b3b09ff213c21ed693956b9eb0",
- "reference": "6cb0872fb57b38b3b09ff213c21ed693956b9eb0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/debug": "~2.8|~3.0",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/event-dispatcher": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Console\\": ""
- },
- "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 Console Component",
- "homepage": "https://symfony.com/",
- "time": "2016-09-28 00:11:12"
- },
- {
- "name": "symfony/debug",
- "version": "v3.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/debug.git",
- "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/e2b3f74a67fc928adc3c1b9027f73e1bc01190a8",
- "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "psr/log": "~1.0"
- },
- "conflict": {
- "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
- },
- "require-dev": {
- "symfony/class-loader": "~2.8|~3.0",
- "symfony/http-kernel": "~2.8|~3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Debug\\": ""
- },
- "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 Debug Component",
- "homepage": "https://symfony.com/",
- "time": "2016-09-06 11:02:40"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v3.0.9",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "54da3ff63dec3c9c0e32ec3f95a7d94ef64baa00"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/54da3ff63dec3c9c0e32ec3f95a7d94ef64baa00",
- "reference": "54da3ff63dec3c9c0e32ec3f95a7d94ef64baa00",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/dependency-injection": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
- },
- "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 EventDispatcher Component",
- "homepage": "https://symfony.com/",
- "time": "2016-07-19 10:44:15"
- },
- {
- "name": "symfony/http-foundation",
- "version": "v3.0.9",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-foundation.git",
- "reference": "49ba00f8ede742169cb6b70abe33243f4d673f82"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49ba00f8ede742169cb6b70abe33243f4d673f82",
- "reference": "49ba00f8ede742169cb6b70abe33243f4d673f82",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/polyfill-mbstring": "~1.1"
- },
- "require-dev": {
- "symfony/expression-language": "~2.8|~3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpFoundation\\": ""
- },
- "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 HttpFoundation Component",
- "homepage": "https://symfony.com/",
- "time": "2016-07-17 13:54:30"
- },
- {
- "name": "symfony/http-kernel",
- "version": "v3.0.9",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-kernel.git",
- "reference": "d97ba4425e36e79c794e7d14ff36f00f081b37b3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d97ba4425e36e79c794e7d14ff36f00f081b37b3",
- "reference": "d97ba4425e36e79c794e7d14ff36f00f081b37b3",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "psr/log": "~1.0",
- "symfony/debug": "~2.8|~3.0",
- "symfony/event-dispatcher": "~2.8|~3.0",
- "symfony/http-foundation": "~2.8.8|~3.0.8|~3.1.2|~3.2"
- },
- "conflict": {
- "symfony/config": "<2.8"
- },
- "require-dev": {
- "symfony/browser-kit": "~2.8|~3.0",
- "symfony/class-loader": "~2.8|~3.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/console": "~2.8|~3.0",
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/dependency-injection": "~2.8|~3.0",
- "symfony/dom-crawler": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/finder": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0",
- "symfony/routing": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0",
- "symfony/templating": "~2.8|~3.0",
- "symfony/translation": "~2.8|~3.0",
- "symfony/var-dumper": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/browser-kit": "",
- "symfony/class-loader": "",
- "symfony/config": "",
- "symfony/console": "",
- "symfony/dependency-injection": "",
- "symfony/finder": "",
- "symfony/var-dumper": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpKernel\\": ""
- },
- "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 HttpKernel Component",
- "homepage": "https://symfony.com/",
- "time": "2016-07-30 09:10:37"
- },
- {
- "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/routing",
- "version": "v3.0.9",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/routing.git",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/9038984bd9c05ab07280121e9e10f61a7231457b",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "conflict": {
- "symfony/config": "<2.8"
- },
- "require-dev": {
- "doctrine/annotations": "~1.0",
- "doctrine/common": "~2.2",
- "psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/http-foundation": "~2.8|~3.0",
- "symfony/yaml": "~2.8|~3.0"
- },
- "suggest": {
- "doctrine/annotations": "For using the annotation loader",
- "symfony/config": "For using the all-in-one router or any loader",
- "symfony/dependency-injection": "For loading routes from a service",
- "symfony/expression-language": "For using expression matching",
- "symfony/http-foundation": "For using a Symfony Request object",
- "symfony/yaml": "For using the YAML loader"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Routing\\": ""
- },
- "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 Routing Component",
- "homepage": "https://symfony.com/",
- "keywords": [
- "router",
- "routing",
- "uri",
- "url"
- ],
- "time": "2016-06-29 05:40:00"
- }
- ],
- "packages-dev": [
- {
- "name": "symfony/browser-kit",
- "version": "v3.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/browser-kit.git",
- "reference": "901319a31c9b3cee7857b4aeeb81b5d64dfa34fc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/901319a31c9b3cee7857b4aeeb81b5d64dfa34fc",
- "reference": "901319a31c9b3cee7857b4aeeb81b5d64dfa34fc",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/dom-crawler": "~2.8|~3.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\BrowserKit\\": ""
- },
- "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 BrowserKit Component",
- "homepage": "https://symfony.com/",
- "time": "2016-09-06 11:02:40"
- },
- {
- "name": "symfony/dom-crawler",
- "version": "v3.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/dom-crawler.git",
- "reference": "bb7395e8b1db3654de82b9f35d019958276de4d7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/bb7395e8b1db3654de82b9f35d019958276de4d7",
- "reference": "bb7395e8b1db3654de82b9f35d019958276de4d7",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/css-selector": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\DomCrawler\\": ""
- },
- "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 DomCrawler Component",
- "homepage": "https://symfony.com/",
- "time": "2016-08-05 08:37:39"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": [],
- "platform-dev": []
-}
diff --git a/appengine/flexible/endpoints/endpoints.php b/appengine/flexible/endpoints/endpoints.php
deleted file mode 100644
index c90712079e..0000000000
--- a/appengine/flexible/endpoints/endpoints.php
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env php
-add($command);
-$application->run();
diff --git a/appengine/flexible/endpoints/index.php b/appengine/flexible/endpoints/index.php
deleted file mode 100644
index 55af8d9efd..0000000000
--- a/appengine/flexible/endpoints/index.php
+++ /dev/null
@@ -1,28 +0,0 @@
-run();
diff --git a/appengine/flexible/endpoints/nginx-app.conf b/appengine/flexible/endpoints/nginx-app.conf
deleted file mode 100644
index c13edbfb3d..0000000000
--- a/appengine/flexible/endpoints/nginx-app.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-location / {
- # try to serve file directly, fallback to front controller
- try_files $uri /index.php$is_args$args;
-}
diff --git a/appengine/flexible/endpoints/phpunit.xml b/appengine/flexible/endpoints/phpunit.xml
deleted file mode 100644
index 0e23c6269c..0000000000
--- a/appengine/flexible/endpoints/phpunit.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
- test
-
-
-
-
-
-
-
- app.php
- EndpointsCommand.php
-
-
-
diff --git a/appengine/flexible/endpoints/swagger.yaml b/appengine/flexible/endpoints/swagger.yaml
deleted file mode 100644
index 2bb8c6a25f..0000000000
--- a/appengine/flexible/endpoints/swagger.yaml
+++ /dev/null
@@ -1,106 +0,0 @@
-swagger: "2.0"
-info:
- description: "A simple Google Cloud Endpoints API example."
- title: "Endpoints Example"
- version: "1.0.0"
-host: "YOUR-PROJECT-ID.appspot.com"
-basePath: "/"
-consumes:
-- "application/json"
-produces:
-- "application/json"
-schemes:
-- "https"
-paths:
- "/echo":
- post:
- description: "Echo back a given message."
- operationId: "echo"
- produces:
- - "application/json"
- responses:
- 200:
- description: "Echo"
- schema:
- $ref: "#/definitions/echoMessage"
- parameters:
- - description: "Message to echo"
- in: body
- name: message
- required: true
- schema:
- $ref: "#/definitions/echoMessage"
- "/auth/info/googlejwt":
- get:
- description: "Returns the requests' authentication information."
- operationId: "auth_info_google_jwt"
- produces:
- - "application/json"
- responses:
- 200:
- description: "Authenication info."
- schema:
- $ref: "#/definitions/authInfoResponse"
- x-security:
- - google_jwt:
- audiences:
- # This must match the "aud" field in the JWT. You can add multiple
- # audiences to accept JWTs from multiple clients.
- - "echo.endpoints.sample.google.com"
- "/auth/info/googleidtoken":
- get:
- description: "Returns the requests' authentication information."
- operationId: "authInfoGoogleIdToken"
- produces:
- - "application/json"
- responses:
- 200:
- description: "Authenication info."
- schema:
- $ref: "#/definitions/authInfoResponse"
- x-security:
- - google_id_token:
- audiences:
- # Your OAuth2 client's Client ID must be added here. You can add
- # multiple client IDs to accept tokens from multiple clients.
- - "YOUR-CLIENT-ID"
-definitions:
- echoMessage:
- properties:
- message:
- type: "string"
- authInfoResponse:
- properties:
- id:
- type: "string"
- email:
- type: "string"
-# This section requires all requests to any path to require an API key.
-security:
-- api_key: []
-securityDefinitions:
- # This section configures basic authentication with an API key.
- api_key:
- type: "apiKey"
- name: "key"
- in: "query"
- # This section configures authentication using Google API Service Accounts
- # to sign a json web token. This is mostly used for server-to-server
- # communication.
- google_jwt:
- authorizationUrl: ""
- flow: "implicit"
- type: "oauth2"
- # This must match the 'iss' field in the JWT.
- x-issuer: "jwt-client.endpoints.sample.google.com"
- # Update this with your service account's email address.
- x-jwks_uri: "https://www.googleapis.com/service_accounts/v1/jwk/YOUR-SERVICE-ACCOUNT-EMAIL"
- # This section configures authentication using Google OAuth2 ID Tokens.
- # ID Tokens can be obtained using OAuth2 clients, and can be used to access
- # your API on behalf of a particular user.
- google_id_token:
- authorizationUrl: ""
- flow: "implicit"
- type: "oauth2"
- x-issuer: "https://accounts.google.com/"
- x-jwks_uri: "https://www.googleapis.com/oauth2/v1/certs"
diff --git a/appengine/flexible/endpoints/test/EndpointsCommandTest.php b/appengine/flexible/endpoints/test/EndpointsCommandTest.php
deleted file mode 100644
index 740a2c4bef..0000000000
--- a/appengine/flexible/endpoints/test/EndpointsCommandTest.php
+++ /dev/null
@@ -1,110 +0,0 @@
-markTestSkipped('Set the GOOGLE_ENDPOINTS_HOST environment variable');
- }
-
- if (!$api_key = getenv('GOOGLE_ENDPOINTS_APIKEY')) {
- return $this->markTestSkipped('Set the GOOGLE_ENDPOINTS_APIKEY environment variable');
- }
-
- $this->host = $host;
- $this->apiKey = $api_key;
- }
-
- public function testEndpointsCommandWithNoCredentials()
- {
- $command = new EndpointsCommand();
- $tester = new CommandTester($command);
- $message = << $this->host,
- 'api_key' => $this->apiKey,
- '--message' => $message,
- ];
-
- $result = $tester->execute($input);
-
- $this->assertEquals(0, $result);
- $jsonFlags = JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT;
- $this->assertContains(json_encode($message, $jsonFlags), $tester->getDisplay());
- }
-
- public function testEndpointsCommandWithApplicationCredentials()
- {
- if (!$creds = getenv('GOOGLE_APPLICATION_CREDENTIALS')) {
- return $this->markTestSkipped('Set the GOOGLE_APPLICATION_CREDENTIALS environment variable');
- }
-
- $command = new EndpointsCommand();
- $tester = new CommandTester($command);
- $arguments = [
- 'host' => $this->host,
- 'api_key' => $this->apiKey,
- 'credentials' => $creds,
- ];
- $options = [];
-
- $result = $tester->execute($arguments, $options);
-
- $this->assertEquals(0, $result);
-
- $credentials = json_decode(file_get_contents($creds), true);
- $this->assertContains('123456', $tester->getDisplay());
- }
-
- public function testEndpointsCommandWithClientSecrets()
- {
- if (!$creds = getenv('GOOGLE_CLIENT_SECRETS')) {
- return $this->markTestSkipped('Set the GOOGLE_CLIENT_SECRETS environment variable');
- }
-
- $command = new EndpointsCommand();
- $tester = new CommandTester($command);
- $arguments = [
- 'host' => $this->host,
- 'api_key' => $this->apiKey,
- 'credentials' => $creds
- ];
- $options = [];
-
- $result = $tester->execute($arguments, $options);
-
- $this->assertEquals(0, $result);
-
- $credentials = json_decode(file_get_contents($creds), true);
- $this->assertContains('id', $tester->getDisplay());
- $this->assertContains('email', $tester->getDisplay());
- }
-}
diff --git a/appengine/flexible/endpoints/test/bootstrap.php b/appengine/flexible/endpoints/test/bootstrap.php
deleted file mode 100644
index 6c8c4f51b9..0000000000
--- a/appengine/flexible/endpoints/test/bootstrap.php
+++ /dev/null
@@ -1,3 +0,0 @@
-createClient();
-
- $message = <<request(
- 'POST',
- '/echo',
- [],
- [],
- [ 'CONTENT_TYPE' => 'application/json' ],
- json_encode([ 'message' => $message ])
- );
-
- $response = $client->getResponse();
- $this->assertEquals(200, $response->getStatusCode());
-
- $json = json_decode((string) $response->getContent(), true);
- $this->assertNotNull($json);
- $this->assertArrayHasKey('message', $json);
- $this->assertEquals($message, $json['message']);
- }
-}
diff --git a/appengine/flexible/helloworld/.dockerignore b/appengine/flexible/helloworld/.dockerignore
new file mode 100644
index 0000000000..305612c06b
--- /dev/null
+++ b/appengine/flexible/helloworld/.dockerignore
@@ -0,0 +1,2 @@
+test/*
+coverage/*
diff --git a/appengine/flexible/helloworld/.gitignore b/appengine/flexible/helloworld/.gitignore
new file mode 100644
index 0000000000..78e19ce013
--- /dev/null
+++ b/appengine/flexible/helloworld/.gitignore
@@ -0,0 +1,3 @@
+**/vendor
+**/settings.yml
+build/*
diff --git a/appengine/flexible/helloworld/README.md b/appengine/flexible/helloworld/README.md
new file mode 100644
index 0000000000..93bc6e868e
--- /dev/null
+++ b/appengine/flexible/helloworld/README.md
@@ -0,0 +1,6 @@
+# App Engine Flexible Hello World for PHP
+
+This folder contains the sample code for running a Hello World application
+on [App Engine Flexible][flex-helloworld]
+
+[flex-helloworld]: https://cloud.google.com/appengine/docs/flexible/php/quickstart
diff --git a/appengine/flexible/helloworld/app.yaml b/appengine/flexible/helloworld/app.yaml
new file mode 100644
index 0000000000..9af3b6d923
--- /dev/null
+++ b/appengine/flexible/helloworld/app.yaml
@@ -0,0 +1,18 @@
+runtime: php
+env: flex
+
+runtime_config:
+ document_root: web
+ operating_system: ubuntu22
+ runtime_version: 8.4
+
+# This sample incurs costs to run on the App Engine flexible environment.
+# The settings below are to reduce costs during testing and are not appropriate
+# for production use. For more information, see:
+# https://cloud.google.com/appengine/docs/flexible/php/configuring-your-app-with-app-yaml
+manual_scaling:
+ instances: 1
+resources:
+ cpu: 1
+ memory_gb: 0.5
+ disk_size_gb: 10
diff --git a/appengine/flexible/helloworld/composer.json b/appengine/flexible/helloworld/composer.json
new file mode 100644
index 0000000000..b3ba89a446
--- /dev/null
+++ b/appengine/flexible/helloworld/composer.json
@@ -0,0 +1,6 @@
+{
+ "require": {
+ "slim/slim": "^4.0",
+ "slim/psr7": "^1.3"
+ }
+}
diff --git a/appengine/flexible/drupal8/nginx-app.conf b/appengine/flexible/helloworld/nginx-app.conf
similarity index 100%
rename from appengine/flexible/drupal8/nginx-app.conf
rename to appengine/flexible/helloworld/nginx-app.conf
diff --git a/appengine/flexible/helloworld/phpunit.xml.dist b/appengine/flexible/helloworld/phpunit.xml.dist
new file mode 100644
index 0000000000..8f5eaee2cb
--- /dev/null
+++ b/appengine/flexible/helloworld/phpunit.xml.dist
@@ -0,0 +1,35 @@
+
+
+
+
+
+ test
+ test/DeployTest.php
+
+
+
+
+
+
+
+ ./web
+
+ ./vendor
+
+
+
+
diff --git a/appengine/flexible/helloworld/test/DeployTest.php b/appengine/flexible/helloworld/test/DeployTest.php
new file mode 100644
index 0000000000..47da99cdd1
--- /dev/null
+++ b/appengine/flexible/helloworld/test/DeployTest.php
@@ -0,0 +1,38 @@
+client->get('/');
+ $this->assertEquals('200', $resp->getStatusCode(),
+ 'index status code');
+ $this->assertStringContainsString('Hello World', (string) $resp->getBody(),
+ 'index content');
+ }
+}
diff --git a/appengine/flexible/helloworld/test/LocalTest.php b/appengine/flexible/helloworld/test/LocalTest.php
new file mode 100644
index 0000000000..73582de378
--- /dev/null
+++ b/appengine/flexible/helloworld/test/LocalTest.php
@@ -0,0 +1,50 @@
+createRequest('GET', '/');
+ $response = $app->handle($request);
+ $this->assertEquals(200, $response->getStatusCode());
+ $body = (string) $response->getBody();
+ $this->assertStringContainsString('Hello World', $body);
+ }
+
+ public function testGoodbye()
+ {
+ $app = require __DIR__ . '/../web/index.php';
+
+ $request = (new RequestFactory)->createRequest('GET', '/goodbye');
+ $response = $app->handle($request);
+ $this->assertEquals(200, $response->getStatusCode());
+ $body = (string) $response->getBody();
+ $this->assertStringContainsString('Goodbye World', $body);
+ }
+}
diff --git a/appengine/flexible/helloworld/web/index.php b/appengine/flexible/helloworld/web/index.php
new file mode 100644
index 0000000000..73700b45eb
--- /dev/null
+++ b/appengine/flexible/helloworld/web/index.php
@@ -0,0 +1,49 @@
+addErrorMiddleware(true, true, true);
+
+$app->get('/', function (Request $request, Response $response) {
+ $response->getBody()->write('Hello World');
+ return $response;
+});
+
+$app->get('/goodbye', function (Request $request, Response $response) {
+ $response->getBody()->write('Goodbye World');
+ return $response;
+});
+
+// @codeCoverageIgnoreStart
+if (PHP_SAPI != 'cli') {
+ $app->run();
+}
+// @codeCoverageIgnoreEnd
+
+return $app;
+// [END appengine_flex_helloworld_index_php]
diff --git a/appengine/flexible/laravel/README.md b/appengine/flexible/laravel/README.md
new file mode 100644
index 0000000000..79e327688d
--- /dev/null
+++ b/appengine/flexible/laravel/README.md
@@ -0,0 +1,7 @@
+Laravel on App Engine Flexible Environment
+==========================================
+
+**Code and tests for the Google Cloud Community article
+[Run Laravel on Google App Engine Flexible Environment][5]**
+
+[5]: https://cloud.google.com/community/tutorials/run-laravel-on-appengine-flexible
diff --git a/appengine/flexible/laravel/app-dbsessions.yaml b/appengine/flexible/laravel/app-dbsessions.yaml
new file mode 100644
index 0000000000..7c54770c24
--- /dev/null
+++ b/appengine/flexible/laravel/app-dbsessions.yaml
@@ -0,0 +1,29 @@
+runtime: php
+env: flex
+
+runtime_config:
+ document_root: public
+
+# Ensure we skip ".env", which is only for local development
+skip_files:
+ - .env
+
+env_variables:
+ # Put production environment variables here.
+ APP_LOG: errorlog
+ APP_KEY: YOUR_APP_KEY
+ STORAGE_DIR: /tmp
+ CACHE_DRIVER: database
+ SESSION_DRIVER: database
+ ## Set these environment variables according to your CloudSQL configuration.
+ DB_HOST: localhost
+ DB_DATABASE: YOUR_DB_DATABASE
+ DB_USERNAME: YOUR_DB_USERNAME
+ DB_PASSWORD: YOUR_DB_PASSWORD
+ DB_SOCKET: "/cloudsql/YOUR_CLOUDSQL_CONNECTION_NAME"
+
+beta_settings:
+ # for Cloud SQL, uncomment and set this value to the Cloud SQL
+ # connection name, e.g.
+ # "project:region:cloudsql-instance"
+ cloud_sql_instances: "YOUR_CLOUDSQL_CONNECTION_NAME"
diff --git a/appengine/flexible/laravel/app.yaml b/appengine/flexible/laravel/app.yaml
new file mode 100644
index 0000000000..8cb5301c90
--- /dev/null
+++ b/appengine/flexible/laravel/app.yaml
@@ -0,0 +1,15 @@
+runtime: php
+env: flex
+
+runtime_config:
+ document_root: public
+ enable_stackdriver_integration: true
+
+# Ensure we skip ".env", which is only for local development
+skip_files:
+ - .env
+
+env_variables:
+ # Put production environment variables here.
+ LOG_CHANNEL: stackdriver
+ APP_KEY: YOUR_APP_KEY
diff --git a/appengine/flexible/laravel/app/Exceptions/Handler.php b/appengine/flexible/laravel/app/Exceptions/Handler.php
new file mode 100644
index 0000000000..283cfd1f97
--- /dev/null
+++ b/appengine/flexible/laravel/app/Exceptions/Handler.php
@@ -0,0 +1,60 @@
+ env('LOG_CHANNEL', 'stack'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Log Channels
+ |--------------------------------------------------------------------------
+ |
+ | Here you may configure the log channels for your application. Out of
+ | the box, Laravel uses the Monolog PHP logging library. This gives
+ | you a variety of powerful log handlers / formatters to utilize.
+ |
+ | Available Drivers: "single", "daily", "slack", "syslog",
+ | "errorlog", "custom", "stack"
+ |
+ */
+
+ 'channels' => [
+ 'stack' => [
+ 'driver' => 'stack',
+ 'channels' => ['single'],
+ ],
+
+ 'single' => [
+ 'driver' => 'single',
+ 'path' => storage_path('logs/laravel.log'),
+ 'level' => 'debug',
+ ],
+
+ 'daily' => [
+ 'driver' => 'daily',
+ 'path' => storage_path('logs/laravel.log'),
+ 'level' => 'debug',
+ 'days' => 7,
+ ],
+
+ 'slack' => [
+ 'driver' => 'slack',
+ 'url' => env('LOG_SLACK_WEBHOOK_URL'),
+ 'username' => 'Laravel Log',
+ 'emoji' => ':boom:',
+ 'level' => 'critical',
+ ],
+
+ 'syslog' => [
+ 'driver' => 'syslog',
+ 'level' => 'debug',
+ ],
+
+ 'errorlog' => [
+ 'driver' => 'errorlog',
+ 'level' => 'debug',
+ ],
+ 'stackdriver' => [
+ 'driver' => 'custom',
+ 'via' => App\Logging\CreateCustomLogger::class,
+ 'level' => 'debug',
+ ],
+
+ ],
+
+];
diff --git a/appengine/flexible/laravel/phpunit.xml.dist b/appengine/flexible/laravel/phpunit.xml.dist
new file mode 100644
index 0000000000..74216aad61
--- /dev/null
+++ b/appengine/flexible/laravel/phpunit.xml.dist
@@ -0,0 +1,32 @@
+
+
+
+
+
+ test
+ test/DeployTest.php
+
+
+
+
+ ./src
+
+ ./vendor
+
+
+
+
diff --git a/appengine/flexible/laravel/routes/web.php b/appengine/flexible/laravel/routes/web.php
new file mode 100644
index 0000000000..9e6d128db9
--- /dev/null
+++ b/appengine/flexible/laravel/routes/web.php
@@ -0,0 +1,25 @@
+setDir($tmpDir);
+ chdir($tmpDir);
+ }
+
+ private static function verifyEnvironmentVariables()
+ {
+ $envVars = [
+ 'LARAVEL_CLOUDSQL_CONNECTION_NAME',
+ 'LARAVEL_DB_DATABASE',
+ 'LARAVEL_DB_USERNAME',
+ 'LARAVEL_DB_PASSWORD',
+ ];
+ foreach ($envVars as $envVar) {
+ if (false === getenv($envVar)) {
+ self::fail("Please set the {$envVar} environment variable");
+ }
+ }
+ }
+
+ private static function createLaravelProject($targetDir)
+ {
+ // install
+ $laravelPackage = 'laravel/laravel';
+ $cmd = sprintf('composer create-project --no-scripts %s %s', $laravelPackage, $targetDir);
+ $process = self::createProcess($cmd);
+ $process->setTimeout(300); // 5 minutes
+ self::executeProcess($process);
+
+ // copy and set the proper env vars in app.yaml
+ $appYaml = str_replace([
+ 'YOUR_APP_KEY',
+ 'YOUR_CLOUDSQL_CONNECTION_NAME',
+ 'YOUR_DB_DATABASE',
+ 'YOUR_DB_USERNAME',
+ 'YOUR_DB_PASSWORD',
+ ], [
+ self::execute('php artisan key:generate --show --no-ansi'),
+ getenv('LARAVEL_CLOUDSQL_CONNECTION_NAME'),
+ getenv('LARAVEL_DB_DATABASE'),
+ getenv('LARAVEL_DB_USERNAME'),
+ getenv('LARAVEL_DB_PASSWORD'),
+ ], file_get_contents(__DIR__ . '/../app-dbsessions.yaml'));
+ file_put_contents($targetDir . '/app.yaml', $appYaml);
+ }
+
+ private static function addPostDeployCommands($targetDir)
+ {
+ $contents = file_get_contents($targetDir . '/composer.json');
+ $json = json_decode($contents, true);
+ $json['scripts']['post-install-cmd'] = [
+ 'chmod -R 755 bootstrap\/cache',
+ 'php artisan cache:clear',
+ ];
+ $newContents = json_encode($json, JSON_PRETTY_PRINT);
+ file_put_contents($targetDir . '/composer.json', $newContents);
+ }
+
+ public function testHomepage()
+ {
+ // Access the blog top page
+ $resp = $this->client->get('/');
+ $this->assertEquals(
+ '200',
+ $resp->getStatusCode(),
+ 'top page status code'
+ );
+ $content = $resp->getBody()->getContents();
+ $this->assertStringContainsString('Laravel', $content);
+ }
+}
diff --git a/appengine/flexible/laravel/test/DeployTest.php b/appengine/flexible/laravel/test/DeployTest.php
new file mode 100644
index 0000000000..2386bf380d
--- /dev/null
+++ b/appengine/flexible/laravel/test/DeployTest.php
@@ -0,0 +1,188 @@
+setDir($tmpDir);
+ chdir($tmpDir);
+ }
+
+ private static function createLaravelProject($targetDir)
+ {
+ // install
+ $laravelPackage = 'laravel/laravel';
+ $cmd = sprintf('composer create-project --no-scripts %s %s', $laravelPackage, $targetDir);
+ $process = self::createProcess($cmd);
+ $process->setTimeout(300); // 5 minutes
+ self::executeProcess($process);
+ // add cloud libraries
+ $cmd = sprintf(
+ 'composer --working-dir=%s require google/cloud-logging '
+ . 'google/cloud-error-reporting',
+ $targetDir
+ );
+ $process = self::createProcess($cmd);
+ $process->setTimeout(300); // 5 minutes
+ self::executeProcess($process);
+
+ // copy in the app.yaml and add the app key.
+ $appYaml = str_replace([
+ 'YOUR_APP_KEY',
+ ], [
+ self::execute('php artisan key:generate --show --no-ansi'),
+ ], file_get_contents(__DIR__ . '/../app.yaml'));
+ file_put_contents($targetDir . '/app.yaml', $appYaml);
+ // move the code for the sample to the new laravel installation
+ mkdir("$targetDir/app/Logging", 0700, true);
+ $files = [
+ 'routes/web.php',
+ 'config/logging.php',
+ 'app/Exceptions/Handler.php',
+ 'app/Logging/CreateCustomLogger.php',
+ ];
+ foreach ($files as $file) {
+ $source = sprintf('%s/../%s', __DIR__, $file);
+ $target = sprintf('%s/%s', $targetDir, $file);
+ copy($source, $target);
+ }
+ }
+
+ private static function addPostDeployCommands($targetDir)
+ {
+ $contents = file_get_contents($targetDir . '/composer.json');
+ $json = json_decode($contents, true);
+ $json['scripts']['post-install-cmd'] = [
+ 'php artisan cache:clear',
+ ];
+ $newContents = json_encode($json, JSON_PRETTY_PRINT);
+ file_put_contents($targetDir . '/composer.json', $newContents);
+ }
+
+ public function testHomepage()
+ {
+ // Access the blog top page
+ $resp = $this->client->get('/');
+ $this->assertEquals(
+ '200',
+ $resp->getStatusCode(),
+ 'top page status code'
+ );
+ $content = $resp->getBody()->getContents();
+ $this->assertStringContainsString('Laravel', $content);
+ }
+
+ public function testNormalLog()
+ {
+ // Access a page erroring with 500
+ $token = uniqid();
+ // The routes are defined in routes/web.php
+ $path = "/log/$token";
+ $resp = $this->client->request('GET', $path, ['http_errors' => false]);
+ $this->assertEquals(
+ '200',
+ $resp->getStatusCode(),
+ 'log page status code'
+ );
+ $logging = new LoggingClient(
+ ['projectId' => getenv('GOOGLE_PROJECT_ID')]
+ );
+ // 'app' is the default logname of our Stackdriver Logging
+ // integration.
+ $logger = $logging->logger('app');
+
+ $this->runEventuallyConsistentTest(
+ function () use ($logger, $token) {
+ $logs = $logger->entries([
+ 'pageSize' => 100,
+ 'orderBy' => 'timestamp desc',
+ 'resultLimit' => 100
+ ]);
+ $found = false;
+ foreach ($logs as $log) {
+ $info = $log->info();
+ if (strpos("token: $token", $info['jsonPayload']['message']) !== 0) {
+ $found = true;
+ }
+ }
+ $this->assertTrue($found, 'The log entry was not found');
+ });
+ }
+
+ public function testErrorLog()
+ {
+ // Access a page erroring with 500
+ $token = uniqid();
+ // The routes are defined in routes/web.php
+ $path = "/exception/$token";
+ $resp = $this->client->request('GET', $path, ['http_errors' => false]);
+ $this->assertEquals(
+ '500',
+ $resp->getStatusCode(),
+ 'exception page status code'
+ );
+ $logging = new LoggingClient(
+ ['projectId' => getenv('GOOGLE_PROJECT_ID')]
+ );
+ // 'app-error' is the default logname of our Stackdriver Error
+ // Reporting integration.
+ $logger = $logging->logger('app-error');
+
+ $this->runEventuallyConsistentTest(
+ function () use ($logger, $token) {
+ $logs = $logger->entries([
+ 'pageSize' => 100,
+ 'orderBy' => 'timestamp desc',
+ 'resultLimit' => 100
+ ]);
+ $found = false;
+ foreach ($logs as $log) {
+ $info = $log->info();
+ if (strpos("token: $token", $info['jsonPayload']['message']) !== 0) {
+ $found = true;
+ }
+ }
+ $this->assertTrue($found, 'The log entry was not found');
+ });
+ }
+}
diff --git a/appengine/flexible/logging/README.md b/appengine/flexible/logging/README.md
new file mode 100644
index 0000000000..52410010ac
--- /dev/null
+++ b/appengine/flexible/logging/README.md
@@ -0,0 +1,46 @@
+# Logging and Google App Engine Flexible
+
+This sample application demonstrates how to implement logging from
+ Google App Engine Flexible Environment.
+
+## Register your application
+
+- Go to
+ [Google Developers Console](https://console.developers.google.com/project)
+ and create a new project. This will automatically enable an App
+ Engine application with the same ID as the project.
+
+## Prerequisites
+
+- Install [`composer`](https://getcomposer.org)
+- Install dependencies by running:
+
+ ```sh
+ $ composer install
+ ```
+
+## Deploy to App Engine
+
+**Prerequisites**
+
+- Install the [Google Cloud SDK](https://developers.google.com/cloud/sdk/).
+
+**Deploy with gcloud**
+
+```
+$ gcloud config set project YOUR_PROJECT_ID
+$ gcloud app deploy
+```
+
+## Run Locally
+
+- Go to "Credentials" and create a new Service Account.
+
+- Select "Generate new JSON key", then download a new JSON file.
+
+- Set the following environment variables:
+
+ - `GOOGLE_APPLICATION_CREDENTIALS`: the file path to the downloaded JSON file.
+ - `GCLOUD_PROJECT`: Your project ID
+
+- Run `php -S localhost:8000` and go to http://localhost:8000 in your browser.
diff --git a/appengine/flexible/logging/app.php b/appengine/flexible/logging/app.php
new file mode 100644
index 0000000000..44c1794042
--- /dev/null
+++ b/appengine/flexible/logging/app.php
@@ -0,0 +1,88 @@
+addErrorMiddleware(true, true, true);
+
+// Create Twig
+$twig = Twig::create(__DIR__);
+$app->add(TwigMiddleware::create($app, $twig));
+
+$projectId = getenv('GCLOUD_PROJECT');
+
+$app->get('/', function (Request $request, Response $response) use ($projectId, $twig) {
+ if (empty($projectId)) {
+ $response->getBody()->write('Set the GCLOUD_PROJECT environment variable to run locally');
+ return $response;
+ }
+ $logging = new LoggingClient([
+ 'projectId' => $projectId
+ ]);
+ $logger = $logging->logger('app');
+ $oneDayAgo = (new \DateTime('-1 day'))->format('c'); // ISO-8061
+ $logs = $logger->entries([
+ 'pageSize' => 10,
+ 'resultLimit' => 10,
+ 'orderBy' => 'timestamp desc',
+ 'filter' => sprintf('timestamp >= "%s"', $oneDayAgo),
+ ]);
+ return $twig->render($response, 'index.html.twig', ['logs' => $logs]);
+});
+
+$app->post('/log', function (Request $request, Response $response) use ($projectId) {
+ parse_str((string) $request->getBody(), $postData);
+ # [START gae_flex_configure_logging]
+ # [START logging_creating_psr3_logger]
+ $logging = new LoggingClient([
+ 'projectId' => $projectId
+ ]);
+ $logger = $logging->psrLogger('app');
+ # [END logging_creating_psr3_logger]
+ $logger->notice($postData['text'] ?? '');
+ # [END gae_flex_configure_logging]
+ return $response
+ ->withHeader('Location', '/')
+ ->withStatus(302);
+});
+
+$app->get('/async_log', function (Request $request, Response $response) use ($projectId) {
+ $token = $request->getUri()->getQuery('token');
+ # [START logging_enabling_psr3_batch]
+ $logger = LoggingClient::psrBatchLogger('app');
+ # [END logging_enabling_psr3_batch]
+ # [START logging_using_psr3_logger]
+ $logger->info('Hello World');
+ $logger->error('Oh no');
+ # [END logging_using_psr3_logger]
+ $logger->info("Token: $token");
+ $response->getBody()->write('Sent some logs');
+ return $response;
+});
+
+return $app;
diff --git a/appengine/flexible/logging/app.yaml b/appengine/flexible/logging/app.yaml
new file mode 100644
index 0000000000..8d960608f5
--- /dev/null
+++ b/appengine/flexible/logging/app.yaml
@@ -0,0 +1,10 @@
+runtime: php
+env: flex
+
+runtime_config:
+ document_root: .
+ # [START error_reporting_setup_php_app_yaml]
+ # [START trace_setup_php_enabling_stackdriver_integration]
+ enable_stackdriver_integration: true
+ # [END trace_setup_php_enabling_stackdriver_integration]
+ # [END error_reporting_setup_php_app_yaml]
diff --git a/appengine/flexible/logging/composer.json b/appengine/flexible/logging/composer.json
new file mode 100644
index 0000000000..e3b309fe15
--- /dev/null
+++ b/appengine/flexible/logging/composer.json
@@ -0,0 +1,9 @@
+{
+ "require": {
+ "google/cloud-logging": "^1.21.0",
+ "google/cloud-error-reporting": "^0.18.0",
+ "slim/slim": "^4.0",
+ "slim/psr7": "^1.3",
+ "slim/twig-view": "^3.2"
+ }
+}
diff --git a/appengine/flexible/logging/index.html.twig b/appengine/flexible/logging/index.html.twig
new file mode 100644
index 0000000000..9ee879ecb0
--- /dev/null
+++ b/appengine/flexible/logging/index.html.twig
@@ -0,0 +1,17 @@
+
+
+Logs:
+
+
+{% for log in logs %}
+ -
+ {{ log.info.timestamp|split('.')[0]|date('M jS, H:i')}}:
+ {{ log.info.jsonPayload.message }}
+
+{% else %}
+ - No Logs!
+{% endfor %}
+
diff --git a/appengine/flexible/logging/index.php b/appengine/flexible/logging/index.php
new file mode 100644
index 0000000000..d8dfc5ea3e
--- /dev/null
+++ b/appengine/flexible/logging/index.php
@@ -0,0 +1,22 @@
+run();
diff --git a/appengine/flexible/logging/phpunit.xml.dist b/appengine/flexible/logging/phpunit.xml.dist
new file mode 100644
index 0000000000..6c24c63aee
--- /dev/null
+++ b/appengine/flexible/logging/phpunit.xml.dist
@@ -0,0 +1,35 @@
+
+
+
+
+
+ test
+ test/DeployTest.php
+
+
+
+
+
+
+
+ app.php
+
+ ./vendor
+
+
+
+
diff --git a/appengine/flexible/logging/test/DeployTest.php b/appengine/flexible/logging/test/DeployTest.php
new file mode 100644
index 0000000000..27493c9712
--- /dev/null
+++ b/appengine/flexible/logging/test/DeployTest.php
@@ -0,0 +1,74 @@
+markTestSkipped('No secret available');
+ // TODO: Make the test runnable without secret
+ }
+ }
+ public function testIndex()
+ {
+ // Access the modules app top page.
+ $resp = $this->client->get('/');
+ $this->assertEquals('200', $resp->getStatusCode(),
+ 'top page status code');
+
+ $this->assertStringContainsString('Logs:', (string) $resp->getBody());
+ }
+ public function testAsyncLog()
+ {
+ $token = uniqid();
+ $resp = $this->client->get("/async_log?token=$token");
+ $this->assertEquals('200', $resp->getStatusCode(),
+ 'async_log status code');
+ $logging = new LoggingClient(
+ ['projectId' => getenv('GOOGLE_PROJECT_ID')]
+ );
+ $logger = $logging->logger('app');
+
+ $this->runEventuallyConsistentTest(
+ function () use ($logger, $token) {
+ $logs = $logger->entries([
+ 'pageSize' => 100,
+ 'orderBy' => 'timestamp desc',
+ 'resultLimit' => 100
+ ]);
+ $found = false;
+ foreach ($logs as $log) {
+ $info = $log->info();
+ if (strpos($token, $info['jsonPayload']['message']) !== 0) {
+ $found = true;
+ }
+ }
+ $this->assertTrue($found, 'The log entry was not found');
+ });
+ }
+}
diff --git a/appengine/flexible/logging/test/LocalTest.php b/appengine/flexible/logging/test/LocalTest.php
new file mode 100644
index 0000000000..ff1ceffe90
--- /dev/null
+++ b/appengine/flexible/logging/test/LocalTest.php
@@ -0,0 +1,48 @@
+createRequest('GET', '/');
+ $response = $app->handle($request);
+
+ $this->assertEquals(200, $response->getStatusCode());
+ $text = (string) $response->getBody();
+ $this->assertStringContainsString('Logs:', $text);
+ }
+
+ public function testAsyncLog()
+ {
+ $app = require __DIR__ . '/../app.php';
+
+ $request = (new RequestFactory)->createRequest('GET', '/async_log');
+ $response = $app->handle($request);
+
+ $this->assertEquals(200, $response->getStatusCode());
+ }
+}
diff --git a/appengine/flexible/mailgun/README.md b/appengine/flexible/mailgun/README.md
deleted file mode 100644
index 9c48cbe47b..0000000000
--- a/appengine/flexible/mailgun/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Mailgun PHP Sample Application for App Engine Flexible Environment.
-
-## Description
-
-The sample code lives in [the standard directory](../../standard/mailgun).
-Only two configuration files differ: `app.yaml` and `nginx-app.conf`.
-
-Copy `app.yaml` and `nginx-app.conf` into [that directory](../../standard/mailgun),
-then follow the instructions in the [README](../../standard/mailgun/README.md).
-
-## Contributing changes
-
-* See [CONTRIBUTING.md](../../../CONTRIBUTING.md)
-
-## Licensing
-
-* See [LICENSE](../../../LICENSE)
-
-
diff --git a/appengine/flexible/mailgun/app.yaml b/appengine/flexible/mailgun/app.yaml
deleted file mode 100644
index 891d65a13a..0000000000
--- a/appengine/flexible/mailgun/app.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-runtime: php
-vm: true
-
-runtime_config:
- document_root: .
diff --git a/appengine/flexible/mailgun/nginx-app.conf b/appengine/flexible/mailgun/nginx-app.conf
deleted file mode 100644
index c13edbfb3d..0000000000
--- a/appengine/flexible/mailgun/nginx-app.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-location / {
- # try to serve file directly, fallback to front controller
- try_files $uri /index.php$is_args$args;
-}
diff --git a/appengine/flexible/mailjet/README.md b/appengine/flexible/mailjet/README.md
deleted file mode 100644
index 9bab026f7b..0000000000
--- a/appengine/flexible/mailjet/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Mailjet PHP Sample Application for App Engine Flexible Environment.
-
-## Description
-
-The sample code lives in [the standard directory](../../standard/mailjet).
-Only two configuration files differ: `app.yaml` and `nginx-app.conf`.
-
-Copy `app.yaml` and `nginx-app.conf` into [that directory](../../standard/mailjet),
-then follow the instructions in the [README](../../standard/mailjet/README.md).
-
-## Contributing changes
-
-* See [CONTRIBUTING.md](../../../CONTRIBUTING.md)
-
-## Licensing
-
-* See [LICENSE](../../../LICENSE)
-
-
diff --git a/appengine/flexible/mailjet/app.yaml b/appengine/flexible/mailjet/app.yaml
deleted file mode 100644
index 891d65a13a..0000000000
--- a/appengine/flexible/mailjet/app.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-runtime: php
-vm: true
-
-runtime_config:
- document_root: .
diff --git a/appengine/flexible/mailjet/nginx-app.conf b/appengine/flexible/mailjet/nginx-app.conf
deleted file mode 100644
index c13edbfb3d..0000000000
--- a/appengine/flexible/mailjet/nginx-app.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-location / {
- # try to serve file directly, fallback to front controller
- try_files $uri /index.php$is_args$args;
-}
diff --git a/appengine/flexible/memcache/README.md b/appengine/flexible/memcache/README.md
index ff712545dc..13de93d349 100644
--- a/appengine/flexible/memcache/README.md
+++ b/appengine/flexible/memcache/README.md
@@ -16,6 +16,9 @@ $ composer install
**Prerequisites**
- Install the [Google Cloud SDK](https://developers.google.com/cloud/sdk/).
+- Set up memcache using [Redis Labs Memcache Cloud][redis labs memcache].
+- edit `app.yaml` and update the environment variables for your Memcache
+ instance.
**Deploy with gcloud**
@@ -33,4 +36,6 @@ $ curl http://{YOUR_PROJECT_ID}.appspot.com/memcached/a
$ curl http://{YOUR_PROJECT_ID}.appspot.com/memcached/a -T hello.txt
$ curl http://{YOUR_PROJECT_ID}.appspot.com/memcached/a
hello
-```
\ No newline at end of file
+```
+
+[redis labs memcache]: https://cloud.google.com/appengine/docs/flexible/python/using-redislabs-memcache
diff --git a/appengine/flexible/memcache/app.php b/appengine/flexible/memcache/app.php
index ebb765735e..37d37b2300 100644
--- a/appengine/flexible/memcache/app.php
+++ b/appengine/flexible/memcache/app.php
@@ -1,6 +1,6 @@
register(new TwigServiceProvider());
-$app['twig.path'] = [ __DIR__ ];
-$app['memcached'] = function () {
- $addr = getenv('MEMCACHE_PORT_11211_TCP_ADDR');
- $port = (int) getenv('MEMCACHE_PORT_11211_TCP_PORT');
+// Create the container
+AppFactory::setContainer($container = new Container());
+$container->set('view', function () {
+ return Twig::create(__DIR__);
+});
+
+// Create App
+$app = AppFactory::create();
+
+// Display errors
+$app->addErrorMiddleware(true, true, true);
+
+$container->set('memcached', function () {
+ # [START gae_flex_redislabs_memcache]
+ $endpoint = getenv('MEMCACHE_ENDPOINT');
+ $username = getenv('MEMCACHE_USERNAME');
+ $password = getenv('MEMCACHE_PASSWORD');
$memcached = new Memcached;
- if (!$memcached->addServer($addr, $port)) {
- throw new Exception("Failed to add server $addr:$port");
+ if ($username && $password) {
+ $memcached->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
+ $memcached->setSaslAuthData($username, $password);
+ }
+ list($host, $port) = explode(':', $endpoint);
+ if (!$memcached->addServer($host, $port)) {
+ throw new Exception("Failed to add server $host:$port");
}
+ # [END gae_flex_redislabs_memcache]
return $memcached;
-};
-# [END memcached]
+});
-$app->get('/vars', function () {
- $vars = array('MEMCACHE_PORT_11211_TCP_ADDR',
- 'MEMCACHE_PORT_11211_TCP_PORT');
+$app->get('/vars', function (Request $request, Response $response) {
+ $vars = [
+ 'MEMCACHE_PORT_11211_TCP_ADDR',
+ 'MEMCACHE_PORT_11211_TCP_PORT'
+ ];
$lines = array();
foreach ($vars as $var) {
$val = getenv($var);
array_push($lines, "$var = $val");
}
- return new Response(
- implode("\n", $lines),
- 200,
- ['Content-Type' => 'text/plain']);
+ $response->getBody()->write(implode("\n", $lines));
+ return $response->withHeader('Content-Type', 'text/plain');
});
-$app->get('/', function (Application $app, Request $request) {
- /** @var Twig_Environment $twig */
- $twig = $app['twig'];
- /** @var Memcached $memcached */
- $memcached = $app['memcached'];
- return $twig->render('memcache.html.twig', [
+$app->get('/', function (Request $request, Response $response) use ($container) {
+ $memcached = $container->get('memcached');
+ return $container->get('view')->render($response, 'memcache.html.twig', [
'who' => $memcached->get('who'),
'count' => $memcached->get('count'),
- 'host' => $request->getHttpHost(),
+ 'host' => $request->getUri()->getHost(),
]);
});
-$app->post('/reset', function (Application $app, Request $request) {
- /** @var Twig_Environment $twig */
- $twig = $app['twig'];
- /** @var Memcached $memcached */
- $memcached = $app['memcached'];
+$app->post('/reset', function (Request $request, Response $response) use ($container) {
+ $memcached = $container->get('memcached');
$memcached->delete('who');
$memcached->set('count', 0);
- return $twig->render('memcache.html.twig', [
- 'host' => $request->getHttpHost(),
+ return $container->get('view')->render($response, 'memcache.html.twig', [
+ 'host' => $request->getUri()->getHost(),
'count' => 0,
'who' => '',
]);
});
-$app->post('/', function (Application $app, Request $request) {
- /** @var Twig_Environment $twig */
- $twig = $app['twig'];
- /** @var Memcached $memcached */
- $memcached = $app['memcached'];
- $memcached->set('who', $request->get('who'));
+$app->post('/', function (Request $request, Response $response) use ($container) {
+ parse_str((string) $request->getBody(), $postData);
+ $who = $postData['who'] ?? '';
+ $memcached = $container->get('memcached');
+ $memcached->set('who', $who);
$count = $memcached->increment('count');
if (false === $count) {
// Potential race condition. Use binary protocol to avoid.
$memcached->set('count', 0);
$count = 0;
}
- return $twig->render('memcache.html.twig', [
- 'who' => $request->get('who'),
+ return $container->get('view')->render($response, 'memcache.html.twig', [
+ 'who' => $who,
'count' => $count,
- 'host' => $request->getHttpHost(),
+ 'host' => $request->getUri()->getHost(),
]);
});
-# [START memcached]
-$app->get('/memcached/{key}', function (Application $app, $key) {
- /** @var Memcached $memcached */
- $memcached = $app['memcached'];
- return $memcached->get($key);
+$app->get('/memcached/{key}', function (Request $request, Response $response, $args) use ($container) {
+ $memcached = $container->get('memcached');
+ $value = $memcached->get($args['key']);
+ $response->getBody()->write((string) $value);
+ return $response;
});
-$app->put('/memcached/{key}', function (Application $app, $key, Request $request) {
- /** @var Memcached $memcached */
- $memcached = $app['memcached'];
- $value = $request->getContent();
- return $memcached->set($key, $value, time() + 600); // 10 minutes expiration
+$app->put('/memcached/{key}', function (Request $request, Response $response, $args) use ($container) {
+ $memcached = $container->get('memcached');
+ $value = (string) $request->getBody();
+ $success = $memcached->set($args['key'], $value, time() + 600); // 10 minutes expiration
+ $response->getBody()->write((string) $success);
+ return $response;
});
-# [END memcached]
return $app;
diff --git a/appengine/flexible/memcache/app.yaml b/appengine/flexible/memcache/app.yaml
index db289fcae2..f7466994a5 100644
--- a/appengine/flexible/memcache/app.yaml
+++ b/appengine/flexible/memcache/app.yaml
@@ -1,5 +1,15 @@
runtime: php
-vm: true
+env: flex
runtime_config:
- document_root: web
\ No newline at end of file
+ document_root: web
+
+# [START gae_flex_redislabs_memcache_yaml]
+env_variables:
+ # Set your memcache endpoint here. This should be in the format "host:port"
+ MEMCACHE_ENDPOINT: "YOUR_MEMCACHE_ENDPOINT"
+ # If you are using a Memcached server with SASL authentiation enabled,
+ # fill in these values with your username and password.
+ MEMCACHE_USERNAME: ""
+ MEMCACHE_PASSWORD: ""
+# [END gae_flex_redislabs_memcache_yaml]
diff --git a/appengine/flexible/memcache/composer.json b/appengine/flexible/memcache/composer.json
index 8a5af2751a..7fa5d51921 100644
--- a/appengine/flexible/memcache/composer.json
+++ b/appengine/flexible/memcache/composer.json
@@ -1,13 +1,8 @@
{
"require": {
- "silex/silex": "^1.3",
- "twig/twig": "^1.24"
- },
- "require-dev": {
- "gecko-packages/gecko-memcache-mock": "^2.0",
- "google/cloud-tools": "<=1.0",
- "guzzlehttp/guzzle": "^6.2",
- "monolog/monolog": "^1.19",
- "phpunit/phpunit": "~4"
+ "slim/slim": "^4.0",
+ "slim/psr7": "^1.3",
+ "slim/twig-view": "^3.2",
+ "php-di/slim-bridge": "^3.1"
}
}
diff --git a/appengine/flexible/memcache/composer.lock b/appengine/flexible/memcache/composer.lock
deleted file mode 100644
index 50f53a0a0c..0000000000
--- a/appengine/flexible/memcache/composer.lock
+++ /dev/null
@@ -1,2329 +0,0 @@
-{
- "_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": "9b1567013489a19b7714170078618078",
- "content-hash": "fc62693d643d27d46d7352ea66257358",
- "packages": [
- {
- "name": "gecko-packages/gecko-memcache-mock",
- "version": "v2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/GeckoPackages/GeckoMemcacheMock.git",
- "reference": "4332ce34d0b849bdf4351e6be2d439132d0d4a30"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/GeckoPackages/GeckoMemcacheMock/zipball/4332ce34d0b849bdf4351e6be2d439132d0d4a30",
- "reference": "4332ce34d0b849bdf4351e6be2d439132d0d4a30",
- "shasum": ""
- },
- "require": {
- "php": "^5.4 || ^7.0",
- "psr/log": "~1.0",
- "symfony/stopwatch": "~2.5|~3.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "GeckoPackages\\MemcacheMock\\": "src\\MemcacheMock"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Memcache mock.",
- "homepage": "https://github.com/GeckoPackages",
- "keywords": [
- "memcache",
- "memcached",
- "mock",
- "test"
- ],
- "time": "2016-05-13 14:19:01"
- },
- {
- "name": "pimple/pimple",
- "version": "v1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Pimple.git",
- "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d",
- "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Pimple": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Pimple is a simple Dependency Injection Container for PHP 5.3",
- "homepage": "http://pimple.sensiolabs.org/",
- "keywords": [
- "container",
- "dependency injection"
- ],
- "time": "2013-11-22 08:30:29"
- },
- {
- "name": "psr/log",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "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",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ],
- "time": "2012-12-21 11:40:51"
- },
- {
- "name": "silex/silex",
- "version": "v1.3.5",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Silex.git",
- "reference": "374c7e04040a6f781c90f7d746726a5daa78e783"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Silex/zipball/374c7e04040a6f781c90f7d746726a5daa78e783",
- "reference": "374c7e04040a6f781c90f7d746726a5daa78e783",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "pimple/pimple": "~1.0",
- "symfony/event-dispatcher": "~2.3|3.0.*",
- "symfony/http-foundation": "~2.3|3.0.*",
- "symfony/http-kernel": "~2.3|3.0.*",
- "symfony/routing": "~2.3|3.0.*"
- },
- "require-dev": {
- "doctrine/dbal": "~2.2",
- "monolog/monolog": "^1.4.1",
- "swiftmailer/swiftmailer": "~5",
- "symfony/browser-kit": "~2.3|3.0.*",
- "symfony/config": "~2.3|3.0.*",
- "symfony/css-selector": "~2.3|3.0.*",
- "symfony/debug": "~2.3|3.0.*",
- "symfony/dom-crawler": "~2.3|3.0.*",
- "symfony/finder": "~2.3|3.0.*",
- "symfony/form": "~2.3|3.0.*",
- "symfony/locale": "~2.3|3.0.*",
- "symfony/monolog-bridge": "~2.3|3.0.*",
- "symfony/options-resolver": "~2.3|3.0.*",
- "symfony/phpunit-bridge": "~2.7",
- "symfony/process": "~2.3|3.0.*",
- "symfony/security": "~2.3|3.0.*",
- "symfony/serializer": "~2.3|3.0.*",
- "symfony/translation": "~2.3|3.0.*",
- "symfony/twig-bridge": "~2.3|3.0.*",
- "symfony/validator": "~2.3|3.0.*",
- "twig/twig": "~1.8|~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Silex\\": "src/Silex"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Igor Wiedler",
- "email": "igor@wiedler.ch"
- }
- ],
- "description": "The PHP micro-framework based on the Symfony Components",
- "homepage": "http://silex.sensiolabs.org/",
- "keywords": [
- "microframework"
- ],
- "time": "2016-01-06 14:59:35"
- },
- {
- "name": "symfony/debug",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/debug.git",
- "reference": "06e2d52e307ef880ac739f44ee6c2418ca9e3283"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/06e2d52e307ef880ac739f44ee6c2418ca9e3283",
- "reference": "06e2d52e307ef880ac739f44ee6c2418ca9e3283",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "psr/log": "~1.0"
- },
- "conflict": {
- "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
- },
- "require-dev": {
- "symfony/class-loader": "~2.8|~3.0",
- "symfony/http-kernel": "~2.8|~3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Debug\\": ""
- },
- "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 Debug Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "43e9a14f71db135da5c75dd5d383ecff6ada920e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/43e9a14f71db135da5c75dd5d383ecff6ada920e",
- "reference": "43e9a14f71db135da5c75dd5d383ecff6ada920e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/dependency-injection": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
- },
- "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 EventDispatcher Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:40:00"
- },
- {
- "name": "symfony/http-foundation",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-foundation.git",
- "reference": "1341139f906d295baa4f4abd55293d07e25a065a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1341139f906d295baa4f4abd55293d07e25a065a",
- "reference": "1341139f906d295baa4f4abd55293d07e25a065a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/polyfill-mbstring": "~1.1"
- },
- "require-dev": {
- "symfony/expression-language": "~2.8|~3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpFoundation\\": ""
- },
- "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 HttpFoundation Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 07:02:21"
- },
- {
- "name": "symfony/http-kernel",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-kernel.git",
- "reference": "177b63b2d50b63fa6d82ea41359ed9928cc7a1fb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/177b63b2d50b63fa6d82ea41359ed9928cc7a1fb",
- "reference": "177b63b2d50b63fa6d82ea41359ed9928cc7a1fb",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "psr/log": "~1.0",
- "symfony/debug": "~2.8|~3.0",
- "symfony/event-dispatcher": "~2.8|~3.0",
- "symfony/http-foundation": "~2.8.8|~3.0.8|~3.1.2|~3.2"
- },
- "conflict": {
- "symfony/config": "<2.8"
- },
- "require-dev": {
- "symfony/browser-kit": "~2.8|~3.0",
- "symfony/class-loader": "~2.8|~3.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/console": "~2.8|~3.0",
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/dependency-injection": "~2.8|~3.0",
- "symfony/dom-crawler": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/finder": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0",
- "symfony/routing": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0",
- "symfony/templating": "~2.8|~3.0",
- "symfony/translation": "~2.8|~3.0",
- "symfony/var-dumper": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/browser-kit": "",
- "symfony/class-loader": "",
- "symfony/config": "",
- "symfony/console": "",
- "symfony/dependency-injection": "",
- "symfony/finder": "",
- "symfony/var-dumper": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpKernel\\": ""
- },
- "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 HttpKernel Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-30 16:30:17"
- },
- {
- "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/routing",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/routing.git",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/9038984bd9c05ab07280121e9e10f61a7231457b",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "conflict": {
- "symfony/config": "<2.8"
- },
- "require-dev": {
- "doctrine/annotations": "~1.0",
- "doctrine/common": "~2.2",
- "psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/http-foundation": "~2.8|~3.0",
- "symfony/yaml": "~2.8|~3.0"
- },
- "suggest": {
- "doctrine/annotations": "For using the annotation loader",
- "symfony/config": "For using the all-in-one router or any loader",
- "symfony/dependency-injection": "For loading routes from a service",
- "symfony/expression-language": "For using expression matching",
- "symfony/http-foundation": "For using a Symfony Request object",
- "symfony/yaml": "For using the YAML loader"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Routing\\": ""
- },
- "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 Routing Component",
- "homepage": "https://symfony.com/",
- "keywords": [
- "router",
- "routing",
- "uri",
- "url"
- ],
- "time": "2016-06-29 05:40:00"
- },
- {
- "name": "symfony/stopwatch",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/stopwatch.git",
- "reference": "bb42806b12c5f89db4ebf64af6741afe6d8457e1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/bb42806b12c5f89db4ebf64af6741afe6d8457e1",
- "reference": "bb42806b12c5f89db4ebf64af6741afe6d8457e1",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Stopwatch\\": ""
- },
- "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 Stopwatch Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "twig/twig",
- "version": "v1.24.1",
- "source": {
- "type": "git",
- "url": "https://github.com/twigphp/Twig.git",
- "reference": "3566d311a92aae4deec6e48682dc5a4528c4a512"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/3566d311a92aae4deec6e48682dc5a4528c4a512",
- "reference": "3566d311a92aae4deec6e48682dc5a4528c4a512",
- "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.24-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-05-30 09:11:59"
- }
- ],
- "packages-dev": [
- {
- "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": "google/cloud-tools",
- "version": "v0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/GoogleCloudPlatform/php-tools.git",
- "reference": "5bbdd075efcfc07d13e364b9d6b7697344c6914d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/GoogleCloudPlatform/php-tools/zipball/5bbdd075efcfc07d13e364b9d6b7697344c6914d",
- "reference": "5bbdd075efcfc07d13e364b9d6b7697344c6914d",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/guzzle": "~5.3|~6.0",
- "php": ">=5.5",
- "phpunit/phpunit": "~4|~5",
- "symfony/browser-kit": "~2|~3",
- "symfony/process": "~2|~3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Google\\Cloud\\TestUtils\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "Takashi Matsuo",
- "email": "tmatsuo@google.com",
- "homepage": "https://wp.gaeflex.ninja/"
- }
- ],
- "description": "PHP tools for Google Cloud Platform",
- "homepage": "https://github.com/GoogleCloudPlatform/php-tools",
- "keywords": [
- "appengine",
- "gcp",
- "test"
- ],
- "time": "2016-07-11 17:18:10"
- },
- {
- "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": "monolog/monolog",
- "version": "1.20.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Seldaek/monolog.git",
- "reference": "55841909e2bcde01b5318c35f2b74f8ecc86e037"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/55841909e2bcde01b5318c35f2b74f8ecc86e037",
- "reference": "55841909e2bcde01b5318c35f2b74f8ecc86e037",
- "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-02 14:02:10"
- },
- {
- "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": "2.2.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "phpunit/php-file-iterator": "~1.3",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-token-stream": "~1.3",
- "sebastian/environment": "^1.3.2",
- "sebastian/version": "~1.0"
- },
- "require-dev": {
- "ext-xdebug": ">=2.1.4",
- "phpunit/phpunit": "~4"
- },
- "suggest": {
- "ext-dom": "*",
- "ext-xdebug": ">=2.2.1",
- "ext-xmlwriter": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.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": "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": "2015-10-06 15:47:00"
- },
- {
- "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": "4.8.27",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c062dddcb68e44b563f66ee319ddae2b5a322a90",
- "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=5.3.3",
- "phpspec/prophecy": "^1.3.1",
- "phpunit/php-code-coverage": "~2.1",
- "phpunit/php-file-iterator": "~1.4",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-timer": "^1.0.6",
- "phpunit/phpunit-mock-objects": "~2.3",
- "sebastian/comparator": "~1.1",
- "sebastian/diff": "~1.2",
- "sebastian/environment": "~1.3",
- "sebastian/exporter": "~1.2",
- "sebastian/global-state": "~1.0",
- "sebastian/version": "~1.0",
- "symfony/yaml": "~2.1|~3.0"
- },
- "suggest": {
- "phpunit/php-invoker": "~1.1"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.8.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-07-21 06:48:14"
- },
- {
- "name": "phpunit/phpunit-mock-objects",
- "version": "2.3.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "php": ">=5.3.3",
- "phpunit/php-text-template": "~1.2",
- "sebastian/exporter": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "suggest": {
- "ext-soap": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3.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": "2015-10-02 06:51:40"
- },
- {
- "name": "psr/http-message",
- "version": "1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "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",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ],
- "time": "2015-05-04 20:22:00"
- },
- {
- "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.7",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716",
- "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "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": "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-05-17 03:18:57"
- },
- {
- "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/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/version",
- "version": "1.0.6",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "shasum": ""
- },
- "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": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2015-06-21 13:59:46"
- },
- {
- "name": "symfony/browser-kit",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/browser-kit.git",
- "reference": "dcf41ed026b0499254385b5c88f03247b2ba010b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/dcf41ed026b0499254385b5c88f03247b2ba010b",
- "reference": "dcf41ed026b0499254385b5c88f03247b2ba010b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/dom-crawler": "~2.8|~3.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\BrowserKit\\": ""
- },
- "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 BrowserKit Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/dom-crawler",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/dom-crawler.git",
- "reference": "99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0",
- "reference": "99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/css-selector": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\DomCrawler\\": ""
- },
- "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 DomCrawler Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/process",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "5c11a1a4d4016662eeaf0f8757958c7de069f9a0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/5c11a1a4d4016662eeaf0f8757958c7de069f9a0",
- "reference": "5c11a1a4d4016662eeaf0f8757958c7de069f9a0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Process\\": ""
- },
- "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 Process Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:42:25"
- },
- {
- "name": "symfony/yaml",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/2884c26ce4c1d61aebf423a8b912950fe7c764de",
- "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "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 Yaml Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "webmozart/assert",
- "version": "1.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozart/assert.git",
- "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
- "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.6"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-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": "2015-08-24 13:29:44"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": [],
- "platform-dev": []
-}
diff --git a/appengine/flexible/memcache/php.ini b/appengine/flexible/memcache/php.ini
new file mode 100644
index 0000000000..095f003cbf
--- /dev/null
+++ b/appengine/flexible/memcache/php.ini
@@ -0,0 +1,3 @@
+; Use SASL authentication for connections
+; Required for Memcache SASL Auth in the Google App Engine Flexible environemnt.
+memcached.use_sasl = On
diff --git a/appengine/flexible/memcache/phpunit.xml b/appengine/flexible/memcache/phpunit.xml
deleted file mode 100644
index 21e45651dd..0000000000
--- a/appengine/flexible/memcache/phpunit.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- tests
-
-
-
-
-
-
-
- app.php
-
-
-
diff --git a/appengine/flexible/memcache/phpunit.xml.dist b/appengine/flexible/memcache/phpunit.xml.dist
new file mode 100644
index 0000000000..705324faa2
--- /dev/null
+++ b/appengine/flexible/memcache/phpunit.xml.dist
@@ -0,0 +1,35 @@
+
+
+
+
+
+ test
+ test/DeployTest.php
+
+
+
+
+
+
+
+ app.php
+
+ ./vendor
+
+
+
+
diff --git a/appengine/flexible/memcache/test/DeployTest.php b/appengine/flexible/memcache/test/DeployTest.php
new file mode 100644
index 0000000000..a2b6ce2317
--- /dev/null
+++ b/appengine/flexible/memcache/test/DeployTest.php
@@ -0,0 +1,87 @@
+setDir($tmpDir);
+ chdir($tmpDir);
+
+ $appYaml = Yaml::parse(file_get_contents('app.yaml'));
+ $appYaml['env_variables']['MEMCACHE_ENDPOINT'] = self::requireEnv('MEMCACHE_ENDPOINT');
+ $appYaml['env_variables']['MEMCACHE_USERNAME'] = self::requireEnv('MEMCACHE_USERNAME');
+ $appYaml['env_variables']['MEMCACHE_PASSWORD'] = self::requireEnv('MEMCACHE_PASSWORD');
+
+ file_put_contents('app.yaml', Yaml::dump($appYaml));
+ }
+
+ public function testIndex()
+ {
+ // Access the modules app top page.
+ $resp = $this->client->get('');
+ $this->assertEquals('200', $resp->getStatusCode(),
+ 'top page status code');
+
+ // Use a random key to avoid colliding with simultaneous tests.
+ $key = rand(0, 1000);
+
+ // Test the /memcached REST API.
+ $this->put("/memcached/test$key", 'sour');
+ $this->assertEquals('sour', $this->get("/memcached/test$key"));
+ $this->put("/memcached/test$key", 'sweet');
+ $this->assertEquals('sweet', $this->get("/memcached/test$key"));
+
+ // Make sure it handles a POST request too, which will increment the
+ // counter.
+ $resp = $this->client->post('');
+ $this->assertEquals('200', $resp->getStatusCode(),
+ 'top page status code');
+ }
+
+ /**
+ * HTTP PUTs the body to the url path.
+ * @param $path string
+ * @param $body string
+ */
+ private function put($path, $body)
+ {
+ $url = join('/', [trim(self::$gcloudWrapper->getBaseUrl(), '/'),
+ trim($path, '/')]);
+ $request = new \GuzzleHttp\Psr7\Request('PUT', $url, array(), $body);
+ $this->client->send($request);
+ }
+
+ /**
+ * HTTP GETs the url path.
+ * @param $path string
+ * @return string The HTTP Response.
+ */
+ private function get($path)
+ {
+ return $this->client->get($path)->getBody()->getContents();
+ }
+}
diff --git a/appengine/flexible/memcache/test/LocalTest.php b/appengine/flexible/memcache/test/LocalTest.php
new file mode 100644
index 0000000000..5bc240cabd
--- /dev/null
+++ b/appengine/flexible/memcache/test/LocalTest.php
@@ -0,0 +1,95 @@
+prophesize(Memcached::class);
+ $container = $app->getContainer();
+ $container->set('memcached', $memcached->reveal());
+
+ // Access the modules app top page.
+ $request1 = (new RequestFactory)->createRequest('GET', '/');
+ $response = $app->handle($request1);
+ $this->assertEquals(200, $response->getStatusCode());
+
+ // Make sure it handles a POST request too, which will increment the
+ // counter.
+ $request2 = (new RequestFactory)->createRequest('POST', '/');
+ $response = $app->handle($request2);
+ $this->assertEquals(200, $response->getStatusCode());
+ }
+
+ public function testGetAndPut()
+ {
+ $app = require __DIR__ . '/../app.php';
+
+ $memcached = $this->prophesize(Memcached::class);
+ $memcached->set('testkey1', 'sour', Argument::type('int'))
+ ->willReturn(true);
+ $memcached->get('testkey1')
+ ->willReturn('sour');
+
+ $memcached->set('testkey2', 'sweet', Argument::type('int'))
+ ->willReturn(true);
+ $memcached->get('testkey2')
+ ->willReturn('sweet');
+
+ $container = $app->getContainer();
+ $container->set('memcached', $memcached->reveal());
+
+ // Use a random key to avoid colliding with simultaneous tests.
+
+ // Test the /memcached REST API.
+ $request1 = (new RequestFactory)->createRequest('PUT', '/memcached/testkey1');
+ $request1->getBody()->write('sour');
+ $response1 = $app->handle($request1);
+ $this->assertEquals(200, (string) $response1->getStatusCode());
+
+ // Check that the key was written as expected
+ $request2 = (new RequestFactory)->createRequest('GET', '/memcached/testkey1');
+ $response2 = $app->handle($request2);
+ $this->assertEquals('sour', (string) $response2->getBody());
+
+ // Test the /memcached REST API with a new value.
+ $request3 = (new RequestFactory)->createRequest('PUT', '/memcached/testkey2');
+ $request3->getBody()->write('sweet');
+ $response3 = $app->handle($request3);
+ $this->assertEquals(200, (string) $response3->getStatusCode());
+
+ // Check that the key was written as expected
+ $request4 = (new RequestFactory)->createRequest('GET', '/memcached/testkey2');
+ $response4 = $app->handle($request4);
+ $this->assertEquals('sweet', (string) $response4->getBody());
+ }
+}
+
+if (!class_exists('Memcached')) {
+ interface Memcached
+ {
+ public function get($key);
+ public function set($key, $value, $timestamp = 0);
+ public function increment();
+ }
+}
diff --git a/appengine/flexible/memcache/tests/DeployTest.php b/appengine/flexible/memcache/tests/DeployTest.php
deleted file mode 100644
index a13804cf7c..0000000000
--- a/appengine/flexible/memcache/tests/DeployTest.php
+++ /dev/null
@@ -1,70 +0,0 @@
-client->get('');
- $this->assertEquals('200', $resp->getStatusCode(),
- 'top page status code');
-
- // Use a random key to avoid colliding with simultaneous tests.
- $key = rand(0, 1000);
-
- // Test the /memcached REST API.
- $this->put("/memcached/test$key", "sour");
- $this->assertEquals("sour", $this->get("/memcached/test$key"));
- $this->put("/memcached/test$key", "sweet");
- $this->assertEquals("sweet", $this->get("/memcached/test$key"));
-
- // Make sure it handles a POST request too, which will increment the
- // counter.
- $resp = $this->client->post('');
- $this->assertEquals('200', $resp->getStatusCode(),
- 'top page status code');
- }
-
- /**
- * HTTP PUTs the body to the url path.
- * @param $path string
- * @param $body string
- */
- private function put($path, $body)
- {
- $url = join('/', [trim(self::$gcloudWrapper->getBaseUrl(), '/'),
- trim($path, '/')]);
- $request = new \GuzzleHttp\Psr7\Request('PUT', $url, array(), $body);
- $this->client->send($request);
- }
-
- /**
- * HTTP GETs the url path.
- * @param $path string
- * @return string The HTTP Response.
- */
- private function get($path)
- {
- return $this->client->get($path)->getBody()->getContents();
- }
-}
diff --git a/appengine/flexible/memcache/tests/LocalTest.php b/appengine/flexible/memcache/tests/LocalTest.php
deleted file mode 100644
index 50ca4595f3..0000000000
--- a/appengine/flexible/memcache/tests/LocalTest.php
+++ /dev/null
@@ -1,84 +0,0 @@
-client = $this->createClient();
- }
-
- public function createApplication()
- {
- $app = require __DIR__ . '/../app.php';
- $app['memcached'] = new MemcachedMock;
- $app['memcached']->addServer("localhost", 11211);
- return $app;
- }
-
- public function testIndex()
- {
- // Access the modules app top page.
- $client = $this->client;
- $client->request('GET', '/');
- $this->assertTrue($client->getResponse()->isOk());
-
- // Make sure it handles a POST request too, which will increment the
- // counter.
- $this->client->request('POST', '/');
- $this->assertTrue($this->client->getResponse()->isOk());
- }
-
- public function testGetAndPut()
- {
- // Use a random key to avoid colliding with simultaneous tests.
- $key = rand(0, 1000);
-
- // Test the /memcached REST API.
- $this->put("/memcached/test$key", "sour");
- $this->assertEquals("sour", $this->get("/memcached/test$key"));
- $this->put("/memcached/test$key", "sweet");
- $this->assertEquals("sweet", $this->get("/memcached/test$key"));
- }
-
- /**
- * HTTP PUTs the body to the url path.
- * @param $path string
- * @param $body string
- */
- private function put($path, $body)
- {
- $this->client->request('PUT', $path, array(), array(), array(), $body);
- return $this->client->getResponse()->getContent();
- }
-
- /**
- * HTTP GETs the url path.
- * @param $path string
- * @return string The HTTP Response.
- */
- private function get($path)
- {
- $this->client->request('GET', $path);
- return $this->client->getResponse()->getContent();
- }
-}
diff --git a/appengine/flexible/memcache/tests/bootstrap.php b/appengine/flexible/memcache/tests/bootstrap.php
deleted file mode 100644
index 855a955f73..0000000000
--- a/appengine/flexible/memcache/tests/bootstrap.php
+++ /dev/null
@@ -1,17 +0,0 @@
-run();
diff --git a/appengine/flexible/metadata/README.md b/appengine/flexible/metadata/README.md
new file mode 100644
index 0000000000..c2c0eb95d8
--- /dev/null
+++ b/appengine/flexible/metadata/README.md
@@ -0,0 +1,45 @@
+# Compute Metadata on App Engine Flexible Environment
+
+This sample application demonstrates how to access
+[Compute Metadata](https://cloud.google.com/compute/docs/storing-retrieving-metadata)
+from App Engine flexible environment.
+
+## Setup
+
+Before running this sample:
+
+### Register your application
+
+- Go to
+ [Google Developers Console](https://console.developers.google.com/project)
+ and create a new project.
+
+### Prerequisites
+
+- Install [`composer`](https://getcomposer.org)
+- Install dependencies by running:
+
+ ```sh
+ composer install
+ ```
+
+- Install the [Google Cloud SDK](https://developers.google.com/cloud/sdk/).
+- Initialize the SDK by running `gcloud init`
+
+## Run Locally
+
+This sample is designed to run in App Engine flexible environment.
+This application will fail to reach the Metadata server if run locally.
+
+## Deploy to App Engine
+
+**Deploy with gcloud**
+
+```
+gcloud config set project YOUR_PROJECT_ID
+gcloud app deploy
+gcloud app browse
+```
+
+The last command will open `https://{YOUR_PROJECT_ID}.appspot.com/`
+in your browser.
diff --git a/appengine/flexible/metadata/app.php b/appengine/flexible/metadata/app.php
new file mode 100644
index 0000000000..bc355f73c1
--- /dev/null
+++ b/appengine/flexible/metadata/app.php
@@ -0,0 +1,66 @@
+get(
+ 'instance/network-interfaces/0/access-configs/0/external-ip');
+
+ return $externalIp;
+}
+
+function get_external_ip_using_curl()
+{
+ $url = 'http://metadata.google.internal/computeMetadata/v1/' .
+ 'instance/network-interfaces/0/access-configs/0/external-ip';
+
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_URL, $url);
+ curl_setopt($ch, CURLOPT_HTTPHEADER, array('Metadata-Flavor: Google'));
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ return curl_exec($ch);
+}
+# [END gae_flex_metadata]
+
+// Create App
+$app = AppFactory::create();
+
+// Display errors
+$app->addErrorMiddleware(true, true, true);
+
+$app->get('/', function (Request $request, Response $response) {
+ if (!$externalIp = get_external_ip_using_google_cloud()) {
+ return 'Unable to reach Metadata server - are you running locally?';
+ }
+ $response->getBody()->write(sprintf('External IP: %s', $externalIp));
+ return $response;
+});
+
+$app->get('/curl', function (Request $request, Response $response) {
+ if (!$externalIp = get_external_ip_using_curl()) {
+ return 'Unable to reach Metadata server - are you running locally?';
+ }
+ $response->getBody()->write(sprintf('External IP: %s', $externalIp));
+ return $response;
+});
+
+return $app;
diff --git a/appengine/flexible/metadata/app.yaml b/appengine/flexible/metadata/app.yaml
new file mode 100644
index 0000000000..7ae9a2661c
--- /dev/null
+++ b/appengine/flexible/metadata/app.yaml
@@ -0,0 +1,5 @@
+runtime: php
+env: flex
+
+runtime_config:
+ document_root: .
diff --git a/appengine/flexible/metadata/composer.json b/appengine/flexible/metadata/composer.json
new file mode 100644
index 0000000000..e5c6a01272
--- /dev/null
+++ b/appengine/flexible/metadata/composer.json
@@ -0,0 +1,7 @@
+{
+ "require": {
+ "slim/slim": "^4.0",
+ "slim/psr7": "^1.3",
+ "google/cloud-core": "^1.5"
+ }
+}
diff --git a/appengine/flexible/metadata/index.php b/appengine/flexible/metadata/index.php
new file mode 100644
index 0000000000..726d166977
--- /dev/null
+++ b/appengine/flexible/metadata/index.php
@@ -0,0 +1,26 @@
+run();
diff --git a/appengine/flexible/metadata/phpunit.xml.dist b/appengine/flexible/metadata/phpunit.xml.dist
new file mode 100644
index 0000000000..4c501f6f06
--- /dev/null
+++ b/appengine/flexible/metadata/phpunit.xml.dist
@@ -0,0 +1,35 @@
+
+
+
+
+
+ test
+ test/DeployTest.php
+
+
+
+
+
+
+
+ app.php
+
+ ./vendor
+
+
+
+
diff --git a/appengine/flexible/metadata/test/DeployTest.php b/appengine/flexible/metadata/test/DeployTest.php
new file mode 100644
index 0000000000..dae5409df9
--- /dev/null
+++ b/appengine/flexible/metadata/test/DeployTest.php
@@ -0,0 +1,47 @@
+client->get('/');
+
+ $this->assertEquals(
+ '200',
+ $resp->getStatusCode(),
+ 'Top page status code should be 200');
+ $this->assertMatchesRegularExpression('/External IP: .*/', (string) $resp->getBody());
+ }
+
+ public function testCurl()
+ {
+ $resp = $this->client->get('/curl');
+
+ $this->assertEquals(
+ '200',
+ $resp->getStatusCode(),
+ '/curl status code should be 200');
+ $this->assertMatchesRegularExpression('/External IP: .*/', (string) $resp->getBody());
+ }
+}
diff --git a/appengine/flexible/pubsub/README.md b/appengine/flexible/pubsub/README.md
index a9e5ada98e..a2444255f2 100644
--- a/appengine/flexible/pubsub/README.md
+++ b/appengine/flexible/pubsub/README.md
@@ -3,47 +3,5 @@
## Description
This sample demonstrates how to invoke PubSub from Google App Engine Flexible
-Environment.
-
-The sample code lives in [a parent pubsub directory](../../../pubsub/app).
-Only two configuration files differ: `app.yaml` and `nginx-app.conf`.
-
-## Register your application
-
-## Configuration
-
-- Edit `app.yaml`. Replace `YOUR_PROJECT_ID` with your google project id.
-
-- Copy `app.yaml` and `nginx-app.conf` into [../../../pubsub/app](../../../pubsub/app). Ex:
-```sh
-~/gitrepos/php-docs-samples/appengine/flexible/pubsub$ cp -f app.yaml nginx-app.conf ../../../pubsub/app
-~/gitrepos/php-docs-samples/appengine/flexible/pubsub$ cd ../../../pubsub/app
-~/gitrepos/php-docs-samples/pubsub$
-```
-
-- Follow the [Prerequisite Instructions](../../../pubsub/app/README.md#prerequisites)
-
-## Deploy the application to App Engine
-
-```
-$ gcloud app deploy --set-default --project YOUR_PROJECT_ID
-```
-
-Then access the following URL:
- https://{YOUR_PROJECT_NAME}.appspot.com/
-
-## Run the application locally
-
-```
-/usr/bin/php -S localhost:8910 -t web
-```
-
-## Contributing changes
-
-* See [CONTRIBUTING.md](../../../CONTRIBUTING.md)
-
-## Licensing
-
-* See [LICENSE](../../../LICENSE)
-
+Environment. See the section **Deploy to App Engine Flexible** in [Google PubSub PHP Sample Application](../../../pubsub/app).
diff --git a/appengine/flexible/pubsub/app.yaml b/appengine/flexible/pubsub/app.yaml
deleted file mode 100644
index ac5a8420f7..0000000000
--- a/appengine/flexible/pubsub/app.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-runtime: php
-vm: true
-
-env_variables:
- GOOGLE_PROJECT_NAME: YOUR_PROJECT_ID
diff --git a/appengine/flexible/pubsub/nginx-app.conf b/appengine/flexible/pubsub/nginx-app.conf
deleted file mode 100644
index c13edbfb3d..0000000000
--- a/appengine/flexible/pubsub/nginx-app.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-location / {
- # try to serve file directly, fallback to front controller
- try_files $uri /index.php$is_args$args;
-}
diff --git a/appengine/flexible/sendgrid/README.md b/appengine/flexible/sendgrid/README.md
deleted file mode 100644
index a53da51cb4..0000000000
--- a/appengine/flexible/sendgrid/README.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# Sendgrid and Google App Engine Flexible Environment
-
-This sample application demonstrates how to use [Sendgrid with Google App Engine Flexible Environment](https://cloud.google.com/appengine/docs/flexible/php/sending-emails-with-sendgrid).
-
-## Setup
-
-Before running this sample:
-
-1. You will need a [SendGrid account](http://sendgrid.com/partner/google).
-2. Update `SENDGRID_SENDER` and `SENDGRID_API_KEY` in `app.yaml` to match your
- SendGrid credentials. You can use your account's sandbox domain.
-
-## Prerequisites
-
-- Install [`composer`](https://getcomposer.org)
-- Install dependencies by running:
-
-```sh
-composer install
-```
-
-## Deploy to App Engine
-
-**Prerequisites**
-
-- Install the [Google Cloud SDK](https://developers.google.com/cloud/sdk/).
-
-**Run Locally**
-```sh
-export SENDGRID_API_KEY=your-sendgrid-api-key
-export SENDGRID_SENDER=somebody@yourdomain.com
-php -S localhost:8000 -t .
-```
-
-**Deploy with gcloud**
-```
-gcloud config set project YOUR_PROJECT_ID
-gcloud app deploy
-gcloud app browse
-```
-
-The last command will open `https://{YOUR_PROJECT_ID}.appspot.com/`
-in your browser.
diff --git a/appengine/flexible/sendgrid/app.php b/appengine/flexible/sendgrid/app.php
deleted file mode 100644
index a03f412da1..0000000000
--- a/appengine/flexible/sendgrid/app.php
+++ /dev/null
@@ -1,56 +0,0 @@
-get('/', function () use ($app) {
- return <<
-
-
-
-EOF;
-});
-
-$app->post('/', function (Request $request) use ($app) {
- $mail = new SendGrid\Mail(
- new SendGrid\Email(null, $app['sendgrid.sender']),
- 'This is a test email',
- new SendGrid\Email(null, $request->get('recipient')),
- new SendGrid\Content('text/plain', 'Example text body.')
- );
- /** @var SendGrid $sendgrid */
- $sendgrid = $app['sendgrid'];
- $response = $sendgrid->client->mail()->send()->post($mail);
- if ($response->statusCode() < 200 || $response->statusCode() >= 300) {
- return new Response($response->body(), $response->statusCode());
- }
- return 'Email sent.';
-});
-
-return $app;
diff --git a/appengine/flexible/sendgrid/app.yaml b/appengine/flexible/sendgrid/app.yaml
deleted file mode 100644
index fd3a0ff894..0000000000
--- a/appengine/flexible/sendgrid/app.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-runtime: php
-vm: true
-
-runtime_config:
- document_root: .
-
-env_variables:
- SENDGRID_API_KEY: your-sendgrid-api-key
- SENDGRID_SENDER: your-sendgrid-sender
\ No newline at end of file
diff --git a/appengine/flexible/sendgrid/composer.json b/appengine/flexible/sendgrid/composer.json
deleted file mode 100644
index f85082596d..0000000000
--- a/appengine/flexible/sendgrid/composer.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "require": {
- "silex/silex": "^1.3",
- "sendgrid/sendgrid": "^5.0"
- },
- "require-dev": {
- "google/cloud-tools": "<=1.0",
- "paragonie/random_compat": "^2.0",
- "symfony/browser-kit": "^3.0",
- "symfony/yaml": "^3.1"
- }
-}
diff --git a/appengine/flexible/sendgrid/composer.lock b/appengine/flexible/sendgrid/composer.lock
deleted file mode 100644
index 255125be8c..0000000000
--- a/appengine/flexible/sendgrid/composer.lock
+++ /dev/null
@@ -1,2248 +0,0 @@
-{
- "_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": "46d4a2b47f1511b8262f37a3f8688739",
- "content-hash": "bd8a5e23790701a05e443870bd4b3637",
- "packages": [
- {
- "name": "pimple/pimple",
- "version": "v1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Pimple.git",
- "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d",
- "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Pimple": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Pimple is a simple Dependency Injection Container for PHP 5.3",
- "homepage": "http://pimple.sensiolabs.org/",
- "keywords": [
- "container",
- "dependency injection"
- ],
- "time": "2013-11-22 08:30:29"
- },
- {
- "name": "psr/log",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "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",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ],
- "time": "2012-12-21 11:40:51"
- },
- {
- "name": "sendgrid/php-http-client",
- "version": "3.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sendgrid/php-http-client.git",
- "reference": "01c3fc4b94df008cfe03ffb467d4c6dbe6dcfb2c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sendgrid/php-http-client/zipball/01c3fc4b94df008cfe03ffb467d4c6dbe6dcfb2c",
- "reference": "01c3fc4b94df008cfe03ffb467d4c6dbe6dcfb2c",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4",
- "squizlabs/php_codesniffer": "2.*"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "SendGrid": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Matt Bernier",
- "email": "dx@sendgrid.com"
- },
- {
- "name": "Elmer Thomas",
- "email": "elmer@thinkingserious.com"
- }
- ],
- "description": "HTTP REST client, simplified for PHP",
- "homepage": "http://github.com/sendgrid/php-http-client",
- "keywords": [
- "api",
- "fluent",
- "http",
- "rest",
- "sendgrid"
- ],
- "time": "2016-06-11 00:47:24"
- },
- {
- "name": "sendgrid/sendgrid",
- "version": "5.0.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sendgrid/sendgrid-php.git",
- "reference": "1050d195525ff529036e7804f2c303261d65dca3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sendgrid/sendgrid-php/zipball/1050d195525ff529036e7804f2c303261d65dca3",
- "reference": "1050d195525ff529036e7804f2c303261d65dca3",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3",
- "sendgrid/php-http-client": "3.1.0"
- },
- "replace": {
- "sendgrid/sendgrid-php": "*"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*",
- "squizlabs/php_codesniffer": "2.*"
- },
- "type": "library",
- "autoload": {
- "files": [
- "lib/SendGrid.php",
- "lib/helpers/mail/Mail.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "This library allows you to quickly and easily send emails through SendGrid using PHP.",
- "homepage": "http://github.com/sendgrid/sendgrid-php",
- "keywords": [
- "email",
- "grid",
- "send",
- "sendgrid"
- ],
- "time": "2016-07-08 02:55:23"
- },
- {
- "name": "silex/silex",
- "version": "v1.3.5",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Silex.git",
- "reference": "374c7e04040a6f781c90f7d746726a5daa78e783"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Silex/zipball/374c7e04040a6f781c90f7d746726a5daa78e783",
- "reference": "374c7e04040a6f781c90f7d746726a5daa78e783",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "pimple/pimple": "~1.0",
- "symfony/event-dispatcher": "~2.3|3.0.*",
- "symfony/http-foundation": "~2.3|3.0.*",
- "symfony/http-kernel": "~2.3|3.0.*",
- "symfony/routing": "~2.3|3.0.*"
- },
- "require-dev": {
- "doctrine/dbal": "~2.2",
- "monolog/monolog": "^1.4.1",
- "swiftmailer/swiftmailer": "~5",
- "symfony/browser-kit": "~2.3|3.0.*",
- "symfony/config": "~2.3|3.0.*",
- "symfony/css-selector": "~2.3|3.0.*",
- "symfony/debug": "~2.3|3.0.*",
- "symfony/dom-crawler": "~2.3|3.0.*",
- "symfony/finder": "~2.3|3.0.*",
- "symfony/form": "~2.3|3.0.*",
- "symfony/locale": "~2.3|3.0.*",
- "symfony/monolog-bridge": "~2.3|3.0.*",
- "symfony/options-resolver": "~2.3|3.0.*",
- "symfony/phpunit-bridge": "~2.7",
- "symfony/process": "~2.3|3.0.*",
- "symfony/security": "~2.3|3.0.*",
- "symfony/serializer": "~2.3|3.0.*",
- "symfony/translation": "~2.3|3.0.*",
- "symfony/twig-bridge": "~2.3|3.0.*",
- "symfony/validator": "~2.3|3.0.*",
- "twig/twig": "~1.8|~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Silex\\": "src/Silex"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Igor Wiedler",
- "email": "igor@wiedler.ch"
- }
- ],
- "description": "The PHP micro-framework based on the Symfony Components",
- "homepage": "http://silex.sensiolabs.org/",
- "keywords": [
- "microframework"
- ],
- "time": "2016-01-06 14:59:35"
- },
- {
- "name": "symfony/debug",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/debug.git",
- "reference": "06e2d52e307ef880ac739f44ee6c2418ca9e3283"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/06e2d52e307ef880ac739f44ee6c2418ca9e3283",
- "reference": "06e2d52e307ef880ac739f44ee6c2418ca9e3283",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "psr/log": "~1.0"
- },
- "conflict": {
- "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
- },
- "require-dev": {
- "symfony/class-loader": "~2.8|~3.0",
- "symfony/http-kernel": "~2.8|~3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Debug\\": ""
- },
- "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 Debug Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "43e9a14f71db135da5c75dd5d383ecff6ada920e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/43e9a14f71db135da5c75dd5d383ecff6ada920e",
- "reference": "43e9a14f71db135da5c75dd5d383ecff6ada920e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/dependency-injection": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
- },
- "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 EventDispatcher Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:40:00"
- },
- {
- "name": "symfony/http-foundation",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-foundation.git",
- "reference": "1341139f906d295baa4f4abd55293d07e25a065a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1341139f906d295baa4f4abd55293d07e25a065a",
- "reference": "1341139f906d295baa4f4abd55293d07e25a065a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/polyfill-mbstring": "~1.1"
- },
- "require-dev": {
- "symfony/expression-language": "~2.8|~3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpFoundation\\": ""
- },
- "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 HttpFoundation Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 07:02:21"
- },
- {
- "name": "symfony/http-kernel",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-kernel.git",
- "reference": "177b63b2d50b63fa6d82ea41359ed9928cc7a1fb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/177b63b2d50b63fa6d82ea41359ed9928cc7a1fb",
- "reference": "177b63b2d50b63fa6d82ea41359ed9928cc7a1fb",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "psr/log": "~1.0",
- "symfony/debug": "~2.8|~3.0",
- "symfony/event-dispatcher": "~2.8|~3.0",
- "symfony/http-foundation": "~2.8.8|~3.0.8|~3.1.2|~3.2"
- },
- "conflict": {
- "symfony/config": "<2.8"
- },
- "require-dev": {
- "symfony/browser-kit": "~2.8|~3.0",
- "symfony/class-loader": "~2.8|~3.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/console": "~2.8|~3.0",
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/dependency-injection": "~2.8|~3.0",
- "symfony/dom-crawler": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/finder": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0",
- "symfony/routing": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0",
- "symfony/templating": "~2.8|~3.0",
- "symfony/translation": "~2.8|~3.0",
- "symfony/var-dumper": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/browser-kit": "",
- "symfony/class-loader": "",
- "symfony/config": "",
- "symfony/console": "",
- "symfony/dependency-injection": "",
- "symfony/finder": "",
- "symfony/var-dumper": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpKernel\\": ""
- },
- "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 HttpKernel Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-30 16:30:17"
- },
- {
- "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/routing",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/routing.git",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/9038984bd9c05ab07280121e9e10f61a7231457b",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "conflict": {
- "symfony/config": "<2.8"
- },
- "require-dev": {
- "doctrine/annotations": "~1.0",
- "doctrine/common": "~2.2",
- "psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/http-foundation": "~2.8|~3.0",
- "symfony/yaml": "~2.8|~3.0"
- },
- "suggest": {
- "doctrine/annotations": "For using the annotation loader",
- "symfony/config": "For using the all-in-one router or any loader",
- "symfony/dependency-injection": "For loading routes from a service",
- "symfony/expression-language": "For using expression matching",
- "symfony/http-foundation": "For using a Symfony Request object",
- "symfony/yaml": "For using the YAML loader"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Routing\\": ""
- },
- "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 Routing Component",
- "homepage": "https://symfony.com/",
- "keywords": [
- "router",
- "routing",
- "uri",
- "url"
- ],
- "time": "2016-06-29 05:40:00"
- }
- ],
- "packages-dev": [
- {
- "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": "google/cloud-tools",
- "version": "v0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/GoogleCloudPlatform/php-tools.git",
- "reference": "5bbdd075efcfc07d13e364b9d6b7697344c6914d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/GoogleCloudPlatform/php-tools/zipball/5bbdd075efcfc07d13e364b9d6b7697344c6914d",
- "reference": "5bbdd075efcfc07d13e364b9d6b7697344c6914d",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/guzzle": "~5.3|~6.0",
- "php": ">=5.5",
- "phpunit/phpunit": "~4|~5",
- "symfony/browser-kit": "~2|~3",
- "symfony/process": "~2|~3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Google\\Cloud\\TestUtils\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "Takashi Matsuo",
- "email": "tmatsuo@google.com",
- "homepage": "https://wp.gaeflex.ninja/"
- }
- ],
- "description": "PHP tools for Google Cloud Platform",
- "homepage": "https://github.com/GoogleCloudPlatform/php-tools",
- "keywords": [
- "appengine",
- "gcp",
- "test"
- ],
- "time": "2016-07-11 17:18:10"
- },
- {
- "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": "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": "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": "2.2.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "phpunit/php-file-iterator": "~1.3",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-token-stream": "~1.3",
- "sebastian/environment": "^1.3.2",
- "sebastian/version": "~1.0"
- },
- "require-dev": {
- "ext-xdebug": ">=2.1.4",
- "phpunit/phpunit": "~4"
- },
- "suggest": {
- "ext-dom": "*",
- "ext-xdebug": ">=2.2.1",
- "ext-xmlwriter": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.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": "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": "2015-10-06 15:47:00"
- },
- {
- "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": "4.8.27",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c062dddcb68e44b563f66ee319ddae2b5a322a90",
- "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=5.3.3",
- "phpspec/prophecy": "^1.3.1",
- "phpunit/php-code-coverage": "~2.1",
- "phpunit/php-file-iterator": "~1.4",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-timer": "^1.0.6",
- "phpunit/phpunit-mock-objects": "~2.3",
- "sebastian/comparator": "~1.1",
- "sebastian/diff": "~1.2",
- "sebastian/environment": "~1.3",
- "sebastian/exporter": "~1.2",
- "sebastian/global-state": "~1.0",
- "sebastian/version": "~1.0",
- "symfony/yaml": "~2.1|~3.0"
- },
- "suggest": {
- "phpunit/php-invoker": "~1.1"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.8.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-07-21 06:48:14"
- },
- {
- "name": "phpunit/phpunit-mock-objects",
- "version": "2.3.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "php": ">=5.3.3",
- "phpunit/php-text-template": "~1.2",
- "sebastian/exporter": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "suggest": {
- "ext-soap": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3.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": "2015-10-02 06:51:40"
- },
- {
- "name": "psr/http-message",
- "version": "1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "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",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ],
- "time": "2015-05-04 20:22:00"
- },
- {
- "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.7",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716",
- "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "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": "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-05-17 03:18:57"
- },
- {
- "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/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/version",
- "version": "1.0.6",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "shasum": ""
- },
- "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": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2015-06-21 13:59:46"
- },
- {
- "name": "symfony/browser-kit",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/browser-kit.git",
- "reference": "dcf41ed026b0499254385b5c88f03247b2ba010b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/dcf41ed026b0499254385b5c88f03247b2ba010b",
- "reference": "dcf41ed026b0499254385b5c88f03247b2ba010b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/dom-crawler": "~2.8|~3.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\BrowserKit\\": ""
- },
- "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 BrowserKit Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/dom-crawler",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/dom-crawler.git",
- "reference": "99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0",
- "reference": "99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/css-selector": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\DomCrawler\\": ""
- },
- "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 DomCrawler Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/process",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "5c11a1a4d4016662eeaf0f8757958c7de069f9a0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/5c11a1a4d4016662eeaf0f8757958c7de069f9a0",
- "reference": "5c11a1a4d4016662eeaf0f8757958c7de069f9a0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Process\\": ""
- },
- "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 Process Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:42:25"
- },
- {
- "name": "symfony/yaml",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/2884c26ce4c1d61aebf423a8b912950fe7c764de",
- "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "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 Yaml Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "webmozart/assert",
- "version": "1.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozart/assert.git",
- "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
- "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.6"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-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": "2015-08-24 13:29:44"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": [],
- "platform-dev": []
-}
diff --git a/appengine/flexible/sendgrid/index.php b/appengine/flexible/sendgrid/index.php
deleted file mode 100644
index 1c87655f31..0000000000
--- a/appengine/flexible/sendgrid/index.php
+++ /dev/null
@@ -1,30 +0,0 @@
-run();
diff --git a/appengine/flexible/sendgrid/nginx-app.conf b/appengine/flexible/sendgrid/nginx-app.conf
deleted file mode 100644
index c13edbfb3d..0000000000
--- a/appengine/flexible/sendgrid/nginx-app.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-location / {
- # try to serve file directly, fallback to front controller
- try_files $uri /index.php$is_args$args;
-}
diff --git a/appengine/flexible/sendgrid/phpunit.xml b/appengine/flexible/sendgrid/phpunit.xml
deleted file mode 100644
index e1aed97978..0000000000
--- a/appengine/flexible/sendgrid/phpunit.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
- test
-
-
-
-
-
-
-
- app.php
-
-
-
diff --git a/appengine/flexible/sendgrid/test/DeployAppEngineFlexTest.php b/appengine/flexible/sendgrid/test/DeployAppEngineFlexTest.php
deleted file mode 100644
index df1f76011e..0000000000
--- a/appengine/flexible/sendgrid/test/DeployAppEngineFlexTest.php
+++ /dev/null
@@ -1,60 +0,0 @@
-setDir($tmpDir);
- chdir($tmpDir);
-
- $appYaml = Yaml::parse(file_get_contents('app.yaml'));
- $appYaml['env_variables']['SENDGRID_API_KEY'] =
- getenv('SENDGRID_API_KEY');
- $appYaml['env_variables']['SENDGRID_SENDER'] =
- getenv('SENDGRID_SENDER');
- file_put_contents('app.yaml', Yaml::dump($appYaml));
- }
-
- public function testIndex()
- {
- // Access the modules app top page.
- $resp = $this->client->get('/');
- $this->assertEquals('200', $resp->getStatusCode(),
- 'top page status code');
- }
-
- public function testSendMessage()
- {
- $resp = $this->client->request('POST', '/', [
- 'form_params' => [
- 'recipient' => 'fake@example.com',
- ]
- ]);
-
- $this->assertEquals('200', $resp->getStatusCode(),
- 'send message status code');
- }
-}
diff --git a/appengine/flexible/sendgrid/test/SendgridTest.php b/appengine/flexible/sendgrid/test/SendgridTest.php
deleted file mode 100644
index c1e015857c..0000000000
--- a/appengine/flexible/sendgrid/test/SendgridTest.php
+++ /dev/null
@@ -1,60 +0,0 @@
-markTestSkipped(
- 'set the SENDGRID_SENDER and SENDGRID_API_KEY' .
- 'environment variables'
- );
- }
-
- // prevent HTML error exceptions
- unset($app['exception_handler']);
-
- return $app;
- }
-
- public function testHome()
- {
- $client = $this->createClient();
- $client->request('GET', '/');
- $this->assertTrue($client->getResponse()->isOk());
- }
-
- public function testSimpleEmail()
- {
- $client = $this->createClient();
- $client->request('POST', '/', ['recipient' => 'fake@example.com']);
- $response = $client->getResponse();
- $this->assertEquals(200, $response->getStatusCode());
- $this->assertEquals('Email sent.', $response->getContent());
- }
-}
diff --git a/appengine/flexible/sendgrid/test/bootstrap.php b/appengine/flexible/sendgrid/test/bootstrap.php
deleted file mode 100644
index 294da6d79f..0000000000
--- a/appengine/flexible/sendgrid/test/bootstrap.php
+++ /dev/null
@@ -1,4 +0,0 @@
-register(new TwigServiceProvider());
-$app['twig.path'] = [ __DIR__ ];
+// Create App
+$app = AppFactory::create();
-$app->get('/', function (Application $app, Request $request) {
+// Display errors
+$app->addErrorMiddleware(true, true, true);
+
+// Create Twig
+$twig = Twig::create(__DIR__);
+$app->add(TwigMiddleware::create($app, $twig));
+
+// Add IP address middleware
+$checkProxyHeaders = true;
+$trustedProxies = ['10.0.0.1', '10.0.0.2'];
+$app->add(new IpAddress($checkProxyHeaders, $trustedProxies));
+
+$app->get('/', function (Request $request, Response $response) use ($twig) {
/** @var Twig_Environment $twig */
- $twig = $app['twig'];
- return $twig->render('index.html.twig',
- ['ip' => $request->getClientIps()[0]]);
+ return $twig->render($response, 'index.html.twig',
+ ['ip' => $request->getAttribute('ip_address')]);
});
return $app;
diff --git a/appengine/flexible/staticcontent/app.yaml b/appengine/flexible/staticcontent/app.yaml
index db289fcae2..8b5360cc02 100644
--- a/appengine/flexible/staticcontent/app.yaml
+++ b/appengine/flexible/staticcontent/app.yaml
@@ -1,5 +1,10 @@
runtime: php
-vm: true
+env: flex
runtime_config:
- document_root: web
\ No newline at end of file
+ document_root: web
+ operating_system: ubuntu22
+ runtime_version: 8.3
+
+build_env_variables:
+ NGINX_SERVES_STATIC_FILES: true
diff --git a/appengine/flexible/staticcontent/composer.json b/appengine/flexible/staticcontent/composer.json
index f18111f847..a55125062f 100644
--- a/appengine/flexible/staticcontent/composer.json
+++ b/appengine/flexible/staticcontent/composer.json
@@ -1,11 +1,8 @@
{
"require": {
- "silex/silex": "^1.3",
- "twig/twig": "^1.24"
- },
- "require-dev": {
- "google/cloud-tools": "<=1.0",
- "guzzlehttp/guzzle": "^6.2",
- "phpunit/phpunit": "~4"
+ "slim/slim": "^4.0",
+ "slim/psr7": "^1.3",
+ "slim/twig-view": "^3.2",
+ "akrabat/ip-address-middleware": "^2.0"
}
}
diff --git a/appengine/flexible/staticcontent/composer.lock b/appengine/flexible/staticcontent/composer.lock
deleted file mode 100644
index e44cc780d5..0000000000
--- a/appengine/flexible/staticcontent/composer.lock
+++ /dev/null
@@ -1,2163 +0,0 @@
-{
- "_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": "901a17f9e4ec4cacdca8f1fd2cbfea12",
- "content-hash": "85f9ebce94e27cce3548a2b7caab7671",
- "packages": [
- {
- "name": "pimple/pimple",
- "version": "v1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Pimple.git",
- "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d",
- "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Pimple": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Pimple is a simple Dependency Injection Container for PHP 5.3",
- "homepage": "http://pimple.sensiolabs.org/",
- "keywords": [
- "container",
- "dependency injection"
- ],
- "time": "2013-11-22 08:30:29"
- },
- {
- "name": "psr/log",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "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",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ],
- "time": "2012-12-21 11:40:51"
- },
- {
- "name": "silex/silex",
- "version": "v1.3.5",
- "source": {
- "type": "git",
- "url": "https://github.com/silexphp/Silex.git",
- "reference": "374c7e04040a6f781c90f7d746726a5daa78e783"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/silexphp/Silex/zipball/374c7e04040a6f781c90f7d746726a5daa78e783",
- "reference": "374c7e04040a6f781c90f7d746726a5daa78e783",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "pimple/pimple": "~1.0",
- "symfony/event-dispatcher": "~2.3|3.0.*",
- "symfony/http-foundation": "~2.3|3.0.*",
- "symfony/http-kernel": "~2.3|3.0.*",
- "symfony/routing": "~2.3|3.0.*"
- },
- "require-dev": {
- "doctrine/dbal": "~2.2",
- "monolog/monolog": "^1.4.1",
- "swiftmailer/swiftmailer": "~5",
- "symfony/browser-kit": "~2.3|3.0.*",
- "symfony/config": "~2.3|3.0.*",
- "symfony/css-selector": "~2.3|3.0.*",
- "symfony/debug": "~2.3|3.0.*",
- "symfony/dom-crawler": "~2.3|3.0.*",
- "symfony/finder": "~2.3|3.0.*",
- "symfony/form": "~2.3|3.0.*",
- "symfony/locale": "~2.3|3.0.*",
- "symfony/monolog-bridge": "~2.3|3.0.*",
- "symfony/options-resolver": "~2.3|3.0.*",
- "symfony/phpunit-bridge": "~2.7",
- "symfony/process": "~2.3|3.0.*",
- "symfony/security": "~2.3|3.0.*",
- "symfony/serializer": "~2.3|3.0.*",
- "symfony/translation": "~2.3|3.0.*",
- "symfony/twig-bridge": "~2.3|3.0.*",
- "symfony/validator": "~2.3|3.0.*",
- "twig/twig": "~1.8|~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Silex\\": "src/Silex"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Igor Wiedler",
- "email": "igor@wiedler.ch"
- }
- ],
- "description": "The PHP micro-framework based on the Symfony Components",
- "homepage": "http://silex.sensiolabs.org/",
- "keywords": [
- "microframework"
- ],
- "time": "2016-01-06 14:59:35"
- },
- {
- "name": "symfony/debug",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/debug.git",
- "reference": "06e2d52e307ef880ac739f44ee6c2418ca9e3283"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/06e2d52e307ef880ac739f44ee6c2418ca9e3283",
- "reference": "06e2d52e307ef880ac739f44ee6c2418ca9e3283",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "psr/log": "~1.0"
- },
- "conflict": {
- "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
- },
- "require-dev": {
- "symfony/class-loader": "~2.8|~3.0",
- "symfony/http-kernel": "~2.8|~3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Debug\\": ""
- },
- "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 Debug Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "43e9a14f71db135da5c75dd5d383ecff6ada920e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/43e9a14f71db135da5c75dd5d383ecff6ada920e",
- "reference": "43e9a14f71db135da5c75dd5d383ecff6ada920e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/dependency-injection": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
- },
- "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 EventDispatcher Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:40:00"
- },
- {
- "name": "symfony/http-foundation",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-foundation.git",
- "reference": "1341139f906d295baa4f4abd55293d07e25a065a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1341139f906d295baa4f4abd55293d07e25a065a",
- "reference": "1341139f906d295baa4f4abd55293d07e25a065a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/polyfill-mbstring": "~1.1"
- },
- "require-dev": {
- "symfony/expression-language": "~2.8|~3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpFoundation\\": ""
- },
- "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 HttpFoundation Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 07:02:21"
- },
- {
- "name": "symfony/http-kernel",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-kernel.git",
- "reference": "177b63b2d50b63fa6d82ea41359ed9928cc7a1fb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/177b63b2d50b63fa6d82ea41359ed9928cc7a1fb",
- "reference": "177b63b2d50b63fa6d82ea41359ed9928cc7a1fb",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "psr/log": "~1.0",
- "symfony/debug": "~2.8|~3.0",
- "symfony/event-dispatcher": "~2.8|~3.0",
- "symfony/http-foundation": "~2.8.8|~3.0.8|~3.1.2|~3.2"
- },
- "conflict": {
- "symfony/config": "<2.8"
- },
- "require-dev": {
- "symfony/browser-kit": "~2.8|~3.0",
- "symfony/class-loader": "~2.8|~3.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/console": "~2.8|~3.0",
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/dependency-injection": "~2.8|~3.0",
- "symfony/dom-crawler": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/finder": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0",
- "symfony/routing": "~2.8|~3.0",
- "symfony/stopwatch": "~2.8|~3.0",
- "symfony/templating": "~2.8|~3.0",
- "symfony/translation": "~2.8|~3.0",
- "symfony/var-dumper": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/browser-kit": "",
- "symfony/class-loader": "",
- "symfony/config": "",
- "symfony/console": "",
- "symfony/dependency-injection": "",
- "symfony/finder": "",
- "symfony/var-dumper": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpKernel\\": ""
- },
- "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 HttpKernel Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-30 16:30:17"
- },
- {
- "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/routing",
- "version": "v3.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/routing.git",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/9038984bd9c05ab07280121e9e10f61a7231457b",
- "reference": "9038984bd9c05ab07280121e9e10f61a7231457b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "conflict": {
- "symfony/config": "<2.8"
- },
- "require-dev": {
- "doctrine/annotations": "~1.0",
- "doctrine/common": "~2.2",
- "psr/log": "~1.0",
- "symfony/config": "~2.8|~3.0",
- "symfony/expression-language": "~2.8|~3.0",
- "symfony/http-foundation": "~2.8|~3.0",
- "symfony/yaml": "~2.8|~3.0"
- },
- "suggest": {
- "doctrine/annotations": "For using the annotation loader",
- "symfony/config": "For using the all-in-one router or any loader",
- "symfony/dependency-injection": "For loading routes from a service",
- "symfony/expression-language": "For using expression matching",
- "symfony/http-foundation": "For using a Symfony Request object",
- "symfony/yaml": "For using the YAML loader"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Routing\\": ""
- },
- "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 Routing Component",
- "homepage": "https://symfony.com/",
- "keywords": [
- "router",
- "routing",
- "uri",
- "url"
- ],
- "time": "2016-06-29 05:40:00"
- },
- {
- "name": "twig/twig",
- "version": "v1.24.1",
- "source": {
- "type": "git",
- "url": "https://github.com/twigphp/Twig.git",
- "reference": "3566d311a92aae4deec6e48682dc5a4528c4a512"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/3566d311a92aae4deec6e48682dc5a4528c4a512",
- "reference": "3566d311a92aae4deec6e48682dc5a4528c4a512",
- "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.24-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-05-30 09:11:59"
- }
- ],
- "packages-dev": [
- {
- "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": "google/cloud-tools",
- "version": "v0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/GoogleCloudPlatform/php-tools.git",
- "reference": "5bbdd075efcfc07d13e364b9d6b7697344c6914d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/GoogleCloudPlatform/php-tools/zipball/5bbdd075efcfc07d13e364b9d6b7697344c6914d",
- "reference": "5bbdd075efcfc07d13e364b9d6b7697344c6914d",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/guzzle": "~5.3|~6.0",
- "php": ">=5.5",
- "phpunit/phpunit": "~4|~5",
- "symfony/browser-kit": "~2|~3",
- "symfony/process": "~2|~3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Google\\Cloud\\TestUtils\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "Takashi Matsuo",
- "email": "tmatsuo@google.com",
- "homepage": "https://wp.gaeflex.ninja/"
- }
- ],
- "description": "PHP tools for Google Cloud Platform",
- "homepage": "https://github.com/GoogleCloudPlatform/php-tools",
- "keywords": [
- "appengine",
- "gcp",
- "test"
- ],
- "time": "2016-07-11 17:18:10"
- },
- {
- "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": "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": "2.2.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "phpunit/php-file-iterator": "~1.3",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-token-stream": "~1.3",
- "sebastian/environment": "^1.3.2",
- "sebastian/version": "~1.0"
- },
- "require-dev": {
- "ext-xdebug": ">=2.1.4",
- "phpunit/phpunit": "~4"
- },
- "suggest": {
- "ext-dom": "*",
- "ext-xdebug": ">=2.2.1",
- "ext-xmlwriter": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.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": "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": "2015-10-06 15:47:00"
- },
- {
- "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": "4.8.27",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c062dddcb68e44b563f66ee319ddae2b5a322a90",
- "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=5.3.3",
- "phpspec/prophecy": "^1.3.1",
- "phpunit/php-code-coverage": "~2.1",
- "phpunit/php-file-iterator": "~1.4",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-timer": "^1.0.6",
- "phpunit/phpunit-mock-objects": "~2.3",
- "sebastian/comparator": "~1.1",
- "sebastian/diff": "~1.2",
- "sebastian/environment": "~1.3",
- "sebastian/exporter": "~1.2",
- "sebastian/global-state": "~1.0",
- "sebastian/version": "~1.0",
- "symfony/yaml": "~2.1|~3.0"
- },
- "suggest": {
- "phpunit/php-invoker": "~1.1"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.8.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-07-21 06:48:14"
- },
- {
- "name": "phpunit/phpunit-mock-objects",
- "version": "2.3.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "php": ">=5.3.3",
- "phpunit/php-text-template": "~1.2",
- "sebastian/exporter": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "suggest": {
- "ext-soap": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3.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": "2015-10-02 06:51:40"
- },
- {
- "name": "psr/http-message",
- "version": "1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "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",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ],
- "time": "2015-05-04 20:22:00"
- },
- {
- "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.7",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716",
- "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "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": "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-05-17 03:18:57"
- },
- {
- "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/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/version",
- "version": "1.0.6",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "shasum": ""
- },
- "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": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2015-06-21 13:59:46"
- },
- {
- "name": "symfony/browser-kit",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/browser-kit.git",
- "reference": "dcf41ed026b0499254385b5c88f03247b2ba010b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/dcf41ed026b0499254385b5c88f03247b2ba010b",
- "reference": "dcf41ed026b0499254385b5c88f03247b2ba010b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/dom-crawler": "~2.8|~3.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.8|~3.0",
- "symfony/process": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\BrowserKit\\": ""
- },
- "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 BrowserKit Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/dom-crawler",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/dom-crawler.git",
- "reference": "99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0",
- "reference": "99ec4a23330fcd0c8667095f3ef7aa204ffd9dc0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.8|~3.0"
- },
- "suggest": {
- "symfony/css-selector": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\DomCrawler\\": ""
- },
- "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 DomCrawler Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "symfony/process",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "5c11a1a4d4016662eeaf0f8757958c7de069f9a0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/5c11a1a4d4016662eeaf0f8757958c7de069f9a0",
- "reference": "5c11a1a4d4016662eeaf0f8757958c7de069f9a0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Process\\": ""
- },
- "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 Process Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:42:25"
- },
- {
- "name": "symfony/yaml",
- "version": "v3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/2884c26ce4c1d61aebf423a8b912950fe7c764de",
- "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "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 Yaml Component",
- "homepage": "https://symfony.com/",
- "time": "2016-06-29 05:41:56"
- },
- {
- "name": "webmozart/assert",
- "version": "1.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozart/assert.git",
- "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
- "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.6"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-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": "2015-08-24 13:29:44"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": [],
- "platform-dev": []
-}
diff --git a/appengine/flexible/staticcontent/index.html.twig b/appengine/flexible/staticcontent/index.html.twig
index 5405693ad0..aa875dc856 100644
--- a/appengine/flexible/staticcontent/index.html.twig
+++ b/appengine/flexible/staticcontent/index.html.twig
@@ -2,7 +2,7 @@
Hello Static Content
This sample demonstrates how to serve static content with nginx, and
-dynamic content with silex.
+dynamic content with SlimPHP.
Enjoy this static image of trees:
diff --git a/appengine/flexible/staticcontent/nginx-app.conf b/appengine/flexible/staticcontent/nginx-app.conf
deleted file mode 100644
index 634c60a7d7..0000000000
--- a/appengine/flexible/staticcontent/nginx-app.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-# [START static-config]
-location / {
- # try to serve file directly, fallback to front controller
- try_files $uri /index.php$is_args$args;
-}
-# [END static-config]
diff --git a/appengine/flexible/staticcontent/phpunit.xml b/appengine/flexible/staticcontent/phpunit.xml
deleted file mode 100644
index 8ded898453..0000000000
--- a/appengine/flexible/staticcontent/phpunit.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- tests
-
-
-
diff --git a/appengine/flexible/staticcontent/phpunit.xml.dist b/appengine/flexible/staticcontent/phpunit.xml.dist
new file mode 100644
index 0000000000..9e29ed0386
--- /dev/null
+++ b/appengine/flexible/staticcontent/phpunit.xml.dist
@@ -0,0 +1,32 @@
+
+
+
+
+
+ test
+ test/DeployTest.php
+
+
+
+
+ index.php
+
+ ./vendor
+
+
+
+
diff --git a/appengine/flexible/staticcontent/test/DeployTest.php b/appengine/flexible/staticcontent/test/DeployTest.php
new file mode 100644
index 0000000000..f5f399ffd7
--- /dev/null
+++ b/appengine/flexible/staticcontent/test/DeployTest.php
@@ -0,0 +1,38 @@
+client->get('/');
+ $this->assertEquals('200', $resp->getStatusCode(),
+ 'top page status code');
+
+ // Access the static web page.
+ $resp = $this->client->get('/static.html');
+ $this->assertEquals('200', $resp->getStatusCode(),
+ 'static page status code');
+ }
+}
diff --git a/appengine/flexible/staticcontent/tests/DeployTest.php b/appengine/flexible/staticcontent/tests/DeployTest.php
deleted file mode 100644
index 6e6a6002ea..0000000000
--- a/appengine/flexible/staticcontent/tests/DeployTest.php
+++ /dev/null
@@ -1,37 +0,0 @@
-client->get('/');
- $this->assertEquals('200', $resp->getStatusCode(),
- 'top page status code');
-
- // Access the static web page.
- $resp = $this->client->get('/static.html');
- $this->assertEquals('200', $resp->getStatusCode(),
- 'static page status code');
- }
-}
diff --git a/appengine/flexible/staticcontent/tests/bootstrap.php b/appengine/flexible/staticcontent/tests/bootstrap.php
deleted file mode 100644
index 855a955f73..0000000000
--- a/appengine/flexible/staticcontent/tests/bootstrap.php
+++ /dev/null
@@ -1,17 +0,0 @@
-run();
diff --git a/appengine/flexible/staticcontent/web/static.html b/appengine/flexible/staticcontent/web/static.html
index 0647ec2d37..9369eda4f4 100644
--- a/appengine/flexible/staticcontent/web/static.html
+++ b/appengine/flexible/staticcontent/web/static.html
@@ -7,4 +7,4 @@
This is a static html document.
-
\ No newline at end of file
+