Version 5.1 - All the GraphQL #32
@ -34,7 +34,6 @@ class Manga extends Controller {
|
|||||||
public function __construct(ContainerInterface $container)
|
public function __construct(ContainerInterface $container)
|
||||||
{
|
{
|
||||||
parent::__construct($container);
|
parent::__construct($container);
|
||||||
$config = $container->get('config');
|
|
||||||
$this->model = new MangaModel($container);
|
$this->model = new MangaModel($container);
|
||||||
$this->base_data = array_merge($this->base_data, [
|
$this->base_data = array_merge($this->base_data, [
|
||||||
'menu_name' => 'manga_list',
|
'menu_name' => 'manga_list',
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace Aviat\AnimeClient\Controller;
|
|
||||||
|
|
||||||
use Aviat\Ion\Di\ContainerInterface;
|
|
||||||
use Aviat\AnimeClient\Controller;
|
|
||||||
|
|
||||||
class Stats extends Controller {
|
|
||||||
|
|
||||||
}
|
|
||||||
// End of Stats.php
|
|
@ -53,16 +53,6 @@ class MenuGenerator extends UrlGenerator {
|
|||||||
*/
|
*/
|
||||||
protected function parse_config()
|
protected function parse_config()
|
||||||
{
|
{
|
||||||
// Note: Children menus have urls based on the
|
|
||||||
// current url path
|
|
||||||
/*
|
|
||||||
parsed = {
|
|
||||||
menu_name: {
|
|
||||||
title: 'full_url_path'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
$parsed = [];
|
$parsed = [];
|
||||||
|
|
||||||
foreach ($this->menus as $name => $menu)
|
foreach ($this->menus as $name => $menu)
|
||||||
|
@ -68,11 +68,7 @@ class Model {
|
|||||||
// Cache the file if it doesn't already exist
|
// Cache the file if it doesn't already exist
|
||||||
if ( ! file_exists($cached_path))
|
if ( ! file_exists($cached_path))
|
||||||
{
|
{
|
||||||
/*if (ini_get('allow_url_fopen'))
|
if (function_exists('curl_init'))
|
||||||
{
|
|
||||||
copy($api_path, $cached_path);
|
|
||||||
}
|
|
||||||
else*/if (function_exists('curl_init'))
|
|
||||||
{
|
{
|
||||||
$ch = curl_init($api_path);
|
$ch = curl_init($api_path);
|
||||||
$fp = fopen($cached_path, 'wb');
|
$fp = fopen($cached_path, 'wb');
|
||||||
@ -84,6 +80,10 @@ class Model {
|
|||||||
curl_close($ch);
|
curl_close($ch);
|
||||||
fclose($fp);
|
fclose($fp);
|
||||||
}
|
}
|
||||||
|
else if (ini_get('allow_url_fopen'))
|
||||||
|
{
|
||||||
|
copy($api_path, $cached_path);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new DomainException("Couldn't cache images because they couldn't be downloaded.");
|
throw new DomainException("Couldn't cache images because they couldn't be downloaded.");
|
||||||
|
@ -99,7 +99,7 @@ class Manga extends API {
|
|||||||
];
|
];
|
||||||
|
|
||||||
$response = $this->client->get('manga_library_entries', $config);
|
$response = $this->client->get('manga_library_entries', $config);
|
||||||
$data = $this->_check_cache($status, $response);
|
$data = $this->_check_cache($response);
|
||||||
$output = $this->map_by_status($data);
|
$output = $this->map_by_status($data);
|
||||||
|
|
||||||
return (array_key_exists($status, $output)) ? $output[$status] : $output;
|
return (array_key_exists($status, $output)) ? $output[$status] : $output;
|
||||||
@ -108,11 +108,10 @@ class Manga extends API {
|
|||||||
/**
|
/**
|
||||||
* Check the status of the cache and return the appropriate response
|
* Check the status of the cache and return the appropriate response
|
||||||
*
|
*
|
||||||
* @param string $status
|
|
||||||
* @param \GuzzleHttp\Message\Response $response
|
* @param \GuzzleHttp\Message\Response $response
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
private function _check_cache($status, $response)
|
private function _check_cache($response)
|
||||||
{
|
{
|
||||||
// Bail out early if there isn't any manga data
|
// Bail out early if there isn't any manga data
|
||||||
$api_data = json_decode($response->getBody(), TRUE);
|
$api_data = json_decode($response->getBody(), TRUE);
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Anime API Model
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Aviat\AnimeClient\Model;
|
|
||||||
|
|
||||||
use Avait\Ion\Di\ContainerInterface;
|
|
||||||
use Aviat\AnimeClient\Model\DB;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Base Model for stats about lists and collection(s)
|
|
||||||
*/
|
|
||||||
class Stats extends DB {
|
|
||||||
|
|
||||||
use StatsChartsTrait;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*
|
|
||||||
* @param Container $container
|
|
||||||
*/
|
|
||||||
public function __construct(ContainerInterface $container)
|
|
||||||
{
|
|
||||||
parent::__construct($container);
|
|
||||||
$this->chartSetup();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
// End of Stats.php
|
|
@ -1,29 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace Aviat\AnimeClient\Model;
|
|
||||||
|
|
||||||
use CpChart\Services\pChartFactory;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Trait for chart generation
|
|
||||||
*/
|
|
||||||
trait StatsChartsTrait {
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var pChartFactory
|
|
||||||
*/
|
|
||||||
protected $pchart;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initial setup method
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
protected function chartSetup()
|
|
||||||
{
|
|
||||||
$this->pchart = new pChartFactory();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
// End of StatsChartsTrait.php
|
|
@ -90,7 +90,6 @@ class UrlGenerator extends RoutingBase {
|
|||||||
*/
|
*/
|
||||||
public function full_url($path = "", $type = "anime")
|
public function full_url($path = "", $type = "anime")
|
||||||
{
|
{
|
||||||
$config_path = trim($this->__get("{$type}_path"), "/");
|
|
||||||
$config_default_route = $this->__get("default_{$type}_path");
|
$config_default_route = $this->__get("default_{$type}_path");
|
||||||
|
|
||||||
// Remove beginning/trailing slashes
|
// Remove beginning/trailing slashes
|
||||||
|
@ -248,7 +248,6 @@ class DispatcherTest extends AnimeClient_TestCase {
|
|||||||
'anime' => 'Aviat\AnimeClient\Controller\Anime',
|
'anime' => 'Aviat\AnimeClient\Controller\Anime',
|
||||||
'manga' => 'Aviat\AnimeClient\Controller\Manga',
|
'manga' => 'Aviat\AnimeClient\Controller\Manga',
|
||||||
'collection' => 'Aviat\AnimeClient\Controller\Collection',
|
'collection' => 'Aviat\AnimeClient\Controller\Collection',
|
||||||
'stats' => 'Aviat\AnimeClient\Controller\Stats'
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
'empty_controller_list' => [
|
'empty_controller_list' => [
|
||||||
|
@ -23,13 +23,29 @@ class ArrayTypeTest extends AnimeClient_TestCase {
|
|||||||
'keys' => 'array_keys',
|
'keys' => 'array_keys',
|
||||||
'merge' => 'array_merge',
|
'merge' => 'array_merge',
|
||||||
'pad' => 'array_pad',
|
'pad' => 'array_pad',
|
||||||
'product' => 'array_product',
|
|
||||||
'random' => 'array_rand',
|
'random' => 'array_rand',
|
||||||
'reduce' => 'array_reduce',
|
'reduce' => 'array_reduce',
|
||||||
'reverse' => 'array_reverse',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
'array_merge' => [
|
||||||
|
'method' => 'merge',
|
||||||
|
'array' => [1, 3, 5, 7],
|
||||||
|
'args' => [[2, 4, 6, 8]],
|
||||||
|
'expected' => [1, 3, 5, 7, 2, 4, 6, 8]
|
||||||
|
],
|
||||||
|
'array_product' => [
|
||||||
|
'method' => 'product',
|
||||||
|
'array' => [1, 2, 3],
|
||||||
|
'args' => [],
|
||||||
|
'expected' => 6
|
||||||
|
],
|
||||||
|
'array_reverse' => [
|
||||||
|
'method' => 'reverse',
|
||||||
|
'array' => [1, 2, 3, 4, 5],
|
||||||
|
'args' => [],
|
||||||
|
'expected' => [5, 4, 3, 2, 1]
|
||||||
|
],
|
||||||
'array_sum' => [
|
'array_sum' => [
|
||||||
'method' => 'sum',
|
'method' => 'sum',
|
||||||
'array' => [1, 2, 3, 4, 5, 6],
|
'array' => [1, 2, 3, 4, 5, 6],
|
||||||
@ -40,7 +56,7 @@ class ArrayTypeTest extends AnimeClient_TestCase {
|
|||||||
'method' => 'unique',
|
'method' => 'unique',
|
||||||
'array' => [1, 1, 3, 2, 2, 2, 3, 3, 5],
|
'array' => [1, 1, 3, 2, 2, 2, 3, 3, 5],
|
||||||
'args' => [SORT_REGULAR],
|
'args' => [SORT_REGULAR],
|
||||||
'expected' => [0=>1, 2=>3, 3=>2, 8=>5]
|
'expected' => [0 => 1, 2 => 3, 3 => 2, 8 => 5]
|
||||||
],
|
],
|
||||||
'array_values' => [
|
'array_values' => [
|
||||||
'method' => 'values',
|
'method' => 'values',
|
||||||
@ -63,6 +79,16 @@ class ArrayTypeTest extends AnimeClient_TestCase {
|
|||||||
$this->assertEquals($expected, $actual);
|
$this->assertEquals($expected, $actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testMap()
|
||||||
|
{
|
||||||
|
$obj = $this->arr([1, 2, 3]);
|
||||||
|
$actual = $obj->map(function($item) {
|
||||||
|
return $item * 2;
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->assertEquals([2, 4, 6], $actual);
|
||||||
|
}
|
||||||
|
|
||||||
public function testBadCall()
|
public function testBadCall()
|
||||||
{
|
{
|
||||||
$obj = $this->arr([]);
|
$obj = $this->arr([]);
|
||||||
@ -71,16 +97,6 @@ class ArrayTypeTest extends AnimeClient_TestCase {
|
|||||||
$obj->foo();
|
$obj->foo();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMerge()
|
|
||||||
{
|
|
||||||
$obj = $this->arr([1, 3, 5, 7]);
|
|
||||||
$even_array = [2, 4, 6, 8];
|
|
||||||
$expected = [1, 3, 5, 7, 2, 4, 6, 8];
|
|
||||||
|
|
||||||
$actual = $obj->merge($even_array);
|
|
||||||
$this->assertEquals($expected, $actual);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testShuffle()
|
public function testShuffle()
|
||||||
{
|
{
|
||||||
$original = [1, 2, 3, 4];
|
$original = [1, 2, 3, 4];
|
||||||
|
Loading…
Reference in New Issue
Block a user