From 9492c9bfe866dcf7b829529e1cfe37ff7b48c348 Mon Sep 17 00:00:00 2001 From: Phillip Shipley Date: Sat, 19 Apr 2014 17:48:33 -0400 Subject: [PATCH 1/5] refactored to remove no longer used properties from Api: globalCache and endPointMaxRedirects --- src/ApiAxle/Api/Api.php | 18 ------------------ tests/Api/ApiTest.php | 26 ++++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/ApiAxle/Api/Api.php b/src/ApiAxle/Api/Api.php index 5ecf34e..0e00b3c 100644 --- a/src/ApiAxle/Api/Api.php +++ b/src/ApiAxle/Api/Api.php @@ -49,13 +49,6 @@ class Api */ protected $updatedAt; - /** - * (default: 0) The time in seconds that every call under this API should be cached. - * - * @var integer - */ - protected $globalCache = 0; - /** * The endpoint for the API. For example; `graph.facebook.com` * @@ -85,13 +78,6 @@ class Api */ protected $endPointTimeout = '2'; - /** - * (default: 2) Max redirects that are allowed when endpoint called. - * - * @var integer - */ - protected $endPointMaxRedirects = '2'; - /** * (optional) Regular expression used to extract API key from url. Axle will * use the **first** matched grouping and then apply that as the key. Using @@ -167,12 +153,10 @@ public function setData($data) */ $this->createdAt = isset($data->createdAt) ? $data->createdAt : null; $this->updatedAt = isset($data->updatedAt) ? $data->updatedAt : null; - $this->globalCache = isset($data->globalCache) ? $data->globalCache : null; $this->endPoint = isset($data->endPoint) ? $data->endPoint : null; $this->protocol = isset($data->protocol) ? $data->protocol : null; $this->apiFormat = isset($data->apiFormat) ? $data->apiFormat : null; $this->endPointTimeout = isset($data->endPointTimeout) ? $data->endPointTimeout : null; - $this->endPointMaxRedirects = isset($data->endPointMaxRedirects) ? $data->endPointMaxRedirects : null; $this->extractKeyRegex = isset($data->extractKeyRegex) ? $data->extractKeyRegex : null; $this->defaultPath = isset($data->defaultPath) ? $data->defaultPath : null; $this->disabled = isset($data->disabled) ? $data->disabled : false; @@ -192,12 +176,10 @@ public function getData() $data = array( 'createdAt' => $this->createdAt, 'updatedAt' => $this->updatedAt, - 'globalCache' => $this->globalCache, 'endPoint' => $this->endPoint, 'protocol' => $this->protocol, 'apiFormat' => $this->apiFormat, 'endPointTimeout' => $this->endPointTimeout, - 'endPointMaxRedirects' => $this->endPointMaxRedirects, 'extractKeyRegex' => $this->extractKeyRegex, 'defaultPath' => $this->defaultPath, 'disabled' => $this->disabled, diff --git a/tests/Api/ApiTest.php b/tests/Api/ApiTest.php index 0366296..9a1dc9a 100644 --- a/tests/Api/ApiTest.php +++ b/tests/Api/ApiTest.php @@ -103,7 +103,12 @@ public function testCreateDeleteApi() { $apiName = 'test-'.str_replace(array(' ','.'),'',microtime()); $data = array( - 'endPoint' => 'localhost' + 'endPoint' => 'localhost', + 'protocol' => 'https', + 'apiFormat' => 'json', + 'endPointTimeout' => 2, + 'strictSSL' => true, + 'tokenSkewProtectionCount' => 3, ); $api = new Api(); try{ @@ -296,5 +301,22 @@ public function testMethodsWithoutName() $this->assertTrue(true); } } - + + public function testIsValidMethod() + { + $api = new Api(); + try{ + $api->isValid(); + $this->assertTrue(false,'Api is valid without an endpoint'); + } catch (\Exception $e) { + $this->assertTrue(true); + } + try{ + $api->setData(array('endPoint'=>'https://domain.com')); + $api->isValid(); + $this->assertTrue(false,'Api is valid with an invalid endpoint'); + } catch (\Exception $e) { + $this->assertTrue(true); + } + } } \ No newline at end of file From 83e9089628c0384b530df8347dae97c3723f2c01 Mon Sep 17 00:00:00 2001 From: Phillip Shipley Date: Thu, 26 Jun 2014 16:31:44 -0400 Subject: [PATCH 2/5] working on adding recent features from apiaxle --- .gitignore | 1 + composer.phar | Bin 965780 -> 963760 bytes src/ApiAxle/Api/Api.php | 62 ++++++++++++++++++++++++++++++++++++++++ tests/Api/ApiTest.php | 6 ++++ 4 files changed, 69 insertions(+) diff --git a/.gitignore b/.gitignore index de8c5d2..9c29ce5 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ vendor/ *.local.php build/ .vagrant/ +.idea/ diff --git a/composer.phar b/composer.phar index 3bc79179b3540f36f12757475759c2a1e2527c42..bec9693e7905ccba6a30c2026a718f3423f741af 100755 GIT binary patch delta 61375 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 delta 69576 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 = isset($data->defaultPath) ? $data->defaultPath : null; $this->disabled = isset($data->disabled) ? $data->disabled : false; $this->strictSSL = isset($data->strictSSL) ? $data->strictSSL : true; + $this->sendThroughApiKey = isset($data->sendThroughApiKey) ? $data->sendThroughApiKey : false; + $this->sendThroughApiSig = isset($data->sendThroughApiSig) ? $data->sendThroughApiSig : false; + $this->hasCapturePaths = isset($data->hasCapturePaths) ? $data->hasCapturePaths : false; + $this->allowKeylessUse = isset($data->allowKeylessUse) ? $data->allowKeylessUse : false; + $this->keylessQps = isset($data->keylessQps) ? $data->keylessQps : false; + $this->keylessQpd = isset($data->keylessQpd) ? $data->keylessQpd : false; $this->tokenSkewProtectionCount = isset($data->tokenSkewProtectionCount) ? $data->tokenSkewProtectionCount : $this->tokenSkewProtectionCount; return $this; @@ -184,6 +240,12 @@ public function getData() 'defaultPath' => $this->defaultPath, 'disabled' => $this->disabled, 'strictSSL' => $this->strictSSL, + 'sendThroughApiKey' => $this->sendThroughApiKey, + 'sendThroughApiSig' => $this->sendThroughApiSig, + 'hasCapturePaths' => $this->hasCapturePaths, + 'allowKeylessUse' => $this->allowKeylessUse, + 'keylessQps' => $this->keylessQps, + 'keylessQpd' => $this->keylessQpd, 'tokenSkewProtectionCount' => (int)$this->tokenSkewProtectionCount, ); diff --git a/tests/Api/ApiTest.php b/tests/Api/ApiTest.php index 9a1dc9a..09f0779 100644 --- a/tests/Api/ApiTest.php +++ b/tests/Api/ApiTest.php @@ -109,6 +109,12 @@ public function testCreateDeleteApi() 'endPointTimeout' => 2, 'strictSSL' => true, 'tokenSkewProtectionCount' => 3, + 'sendThroughApiKey' => true, + 'sendThroughApiSig' => true, + 'hasCapturePaths' => true, + 'allowKeylessUse' => true, + 'keylessQps' => 2, + 'keylessQpd' => 1000, ); $api = new Api(); try{ From 158e39e20e8ed6c56a1afd532f339e2028ec7ce9 Mon Sep 17 00:00:00 2001 From: Phillip Shipley Date: Thu, 26 Jun 2014 17:14:19 -0400 Subject: [PATCH 3/5] Added support for CORS which was added in ApiAxle 1.12.30 --- src/ApiAxle/Api/Api.php | 9 +++++++++ tests/Api/ApiTest.php | 1 + 2 files changed, 10 insertions(+) diff --git a/src/ApiAxle/Api/Api.php b/src/ApiAxle/Api/Api.php index 73a874a..1382f6d 100644 --- a/src/ApiAxle/Api/Api.php +++ b/src/ApiAxle/Api/Api.php @@ -168,6 +168,13 @@ class Api * @var integer */ protected $tokenSkewProtectionCount = 3; + + /** + * Whether or not to return CORS headers for this API. + * + * @var bool + */ + protected $corsEnabled = false; /** * Construct new Api object. @@ -218,6 +225,7 @@ public function setData($data) $this->keylessQps = isset($data->keylessQps) ? $data->keylessQps : false; $this->keylessQpd = isset($data->keylessQpd) ? $data->keylessQpd : false; $this->tokenSkewProtectionCount = isset($data->tokenSkewProtectionCount) ? $data->tokenSkewProtectionCount : $this->tokenSkewProtectionCount; + $this->corsEnabled = isset($data->corsEnabled) ? $data->corsEnabled : $this->corsEnabled; return $this; } @@ -247,6 +255,7 @@ public function getData() 'keylessQps' => $this->keylessQps, 'keylessQpd' => $this->keylessQpd, 'tokenSkewProtectionCount' => (int)$this->tokenSkewProtectionCount, + 'corsEnabled' => $this->corsEnabled, ); return $data; diff --git a/tests/Api/ApiTest.php b/tests/Api/ApiTest.php index 09f0779..5fd83cb 100644 --- a/tests/Api/ApiTest.php +++ b/tests/Api/ApiTest.php @@ -115,6 +115,7 @@ public function testCreateDeleteApi() 'allowKeylessUse' => true, 'keylessQps' => 2, 'keylessQpd' => 1000, + 'corsEnabled' => true, ); $api = new Api(); try{ From de094c48738ad71711254b26027d55933f1fa380 Mon Sep 17 00:00:00 2001 From: Phillip Shipley Date: Tue, 25 Nov 2014 14:39:40 -0500 Subject: [PATCH 4/5] fixing bug when disabling ssl verify peer --- .gitignore | 1 + src/ApiAxle/Shared/HttpRequest.php | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index de8c5d2..454d221 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ vendor/ *.local.php build/ .vagrant/ +.idea/ \ No newline at end of file diff --git a/src/ApiAxle/Shared/HttpRequest.php b/src/ApiAxle/Shared/HttpRequest.php index 8f20547..b5d350f 100644 --- a/src/ApiAxle/Shared/HttpRequest.php +++ b/src/ApiAxle/Shared/HttpRequest.php @@ -49,6 +49,8 @@ public static function request($uri,$method='GET',$postfields=false,$headers=fal if(!is_null($config->getSslCapath())){ curl_setopt($ch, CURLOPT_CAPATH, $config->getSslCapath()); } + } else { + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); } if($config->getProxyEnable()){ From f9144f99dc94171c5e3b5d602dea2218dd2fe15c Mon Sep 17 00:00:00 2001 From: Phillip Shipley Date: Tue, 25 Nov 2014 15:18:52 -0500 Subject: [PATCH 5/5] updated composer dependencies --- composer.json | 2 +- composer.lock | 489 +++++++++++++++++++++++++------------------------- 2 files changed, 246 insertions(+), 245 deletions(-) diff --git a/composer.json b/composer.json index 3a9fc0b..13b74de 100644 --- a/composer.json +++ b/composer.json @@ -20,7 +20,7 @@ }, "require-dev": { "phpunit/phpunit": "3.7.*", - "apigen/apigen": "dev-master", + "apigen/apigen": "2.*", "satooshi/php-coveralls": "dev-master" }, "autoload": { diff --git a/composer.lock b/composer.lock index 9892696..d2b7071 100644 --- a/composer.lock +++ b/composer.lock @@ -1,25 +1,24 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file" - ], - "hash": "b497d1a91324299c22c9b2bbab0c875c", - "packages": [ - + "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" ], + "hash": "6743449505b7213d482f786470e6da52", + "packages": [], "packages-dev": [ { "name": "andrewsville/php-token-reflection", "version": "1.3.1", "source": { "type": "git", - "url": "git://github.com/Andrewsville/PHP-Token-Reflection.git", - "reference": "1.3.1" + "url": "https://github.com/Andrewsville/PHP-Token-Reflection.git", + "reference": "3e3a36de17f32889fd2d4b8108af16d3033ce9bf" }, "dist": { "type": "zip", - "url": "https://github.com/Andrewsville/PHP-Token-Reflection/zipball/1.3.1", - "reference": "1.3.1", + "url": "https://api.github.com/repos/Andrewsville/PHP-Token-Reflection/zipball/3e3a36de17f32889fd2d4b8108af16d3033ce9bf", + "reference": "3e3a36de17f32889fd2d4b8108af16d3033ce9bf", "shasum": "" }, "require": { @@ -38,7 +37,7 @@ "authors": [ { "name": "Ondřej Nešpor", - "homepage": "https://github.com/Andrewsville" + "homepage": "https://github.com/andrewsville" }, { "name": "Jaroslav Hanslík", @@ -52,28 +51,30 @@ "reflection", "tokenizer" ], - "time": "2012-08-25 14:26:44" + "time": "2012-08-25 21:26:44" }, { "name": "apigen/apigen", - "version": "dev-master", + "version": "v2.8.1", "source": { "type": "git", - "url": "https://github.com/apigen/apigen", - "reference": "c6c0af2b5ac8128320f82e971b19756439fac42c" + "url": "https://github.com/apigen/apigen.git", + "reference": "bca0954e92621a48c6870be57115026a8d032706" }, "dist": { "type": "zip", - "url": "https://github.com/apigen/apigen/zipball/c6c0af2b5ac8128320f82e971b19756439fac42c", - "reference": "c6c0af2b5ac8128320f82e971b19756439fac42c", + "url": "https://api.github.com/repos/apigen/apigen/zipball/bca0954e92621a48c6870be57115026a8d032706", + "reference": "bca0954e92621a48c6870be57115026a8d032706", "shasum": "" }, "require": { - "andrewsville/php-token-reflection": ">=1.3.1", - "dg/texy": ">=2.1.0", - "kukulich/fshl": ">=2.1.0", - "nette/nette": ">=2.0.5", - "php": ">=5.3.0" + "andrewsville/php-token-reflection": "~1.3.1", + "ext-json": "*", + "ext-mbstring": "*", + "kukulich/fshl": "~2.1.0", + "nette/nette": "~2.1.1", + "php": ">=5.3.0", + "texy/texy": "~2.4.0" }, "suggest": { "ext-bz2": "*", @@ -82,9 +83,9 @@ "ext-zlib": "*" }, "bin": [ - "apigen.php" + "apigen" ], - "type": "library", + "type": "project", "extra": { "branch-alias": { "dev-develop": "3.0.0-dev" @@ -106,7 +107,7 @@ }, { "name": "Ondřej Nešpor", - "homepage": "https://github.com/Andrewsville" + "homepage": "https://github.com/andrewsville" }, { "name": "Jaroslav Hanslík", @@ -123,79 +124,26 @@ "phpDocumentor", "phpdoc" ], - "time": "2012-09-29 20:17:32" - }, - { - "name": "dg/texy", - "version": "v2.3", - "source": { - "type": "git", - "url": "https://github.com/dg/texy.git", - "reference": "11c34e6df7846ff1e02e6ef7c0ef4a1e3af40847" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dg/texy/zipball/11c34e6df7846ff1e02e6ef7c0ef4a1e3af40847", - "reference": "11c34e6df7846ff1e02e6ef7c0ef4a1e3af40847", - "shasum": "" - }, - "require": { - "php": ">=5.0.0" - }, - "require-dev": { - "nette/tester": "0.9.*" - }, - "type": "library", - "autoload": { - "files": [ - "src/texy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "http://davidgrudl.com" - } - ], - "description": "Texy converts plain text in easy to read Texy syntax into structurally valid (X)HTML. It supports adding of images, links, nested lists, tables and has full support for CSS. Texy supports hyphenation of long words (which reflects language rules), clickable emails and URL (emails are obfuscated against spambots), national typographic single and double quotation marks, ellipses, em dashes, dimension sign, nonbreakable spaces (e.g. in phone numbers), acronyms, arrows and many others. Texy code can optionally contain HTML tags.", - "homepage": "http://texy.info", - "keywords": [ - "html", - "markdown", - "markup language", - "plain text", - "text", - "textile", - "texy", - "wiki", - "xhtml" - ], - "time": "2013-07-19 22:05:37" + "time": "2014-09-01 18:06:36" }, { "name": "guzzle/guzzle", - "version": "v3.7.4", + "version": "v3.9.2", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "b170b028c6bb5799640e46c8803015b0f9a45ed9" + "url": "https://github.com/guzzle/guzzle3.git", + "reference": "54991459675c1a2924122afbb0e5609ade581155" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b170b028c6bb5799640e46c8803015b0f9a45ed9", - "reference": "b170b028c6bb5799640e46c8803015b0f9a45ed9", + "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/54991459675c1a2924122afbb0e5609ade581155", + "reference": "54991459675c1a2924122afbb0e5609ade581155", "shasum": "" }, "require": { "ext-curl": "*", "php": ">=5.3.3", - "symfony/event-dispatcher": ">=2.1" + "symfony/event-dispatcher": "~2.1" }, "replace": { "guzzle/batch": "self.version", @@ -222,24 +170,24 @@ "guzzle/stream": "self.version" }, "require-dev": { - "doctrine/cache": "*", - "monolog/monolog": "1.*", + "doctrine/cache": "~1.3", + "monolog/monolog": "~1.0", "phpunit/phpunit": "3.7.*", - "psr/log": "1.0.*", - "symfony/class-loader": "*", - "zendframework/zend-cache": "2.0.*", - "zendframework/zend-log": "2.0.*" + "psr/log": "~1.0", + "symfony/class-loader": "~2.1", + "zendframework/zend-cache": "2.*,<2.3", + "zendframework/zend-log": "2.*,<2.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.7-dev" + "dev-master": "3.9-dev" } }, "autoload": { "psr-0": { - "Guzzle\\Tests": "tests/", - "Guzzle": "src/" + "Guzzle": "src/", + "Guzzle\\Tests": "tests/" } }, "notification-url": "https://packagist.org/downloads/", @@ -268,20 +216,20 @@ "rest", "web service" ], - "time": "2013-10-02 20:47:00" + "time": "2014-08-11 04:32:36" }, { "name": "kukulich/fshl", "version": "2.1.0", "source": { "type": "git", - "url": "https://github.com/kukulich/fshl", - "reference": "2.1.0" + "url": "https://github.com/kukulich/fshl.git", + "reference": "974c294ade5d76c0c16b6fe3fd3a584ba999b24f" }, "dist": { "type": "zip", - "url": "https://github.com/kukulich/fshl/zipball/2.1.0", - "reference": "2.1.0", + "url": "https://api.github.com/repos/kukulich/fshl/zipball/974c294ade5d76c0c16b6fe3fd3a584ba999b24f", + "reference": "974c294ade5d76c0c16b6fe3fd3a584ba999b24f", "shasum": "" }, "require": { @@ -310,46 +258,43 @@ "library", "syntax" ], - "time": "2012-09-08 12:00:07" + "time": "2012-09-08 19:00:07" }, { "name": "nette/nette", - "version": "v2.0.12", + "version": "v2.1.8", "source": { "type": "git", "url": "https://github.com/nette/nette.git", - "reference": "80a7e460badc3d71b1469bb23810ebf235b06b11" + "reference": "0fa5750d1660113ebcf07aed70666e8e2c61575c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/nette/zipball/80a7e460badc3d71b1469bb23810ebf235b06b11", - "reference": "80a7e460badc3d71b1469bb23810ebf235b06b11", + "url": "https://api.github.com/repos/nette/nette/zipball/0fa5750d1660113ebcf07aed70666e8e2c61575c", + "reference": "0fa5750d1660113ebcf07aed70666e8e2c61575c", "shasum": "" }, "require": { "ext-iconv": "*", "ext-tokenizer": "*", - "php": ">=5.3.0" + "php": ">=5.3.1" }, "require-dev": { - "nette/tester": "0.9.*" + "nette/tester": "~1.3" }, "suggest": { - "ext-fileinfo": "*", - "ext-gd": "*", - "ext-mbstring": "*", - "ext-memcache": "*", - "ext-pdo": "*" + "ext-fileinfo": "", + "ext-gd": "", + "ext-mbstring": "", + "ext-pdo": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, "autoload": { + "classmap": [ + "Nette/" + ], "files": [ - "Nette/loader.php" + "Nette/common/shortcuts.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -373,38 +318,33 @@ "keywords": [ "Forms", "database", - "dbal", "debugging", "framework", - "images", - "latte", "mailing", - "micro", "mvc", - "neon", "templating" ], - "time": "2013-08-07 23:14:19" + "time": "2014-11-16 13:51:36" }, { "name": "phpunit/php-code-coverage", - "version": "1.2.13", + "version": "1.2.18", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "466e7cd2554b4e264c9e3f31216d25ac0e5f3d94" + "reference": "fe2466802556d3fe4e4d1d58ffd3ccfd0a19be0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/466e7cd2554b4e264c9e3f31216d25ac0e5f3d94", - "reference": "466e7cd2554b4e264c9e3f31216d25ac0e5f3d94", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/fe2466802556d3fe4e4d1d58ffd3ccfd0a19be0b", + "reference": "fe2466802556d3fe4e4d1d58ffd3ccfd0a19be0b", "shasum": "" }, "require": { "php": ">=5.3.3", "phpunit/php-file-iterator": ">=1.3.0@stable", - "phpunit/php-text-template": ">=1.1.1@stable", - "phpunit/php-token-stream": ">=1.1.3@stable" + "phpunit/php-text-template": ">=1.2.0@stable", + "phpunit/php-token-stream": ">=1.1.3,<1.3.0" }, "require-dev": { "phpunit/phpunit": "3.7.*@dev" @@ -445,20 +385,20 @@ "testing", "xunit" ], - "time": "2013-09-10 08:14:32" + "time": "2014-09-02 10:13:14" }, { "name": "phpunit/php-file-iterator", - "version": "1.3.3", + "version": "1.3.4", "source": { "type": "git", - "url": "git://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "1.3.3" + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" }, "dist": { "type": "zip", - "url": "https://github.com/sebastianbergmann/php-file-iterator/zipball/1.3.3", - "reference": "1.3.3", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", "shasum": "" }, "require": { @@ -485,25 +425,25 @@ } ], "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "http://www.phpunit.de/", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", "keywords": [ "filesystem", "iterator" ], - "time": "2012-10-11 04:44:38" + "time": "2013-10-10 15:34:57" }, { "name": "phpunit/php-text-template", - "version": "1.1.4", + "version": "1.2.0", "source": { "type": "git", - "url": "git://github.com/sebastianbergmann/php-text-template.git", - "reference": "1.1.4" + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" }, "dist": { "type": "zip", - "url": "https://github.com/sebastianbergmann/php-text-template/zipball/1.1.4", - "reference": "1.1.4", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", "shasum": "" }, "require": { @@ -534,7 +474,7 @@ "keywords": [ "template" ], - "time": "2012-10-31 11:15:28" + "time": "2014-01-30 17:20:04" }, { "name": "phpunit/php-timer", @@ -582,16 +522,16 @@ }, { "name": "phpunit/php-token-stream", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "5220af2a7929aa35cf663d97c89ad3d50cf5fa3e" + "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/5220af2a7929aa35cf663d97c89ad3d50cf5fa3e", - "reference": "5220af2a7929aa35cf663d97c89ad3d50cf5fa3e", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ad4e1e23ae01b483c16f600ff1bebec184588e32", + "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32", "shasum": "" }, "require": { @@ -628,43 +568,42 @@ "keywords": [ "tokenizer" ], - "time": "2013-09-13 04:58:23" + "time": "2014-03-03 05:10:30" }, { "name": "phpunit/phpunit", - "version": "3.7.27", + "version": "3.7.38", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "4b024e753e3421837afbcca962c8724c58b39376" + "reference": "38709dc22d519a3d1be46849868aa2ddf822bcf6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4b024e753e3421837afbcca962c8724c58b39376", - "reference": "4b024e753e3421837afbcca962c8724c58b39376", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/38709dc22d519a3d1be46849868aa2ddf822bcf6", + "reference": "38709dc22d519a3d1be46849868aa2ddf822bcf6", "shasum": "" }, "require": { + "ext-ctype": "*", "ext-dom": "*", + "ext-json": "*", "ext-pcre": "*", "ext-reflection": "*", "ext-spl": "*", "php": ">=5.3.3", - "phpunit/php-code-coverage": "~1.2.1", - "phpunit/php-file-iterator": ">=1.3.1", - "phpunit/php-text-template": ">=1.1.1", - "phpunit/php-timer": ">=1.0.4", - "phpunit/phpunit-mock-objects": "~1.2.0", + "phpunit/php-code-coverage": "~1.2", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.1", + "phpunit/php-timer": "~1.0", + "phpunit/phpunit-mock-objects": "~1.2", "symfony/yaml": "~2.0" }, "require-dev": { - "pear-pear/pear": "1.9.4" + "pear-pear.php.net/pear": "1.9.4" }, "suggest": { - "ext-json": "*", - "ext-simplexml": "*", - "ext-tokenizer": "*", - "phpunit/php-invoker": ">=1.1.0,<1.2.0" + "phpunit/php-invoker": "~1.1" }, "bin": [ "composer/bin/phpunit" @@ -702,20 +641,20 @@ "testing", "xunit" ], - "time": "2013-09-16 03:09:52" + "time": "2014-10-17 09:04:17" }, { "name": "phpunit/phpunit-mock-objects", "version": "1.2.3", "source": { "type": "git", - "url": "git://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "1.2.3" + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "5794e3c5c5ba0fb037b11d8151add2a07fa82875" }, "dist": { "type": "zip", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects/archive/1.2.3.zip", - "reference": "1.2.3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/5794e3c5c5ba0fb037b11d8151add2a07fa82875", + "reference": "5794e3c5c5ba0fb037b11d8151add2a07fa82875", "shasum": "" }, "require": { @@ -758,13 +697,13 @@ "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/log", - "reference": "1.0.0" + "url": "https://github.com/php-fig/log.git", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" }, "dist": { "type": "zip", - "url": "https://github.com/php-fig/log/archive/1.0.0.zip", - "reference": "1.0.0", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", "shasum": "" }, "type": "library", @@ -797,18 +736,18 @@ "source": { "type": "git", "url": "https://github.com/satooshi/php-coveralls.git", - "reference": "c95c07e971e4b687718f54fc3447a260fb989e16" + "reference": "2fbf803803d179ab1082807308a67bbd5a760c70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/satooshi/php-coveralls/zipball/c95c07e971e4b687718f54fc3447a260fb989e16", - "reference": "c95c07e971e4b687718f54fc3447a260fb989e16", + "url": "https://api.github.com/repos/satooshi/php-coveralls/zipball/2fbf803803d179ab1082807308a67bbd5a760c70", + "reference": "2fbf803803d179ab1082807308a67bbd5a760c70", "shasum": "" }, "require": { "ext-json": "*", "ext-simplexml": "*", - "guzzle/guzzle": ">=3.0", + "guzzle/guzzle": ">=2.7", "php": ">=5.3", "psr/log": "1.0.0", "symfony/config": ">=2.0", @@ -818,7 +757,7 @@ }, "require-dev": { "apigen/apigen": "2.8.*@stable", - "pdepend/pdepend": "dev-master", + "pdepend/pdepend": "dev-master as 2.0.0", "phpmd/phpmd": "dev-master", "phpunit/php-invoker": ">=1.1.0,<1.2.0", "phpunit/phpunit": "3.7.*@stable", @@ -834,6 +773,11 @@ "composer/bin/coveralls" ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.7-dev" + } + }, "autoload": { "psr-0": { "Satooshi\\Component": "src/", @@ -859,21 +803,21 @@ "github", "test" ], - "time": "2013-07-25 11:22:39" + "time": "2014-11-11 15:35:34" }, { "name": "symfony/config", - "version": "v2.3.5", + "version": "v2.5.7", "target-dir": "Symfony/Component/Config", "source": { "type": "git", "url": "https://github.com/symfony/Config.git", - "reference": "1ced3d6c88b22df8cd1fe5209dbd6a89df362a29" + "reference": "7b11dceebaaf877b75bc1aedfd831a2ddc326de9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Config/zipball/1ced3d6c88b22df8cd1fe5209dbd6a89df362a29", - "reference": "1ced3d6c88b22df8cd1fe5209dbd6a89df362a29", + "url": "https://api.github.com/repos/symfony/Config/zipball/7b11dceebaaf877b75bc1aedfd831a2ddc326de9", + "reference": "7b11dceebaaf877b75bc1aedfd831a2ddc326de9", "shasum": "" }, "require": { @@ -883,7 +827,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -896,47 +840,49 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Config Component", "homepage": "http://symfony.com", - "time": "2013-09-19 09:45:20" + "time": "2014-11-20 13:22:25" }, { "name": "symfony/console", - "version": "v2.3.5", + "version": "v2.5.7", "target-dir": "Symfony/Component/Console", "source": { "type": "git", "url": "https://github.com/symfony/Console.git", - "reference": "f880062d56edefb25b36f2defa65aafe65959dc7" + "reference": "61b13c27c9258e97009249d4ef193c964bf346b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Console/zipball/f880062d56edefb25b36f2defa65aafe65959dc7", - "reference": "f880062d56edefb25b36f2defa65aafe65959dc7", + "url": "https://api.github.com/repos/symfony/Console/zipball/61b13c27c9258e97009249d4ef193c964bf346b7", + "reference": "61b13c27c9258e97009249d4ef193c964bf346b7", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { + "psr/log": "~1.0", "symfony/event-dispatcher": "~2.1" }, "suggest": { + "psr/log": "For using the console logger", "symfony/event-dispatcher": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -949,39 +895,42 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Console Component", "homepage": "http://symfony.com", - "time": "2013-09-25 06:04:15" + "time": "2014-11-20 13:22:25" }, { "name": "symfony/event-dispatcher", - "version": "v2.3.5", + "version": "v2.5.7", "target-dir": "Symfony/Component/EventDispatcher", "source": { "type": "git", "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "7fc72a7a346a1887d3968cc1ce5642a15cd182e9" + "reference": "bb6fc12085cd195dceaf48016087b12b632df497" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/7fc72a7a346a1887d3968cc1ce5642a15cd182e9", - "reference": "7fc72a7a346a1887d3968cc1ce5642a15cd182e9", + "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/bb6fc12085cd195dceaf48016087b12b632df497", + "reference": "bb6fc12085cd195dceaf48016087b12b632df497", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { - "symfony/dependency-injection": "~2.0" + "psr/log": "~1.0", + "symfony/config": "~2.0", + "symfony/dependency-injection": "~2.0,<2.6.0", + "symfony/stopwatch": "~2.2" }, "suggest": { "symfony/dependency-injection": "", @@ -990,7 +939,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -1003,32 +952,32 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony EventDispatcher Component", "homepage": "http://symfony.com", - "time": "2013-09-19 09:45:20" + "time": "2014-10-30 20:17:55" }, { "name": "symfony/filesystem", - "version": "v2.3.5", + "version": "v2.5.7", "target-dir": "Symfony/Component/Filesystem", "source": { "type": "git", "url": "https://github.com/symfony/Filesystem.git", - "reference": "2b8995042086c5552c94d33b5553c492e9cfc00e" + "reference": "3c3e382bd869b3ec10008a3d9ef455b1cc2868db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Filesystem/zipball/2b8995042086c5552c94d33b5553c492e9cfc00e", - "reference": "2b8995042086c5552c94d33b5553c492e9cfc00e", + "url": "https://api.github.com/repos/symfony/Filesystem/zipball/3c3e382bd869b3ec10008a3d9ef455b1cc2868db", + "reference": "3c3e382bd869b3ec10008a3d9ef455b1cc2868db", "shasum": "" }, "require": { @@ -1037,7 +986,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -1050,32 +999,32 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Filesystem Component", "homepage": "http://symfony.com", - "time": "2013-09-19 09:45:20" + "time": "2014-11-16 17:28:00" }, { "name": "symfony/stopwatch", - "version": "v2.3.5", + "version": "v2.5.7", "target-dir": "Symfony/Component/Stopwatch", "source": { "type": "git", "url": "https://github.com/symfony/Stopwatch.git", - "reference": "1f951fa881d2e661525e81ee0afc97261ad43459" + "reference": "9f8a33a24f2378c0ec5f372a8d50b2d43069c050" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/1f951fa881d2e661525e81ee0afc97261ad43459", - "reference": "1f951fa881d2e661525e81ee0afc97261ad43459", + "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/9f8a33a24f2378c0ec5f372a8d50b2d43069c050", + "reference": "9f8a33a24f2378c0ec5f372a8d50b2d43069c050", "shasum": "" }, "require": { @@ -1084,7 +1033,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -1097,32 +1046,32 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Stopwatch Component", "homepage": "http://symfony.com", - "time": "2013-09-19 09:45:20" + "time": "2014-09-22 09:14:18" }, { "name": "symfony/yaml", - "version": "v2.3.5", + "version": "v2.5.7", "target-dir": "Symfony/Component/Yaml", "source": { "type": "git", "url": "https://github.com/symfony/Yaml.git", - "reference": "6bb881b948368482e1abf1a75c08bcf88a1c5fc3" + "reference": "900d38bc8f74a50343ce65dd1c1e9819658ee56b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/6bb881b948368482e1abf1a75c08bcf88a1c5fc3", - "reference": "6bb881b948368482e1abf1a75c08bcf88a1c5fc3", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/900d38bc8f74a50343ce65dd1c1e9819658ee56b", + "reference": "900d38bc8f74a50343ce65dd1c1e9819658ee56b", "shasum": "" }, "require": { @@ -1131,7 +1080,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -1144,32 +1093,84 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Yaml Component", "homepage": "http://symfony.com", - "time": "2013-09-22 18:04:39" + "time": "2014-11-20 13:22:25" + }, + { + "name": "texy/texy", + "version": "v2.4", + "source": { + "type": "git", + "url": "https://github.com/dg/texy.git", + "reference": "67d02cd95e4aaa7dae96b24a7d04ba924d641015" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dg/texy/zipball/67d02cd95e4aaa7dae96b24a7d04ba924d641015", + "reference": "67d02cd95e4aaa7dae96b24a7d04ba924d641015", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "replace": { + "dg/texy": "self.version" + }, + "require-dev": { + "nette/tester": "~1.0.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/texy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "http://davidgrudl.com" + } + ], + "description": "Texy converts plain text in easy to read Texy syntax into structurally valid (X)HTML. It supports adding of images, links, nested lists, tables and has full support for CSS. Texy supports hyphenation of long words (which reflects language rules), clickable emails and URL (emails are obfuscated against spambots), national typographic single and double quotation marks, ellipses, em dashes, dimension sign, nonbreakable spaces (e.g. in phone numbers), acronyms, arrows and many others. Texy code can optionally contain HTML tags.", + "homepage": "http://texy.info", + "keywords": [ + "html", + "markdown", + "markup language", + "plain text", + "text", + "textile", + "texy", + "wiki", + "xhtml" + ], + "time": "2014-02-10 02:34:57" } ], - "aliases": [ - - ], + "aliases": [], "minimum-stability": "stable", "stability-flags": { - "apigen/apigen": 20, "satooshi/php-coveralls": 20 }, + "prefer-stable": false, "platform": { "php": ">=5.3.3" }, - "platform-dev": [ - - ] + "platform-dev": [] }