Added tests for JSON errors, should help us figure out the cause of the problem in #11

This commit is contained in:
El RIDO
2016-08-11 14:41:52 +02:00
parent 6144e73405
commit 6cb7454d07
3 changed files with 84 additions and 3 deletions

View File

@@ -13,6 +13,7 @@
namespace PrivateBin\Data;
use PrivateBin\Model\Paste;
use PrivateBin\Json;
/**
* Filesystem
@@ -61,6 +62,7 @@ class Filesystem extends AbstractData
* @access public
* @param string $pasteid
* @param array $paste
* @throws Exception
* @return bool
*/
public function create($pasteid, $paste)
@@ -72,7 +74,7 @@ class Filesystem extends AbstractData
if (!is_dir($storagedir)) {
mkdir($storagedir, 0700, true);
}
return (bool) file_put_contents($storagedir . $pasteid, json_encode($paste));
return (bool) file_put_contents($storagedir . $pasteid, Json::encode($paste));
}
/**
@@ -153,6 +155,7 @@ class Filesystem extends AbstractData
* @param string $parentid
* @param string $commentid
* @param array $comment
* @throws Exception
* @return bool
*/
public function createComment($pasteid, $parentid, $commentid, $comment)
@@ -165,7 +168,7 @@ class Filesystem extends AbstractData
if (!is_dir($storagedir)) {
mkdir($storagedir, 0700, true);
}
return (bool) file_put_contents($storagedir . $filename, json_encode($comment));
return (bool) file_put_contents($storagedir . $filename, Json::encode($comment));
}
/**

48
lib/Json.php Normal file
View File

@@ -0,0 +1,48 @@
<?php
/**
* PrivateBin
*
* a zero-knowledge paste bin
*
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 0.22
*/
namespace PrivateBin;
use Exception;
/**
* Json
*
* Provides JSON functions in an object oriented way.
*/
class Json
{
/**
* Returns a string containing the JSON representation of the given input
*
* @access public
* @static
* @param mixed $input
* @throws Exception
* @return string
*/
public static function encode($input)
{
$jsonString = json_encode($input);
$errorCode = json_last_error();
if ($errorCode === JSON_ERROR_NONE) {
return $jsonString;
}
$message = 'A JSON error occurred';
if (function_exists('json_last_error_msg')) {
$message .= ': ' . json_last_error_msg();
}
$message .= ' (' . $errorCode . ')';
throw new Exception($message, 90);
}
}