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