summaryrefslogtreecommitdiffstats
path: root/src/PurpleCode/PCurl/PCurlJsonResponse.php
diff options
context:
space:
mode:
authortheres <dmarkiew@CNU3429M9W.nsn-intra.net>2014-07-15 09:44:07 +0200
committertheres <dmarkiew@CNU3429M9W.nsn-intra.net>2014-07-15 09:44:07 +0200
commit090e64bd20a40ed55c79025e611ba2c6a45c80df (patch)
treeb9a284b086b69e057386e11333d7ff15a130834d /src/PurpleCode/PCurl/PCurlJsonResponse.php
parent1884e50d534f9ca82527d06861cb7064fe1d9b40 (diff)
downloadphp.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.php32
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));
+ }
+
+}