Move cache class to IOn namespace, use safer json for serialization in cache drivers
This commit is contained in:
parent
a108adfa23
commit
893584696b
app
src/Aviat
AnimeClient/Command
Ion
tests
@ -13,6 +13,7 @@ use Monolog\Handler\RotatingFileHandler;
|
||||
use Zend\Diactoros\ServerRequestFactory;
|
||||
use Zend\Diactoros\Response;
|
||||
|
||||
use Aviat\Ion\Config;
|
||||
use Aviat\Ion\Di\Container;
|
||||
use Aviat\Ion\Cache\CacheManager;
|
||||
use Aviat\AnimeClient\Auth\HummingbirdAuth;
|
||||
|
@ -10,4 +10,14 @@ pass = ""
|
||||
port = ""
|
||||
name = "default"
|
||||
database = ""
|
||||
file = "/../../anime_collection.sqlite"
|
||||
file = "anime_collection.sqlite"
|
||||
|
||||
[cache]
|
||||
type = "sqlite"
|
||||
host = ""
|
||||
user = ""
|
||||
pass = ""
|
||||
port = ""
|
||||
name = "default"
|
||||
database = ""
|
||||
file = "anime_collection.sqlite"
|
@ -17,12 +17,14 @@ use Aura\Session\SessionFactory;
|
||||
use ConsoleKit\Command;
|
||||
use ConsoleKit\Widgets\Box;
|
||||
|
||||
use Aviat\Ion\Config;
|
||||
use Aviat\Ion\Di\Container;
|
||||
use Aviat\Ion\Cache\CacheManager;
|
||||
use Aviat\AnimeClient\Config;
|
||||
|
||||
use Aviat\AnimeClient\AnimeClient;
|
||||
use Aviat\AnimeClient\Auth\HummingbirdAuth;
|
||||
use Aviat\AnimeClient\Model;
|
||||
use Aviat\AnimeClient\Util;
|
||||
|
||||
/**
|
||||
* Base class for console command setup
|
||||
@ -77,6 +79,7 @@ class BaseCommand extends Command {
|
||||
$container->set('manga-model', new Model\Manga($container));
|
||||
|
||||
$container->set('auth', new HummingbirdAuth($container));
|
||||
$container->set('util', new Util($container));
|
||||
|
||||
return $container;
|
||||
};
|
||||
|
@ -59,7 +59,7 @@ class RedisDriver implements CacheDriverInterface {
|
||||
*/
|
||||
public function get($key)
|
||||
{
|
||||
return unserialize($this->redis->get($key));
|
||||
return json_decode($this->redis->get($key));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -71,7 +71,7 @@ class RedisDriver implements CacheDriverInterface {
|
||||
*/
|
||||
public function set($key, $value)
|
||||
{
|
||||
$this->redis->set($key, serialize($value));
|
||||
$this->redis->set($key, json_encode($value));
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
@ -14,6 +14,7 @@ namespace Aviat\Ion\Cache\Driver;
|
||||
|
||||
use Aviat\Ion\ConfigInterface;
|
||||
use Aviat\Ion\Cache\CacheDriverInterface;
|
||||
use Aviat\Ion\Exception\ConfigException;
|
||||
use Aviat\Ion\Model\DB;
|
||||
|
||||
/**
|
||||
@ -31,11 +32,18 @@ class SQLDriver extends DB implements CacheDriverInterface {
|
||||
* Create the driver object
|
||||
*
|
||||
* @param ConfigInterface $config
|
||||
* @throws ConfigException
|
||||
*/
|
||||
public function __construct(ConfigInterface $config)
|
||||
{
|
||||
parent::__construct($config);
|
||||
$this->db = \Query($this->db_config['collection']);
|
||||
|
||||
if ( ! array_key_exists('cache', $this->db_config))
|
||||
{
|
||||
throw new ConfigException("Missing '[cache]' section in database config.");
|
||||
}
|
||||
|
||||
$this->db = \Query($this->db_config['cache']);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -54,7 +62,7 @@ class SQLDriver extends DB implements CacheDriverInterface {
|
||||
$row = $query->fetch(\PDO::FETCH_ASSOC);
|
||||
if ( ! empty($row))
|
||||
{
|
||||
return unserialize($row['value']);
|
||||
return json_decode($row['value']);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
@ -71,7 +79,7 @@ class SQLDriver extends DB implements CacheDriverInterface {
|
||||
{
|
||||
$this->db->set([
|
||||
'key' => $key,
|
||||
'value' => serialize($value),
|
||||
'value' => json_encode($value),
|
||||
]);
|
||||
|
||||
$this->db->insert('cache');
|
||||
|
@ -1,19 +1,19 @@
|
||||
<?php
|
||||
/**
|
||||
* Hummingbird Anime Client
|
||||
* Ion
|
||||
*
|
||||
* An API client for Hummingbird to manage anime and manga watch lists
|
||||
* Building blocks for web development
|
||||
*
|
||||
* @package HummingbirdAnimeClient
|
||||
* @package Ion
|
||||
* @author Timothy J. Warren
|
||||
* @copyright Copyright (c) 2015 - 2016
|
||||
* @link https://github.com/timw4mail/HummingBirdAnimeClient
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
namespace Aviat\AnimeClient;
|
||||
namespace Aviat\Ion;
|
||||
|
||||
use Aviat\Ion\ConfigInterface;
|
||||
|
||||
use Aviat\Ion\Exception\ConfigException;
|
||||
|
||||
use InvalidArgumentException;
|
||||
|
||||
@ -22,7 +22,7 @@ use InvalidArgumentException;
|
||||
*/
|
||||
class Config implements ConfigInterface {
|
||||
|
||||
use \Aviat\Ion\ArrayWrapper;
|
||||
use ArrayWrapper;
|
||||
|
||||
/**
|
||||
* Config object
|
||||
@ -46,6 +46,7 @@ class Config implements ConfigInterface {
|
||||
*
|
||||
* @param array|string $key
|
||||
* @return mixed
|
||||
* @throws ConfigException
|
||||
*/
|
||||
public function get($key)
|
||||
{
|
20
src/Aviat/Ion/Exception/ConfigException.php
Normal file
20
src/Aviat/Ion/Exception/ConfigException.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/**
|
||||
* Ion
|
||||
*
|
||||
* Building blocks for web development
|
||||
*
|
||||
* @package Ion
|
||||
* @author Timothy J. Warren
|
||||
* @copyright Copyright (c) 2015 - 2016
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
namespace Aviat\Ion\Exception;
|
||||
|
||||
/**
|
||||
* Exception for bad configuration
|
||||
*/
|
||||
class ConfigException extends \InvalidArgumentException {
|
||||
|
||||
}
|
@ -6,9 +6,9 @@ use Monolog\Handler\TestHandler;
|
||||
use Zend\Diactoros\ServerRequestFactory;
|
||||
use Zend\Diactoros\Response;
|
||||
|
||||
use Aviat\Ion\Config;
|
||||
use Aviat\Ion\Di\Container;
|
||||
use Aviat\AnimeClient\Dispatcher;
|
||||
use Aviat\AnimeClient\Config;
|
||||
use Aviat\AnimeClient\UrlGenerator;
|
||||
|
||||
|
||||
|
@ -1,11 +1,6 @@
|
||||
<?php
|
||||
|
||||
use Aura\Html\HelperLocatorFactory;
|
||||
|
||||
use Aviat\Ion\Friend;
|
||||
use Aviat\Ion\Di\Container;
|
||||
use Aviat\AnimeClient\Helper;
|
||||
use Aviat\AnimeClient\Config;
|
||||
|
||||
use Aviat\AnimeClient\MenuGenerator;
|
||||
|
||||
class MenuGeneratorTest extends AnimeClient_TestCase {
|
||||
|
@ -1,7 +1,8 @@
|
||||
<?php
|
||||
|
||||
use Aviat\Ion\Config;
|
||||
use Aviat\Ion\Friend;
|
||||
use Aviat\AnimeClient\Config;
|
||||
|
||||
use Aviat\AnimeClient\Model\AnimeCollection as AnimeCollectionModel;
|
||||
|
||||
class AnimeCollectionModelTest extends AnimeClient_TestCase {
|
||||
|
@ -1,22 +1,30 @@
|
||||
<?php
|
||||
|
||||
class CoreTest extends AnimeClient_TestCase {
|
||||
class RequirementsTest extends AnimeClient_TestCase {
|
||||
|
||||
public function testPHPVersion()
|
||||
{
|
||||
$this->assertTrue(version_compare(PHP_VERSION, "5.4", "ge"));
|
||||
}
|
||||
|
||||
public function testRequirements()
|
||||
public function testHasGd()
|
||||
{
|
||||
// Check required extensions
|
||||
$this->assertTrue(extension_loaded('gd'));
|
||||
$this->assertTrue(extension_loaded('mcrypt'));
|
||||
}
|
||||
|
||||
// Check for pdo_sqlite
|
||||
public function testHasMcrypt()
|
||||
{
|
||||
$this->assertTrue(extension_loaded('mcrypt'));
|
||||
}
|
||||
|
||||
public function testHasPDO()
|
||||
{
|
||||
$this->assertTrue(class_exists('PDO'));
|
||||
}
|
||||
|
||||
public function testHasPDOSqlite()
|
||||
{
|
||||
$drivers = PDO::getAvailableDrivers();
|
||||
$this->assertTrue(in_array('sqlite', $drivers));
|
||||
}
|
||||
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
<?php
|
||||
|
||||
use Aviat\Ion\Di\Container;
|
||||
use Aviat\AnimeClient\Config;
|
||||
use Aviat\Ion\Config;
|
||||
use Aviat\AnimeClient\UrlGenerator;
|
||||
|
||||
class UrlGeneratorTest extends AnimeClient_TestCase {
|
||||
|
@ -9,7 +9,6 @@ use Zend\Diactoros\ServerRequestFactory;
|
||||
use Zend\Diactoros\Response as HttpResponse;
|
||||
|
||||
use Aviat\AnimeClient\AnimeClient;
|
||||
use Aviat\AnimeClient\Config;
|
||||
|
||||
define('ROOT_DIR', __DIR__ . '/../');
|
||||
define('TEST_DATA_DIR', __DIR__ . '/test_data');
|
||||
@ -62,6 +61,16 @@ class AnimeClient_TestCase extends PHPUnit_Framework_TestCase {
|
||||
'name' => 'default',
|
||||
'database' => '',
|
||||
'file' => ':memory:',
|
||||
],
|
||||
'cache' => [
|
||||
'type' => 'sqlite',
|
||||
'host' => '',
|
||||
'user' => '',
|
||||
'pass' => '',
|
||||
'port' => '',
|
||||
'name' => 'default',
|
||||
'database' => '',
|
||||
'file' => ':memory:',
|
||||
]
|
||||
],
|
||||
'routes' => [
|
||||
|
@ -2,8 +2,7 @@
|
||||
|
||||
require_once('CacheDriverBase.php');
|
||||
|
||||
use Aviat\AnimeClient\Config;
|
||||
use Aviat\Ion\Di\Container;
|
||||
use Aviat\Ion\Config;
|
||||
use Aviat\Ion\Cache\Driver\RedisDriver;
|
||||
|
||||
class CacheRedisDriverTestTwo extends AnimeClient_TestCase {
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
use \Aviat\AnimeClient\Config;
|
||||
use Aviat\Ion\Config;
|
||||
|
||||
class ConfigTest extends AnimeClient_TestCase {
|
||||
|
Loading…
Reference in New Issue
Block a user