diff options
Diffstat (limited to 'src/PurpleCode/PCurl/PCurlJsonResponse.php')
-rw-r--r-- | src/PurpleCode/PCurl/PCurlJsonResponse.php | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/PurpleCode/PCurl/PCurlJsonResponse.php b/src/PurpleCode/PCurl/PCurlJsonResponse.php new file mode 100644 index 0000000..df36ea4 --- /dev/null +++ b/src/PurpleCode/PCurl/PCurlJsonResponse.php @@ -0,0 +1,32 @@ +<?php + +/** + * PCurl is a REST client libary for PHP. + * + * See http://github.com/purplecode/php.curl for details. + * + * This code is licensed for use, modification, and distribution + * under the terms of the MIT License (see http://en.wikipedia.org/wiki/MIT_License) + */ + +namespace PurpleCode\PCurl; + +use PurpleCode\PCurl\PCurlResponse; + +class PCurlJsonResponse extends PCurlResponse { + private $parsedResponse; + + public function __construct($header, $body, $arrayResponse){ + if(! PCurlJsonResponse::isValidJson($body)) + throw new PCurlException("Invalid JSON response format"); + parent::__construct($header, json_decode($body, $arrayResponse)); + } + + /** + * Fast way to check if response body is in JSon format - see RFC4627, regexp part. + */ + private static function isValidJson($text){ + return !preg_match('/[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]/', preg_replace('/"(\\.|[^"\\\\])*"/', '', $text)); + } + +} |