diff options
author | theres <dmarkiew@CNU3429M9W.nsn-intra.net> | 2014-07-15 09:44:07 +0200 |
---|---|---|
committer | theres <dmarkiew@CNU3429M9W.nsn-intra.net> | 2014-07-15 09:44:07 +0200 |
commit | 090e64bd20a40ed55c79025e611ba2c6a45c80df (patch) | |
tree | b9a284b086b69e057386e11333d7ff15a130834d /src/PurpleCode/PCurl/PCurlJsonResponse.php | |
parent | 1884e50d534f9ca82527d06861cb7064fe1d9b40 (diff) | |
download | php.curl-090e64bd20a40ed55c79025e611ba2c6a45c80df.zip php.curl-090e64bd20a40ed55c79025e611ba2c6a45c80df.tar.gz php.curl-090e64bd20a40ed55c79025e611ba2c6a45c80df.tar.bz2 |
PCurl will now return PCurlResponse object instead of raw body. PJsonCurl
also, but will try to parse JSON and throw an exception when fail to
parse.
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)); + } + +} |