Version 5.1 - All the GraphQL #32

Closed
timw4mail wants to merge 1160 commits from develop into master
38 changed files with 153 additions and 140 deletions
Showing only changes of commit 5e2a68dc84 - Show all commits

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>
@ -14,9 +14,6 @@
* @link https://github.com/timw4mail/HummingBirdAnimeClient * @link https://github.com/timw4mail/HummingBirdAnimeClient
*/ */
/**
* Bootstrap / Dependency Injection
*/
namespace Aviat\AnimeClient; namespace Aviat\AnimeClient;
use Aura\Html\HelperLocatorFactory; use Aura\Html\HelperLocatorFactory;

View File

@ -3,7 +3,7 @@
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>
@ -12,3 +12,4 @@
* @version 3.1 * @version 3.1
* @link https://github.com/timw4mail/HummingBirdAnimeClient * @link https://github.com/timw4mail/HummingBirdAnimeClient
*/ */

View File

@ -4,7 +4,8 @@ $animeclient_file_patterns = [
'app/config/*.php', 'app/config/*.php',
'app/bootstrap.php', 'app/bootstrap.php',
'src/functions.php', 'src/functions.php',
'src/*.php' 'src/*.php',
'tests/**/*.php'
]; ];
if ( ! function_exists('glob_recursive')) if ( ! function_exists('glob_recursive'))
@ -26,21 +27,30 @@ if ( ! function_exists('glob_recursive'))
function get_text_to_replace($tokens) function get_text_to_replace($tokens)
{ {
if ($tokens[0][0] !== T_OPEN_TAG) $output = '';
// Tokens have the follow structure if arrays:
// [0] => token type constant
// [1] => raw sytax parsed to that token
// [2] => line number
foreach($tokens as $token)
{ {
return NULL; // Since we only care about opening docblocks,
// bail out when we get to the namespace token
if (is_array($token) && $token[0] === T_NAMESPACE)
{
break;
}
if (is_array($token))
{
$token = $token[1];
}
$output .= $token;
} }
// If there is already a docblock, as the second token after the return $output;
// open tag, get the contents of that token to replace
if ($tokens[1][0] === T_DOC_COMMENT)
{
return "<?php\n" . $tokens[1][1];
}
else if ($tokens[1][0] !== T_DOC_COMMENT)
{
return "<?php";
}
} }
function get_tokens($source) function get_tokens($source)
@ -53,11 +63,17 @@ function replace_files(array $files, $template)
foreach ($files as $file) foreach ($files as $file)
{ {
$source = file_get_contents($file); $source = file_get_contents($file);
if (stripos($source, 'namespace') === FALSE)
{
continue;
}
$tokens = get_tokens($source); $tokens = get_tokens($source);
$text_to_replace = get_text_to_replace($tokens); $text_to_replace = get_text_to_replace($tokens);
$header = file_get_contents(__DIR__ . $template); $header = file_get_contents(__DIR__ . $template);
$new_text = "<?php\n{$header}"; $new_text = "<?php declare(strict_types=1);\n{$header}";
$new_source = str_replace($text_to_replace, $new_text, $source); $new_source = str_replace($text_to_replace, $new_text, $source);
file_put_contents($file, $new_source); file_put_contents($file, $new_source);

View File

@ -40,6 +40,6 @@
"consolidation/robo": "~1.0@RC", "consolidation/robo": "~1.0@RC",
"henrikbjorn/lurker": "^1.1.0", "henrikbjorn/lurker": "^1.1.0",
"symfony/var-dumper": "^3.1", "symfony/var-dumper": "^3.1",
"squizlabs/php_codesniffer": "^3.0.0@alpha" "squizlabs/php_codesniffer": "^3.0.0@beta"
} }
} }

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>
@ -13,13 +13,12 @@
* @version 3.1 * @version 3.1
* @link https://github.com/timw4mail/HummingBirdAnimeClient * @link https://github.com/timw4mail/HummingBirdAnimeClient
*/ */
namespace Aviat\AnimeClient; namespace Aviat\AnimeClient;
use Aviat\Ion\Di\ContainerInterface; use Aviat\Ion\Di\{ContainerAware, ContainerInterface};
use Aviat\Ion\View\HttpView; use Aviat\Ion\View\{HtmlView, HttpView, JsonView};
use Aviat\Ion\View\HtmlView; use InvalidArgumentException;
use Aviat\Ion\View\JsonView;
use Doctrine\Instantiator\Exception\InvalidArgumentException;
/** /**
* Controller base, defines output methods * Controller base, defines output methods
@ -28,7 +27,7 @@ use Doctrine\Instantiator\Exception\InvalidArgumentException;
*/ */
class Controller { class Controller {
use \Aviat\Ion\Di\ContainerAware; use ContainerAware;
/** /**
* Cache manager * Cache manager
@ -166,7 +165,7 @@ class Controller {
if (is_null($url)) if (is_null($url))
{ {
$url = ($util->is_view_page()) $url = $util->is_view_page()
? $this->request->url->get() ? $this->request->url->get()
: $server_params['HTTP_REFERER']; : $server_params['HTTP_REFERER'];
} }
@ -197,9 +196,9 @@ class Controller {
* Get a class member * Get a class member
* *
* @param string $key * @param string $key
* @return object * @return mixed
*/ */
public function __get($key) public function __get(string $key)
{ {
$allowed = ['response', 'config']; $allowed = ['response', 'config'];
@ -217,7 +216,7 @@ class Controller {
* @param HtmlView $view * @param HtmlView $view
* @param string $template * @param string $template
* @param array $data * @param array $data
* @throws \InvalidArgumentException * @throws InvalidArgumentException
* @return string * @return string
*/ */
protected function load_partial($view, $template, array $data = []) protected function load_partial($view, $template, array $data = [])
@ -230,17 +229,17 @@ class Controller {
} }
$route = $router->get_route(); $route = $router->get_route();
$data['route_path'] = ($route) ? $router->get_route()->path : ""; $data['route_path'] = $route ? $router->get_route()->path : '';
$template_path = _dir($this->config->get('view_path'), "{$template}.php"); $template_path = _dir($this->config->get('view_path'), "{$template}.php");
if ( ! is_file($template_path)) if ( ! is_file($template_path))
{ {
throw new \InvalidArgumentException("Invalid template : {$template}"); throw new InvalidArgumentException("Invalid template : {$template}");
} }
return $view->render_template($template_path, (array)$data); return $view->renderTemplate($template_path, (array)$data);
} }
/** /**
@ -271,13 +270,13 @@ class Controller {
* @param string $status * @param string $status
* @return void * @return void
*/ */
public function login($status = "") public function login(string $status = '')
{ {
$message = ""; $message = '';
$view = new HtmlView($this->container); $view = new HtmlView($this->container);
if ($status !== "") if ($status !== '')
{ {
$message = $this->show_message($view, 'error', $status); $message = $this->show_message($view, 'error', $status);
} }

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>
@ -13,6 +13,7 @@
* @version 3.1 * @version 3.1
* @link https://github.com/timw4mail/HummingBirdAnimeClient * @link https://github.com/timw4mail/HummingBirdAnimeClient
*/ */
namespace Aviat\AnimeClient\Controller; namespace Aviat\AnimeClient\Controller;
use Aviat\Ion\Json; use Aviat\Ion\Json;

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>
@ -13,6 +13,7 @@
* @version 3.1 * @version 3.1
* @link https://github.com/timw4mail/HummingBirdAnimeClient * @link https://github.com/timw4mail/HummingBirdAnimeClient
*/ */
namespace Aviat\AnimeClient; namespace Aviat\AnimeClient;
use Aviat\Ion\Di\ContainerInterface; use Aviat\Ion\Di\ContainerInterface;

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>
@ -33,17 +33,17 @@ class AnimeListTransformer extends AbstractTransformer {
public function transform($item) public function transform($item)
{ {
$anime =& $item['anime']; $anime =& $item['anime'];
$genres = $this->linearize_genres($item['anime']['genres']); $genres = $this->linearizeGenres($item['anime']['genres']);
$rating = NULL; $rating = NULL;
if ($item['rating']['type'] === 'advanced') if ($item['rating']['type'] === 'advanced')
{ {
$rating = (is_numeric($item['rating']['value'])) $rating = is_numeric($item['rating']['value'])
? intval(2 * $item['rating']['value']) ? (int) 2 * $item['rating']['value']
: '-'; : '-';
} }
$total_episodes = (is_numeric($anime['episode_count'])) $total_episodes = is_numeric($anime['episode_count'])
? $anime['episode_count'] ? $anime['episode_count']
: '-'; : '-';
@ -54,7 +54,7 @@ class AnimeListTransformer extends AbstractTransformer {
// a subset of the main title, don't list the // a subset of the main title, don't list the
// alternate title // alternate title
$not_subset = stripos($anime['title'], $anime['alternate_title']) === FALSE; $not_subset = stripos($anime['title'], $anime['alternate_title']) === FALSE;
$diff = levenshtein($anime['title'], $anime['alternate_title']); $diff = levenshtein($anime['title'], $anime['alternate_title'] ?? '');
if ($not_subset && $diff >= 5) if ($not_subset && $diff >= 5)
{ {
$alternate_title = $anime['alternate_title']; $alternate_title = $anime['alternate_title'];
@ -129,14 +129,14 @@ class AnimeListTransformer extends AbstractTransformer {
/** /**
* Simplify structure of genre list * Simplify structure of genre list
* *
* @param array $raw_genres * @param array $rawGenres
* @return array * @return array
*/ */
protected function linearize_genres(array $raw_genres) protected function linearizeGenres(array $rawGenres): array
{ {
$genres = []; $genres = [];
foreach ($raw_genres as $genre) foreach ($rawGenres as $genre)
{ {
$genres[] = $genre['name']; $genres[] = $genre['name'];
} }

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>
@ -16,6 +16,7 @@
namespace Aviat\AnimeClient; namespace Aviat\AnimeClient;
use Aviat\Ion\{ArrayWrapper, StringWrapper};
use Aviat\Ion\Di\ContainerInterface; use Aviat\Ion\Di\ContainerInterface;
/** /**
@ -23,8 +24,8 @@ use Aviat\Ion\Di\ContainerInterface;
*/ */
class MenuGenerator extends UrlGenerator { class MenuGenerator extends UrlGenerator {
use \Aviat\Ion\StringWrapper; use ArrayWrapper;
use \Aviat\Ion\ArrayWrapper; use StringWrapper;
/** /**
* Html generation helper * Html generation helper
@ -87,7 +88,7 @@ class MenuGenerator extends UrlGenerator {
$parsed_config = $this->parse_config($menus); $parsed_config = $this->parse_config($menus);
// Bail out early on invalid menu // Bail out early on invalid menu
if ( ! $this->arr($parsed_config)->has_key($menu)) if ( ! $this->arr($parsed_config)->hasKey($menu))
{ {
return ''; return '';
} }

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>
@ -13,6 +13,7 @@
* @version 3.1 * @version 3.1
* @link https://github.com/timw4mail/HummingBirdAnimeClient * @link https://github.com/timw4mail/HummingBirdAnimeClient
*/ */
namespace Aviat\AnimeClient\Model; namespace Aviat\AnimeClient\Model;
use GuzzleHttp\Client; use GuzzleHttp\Client;
@ -160,7 +161,7 @@ class API extends Model {
* @param string $sort_key * @param string $sort_key
* @return void * @return void
*/ */
protected function sort_by_name(&$array, $sort_key) protected function sort_by_name(array &$array, string $sort_key)
{ {
$sort = []; $sort = [];
@ -180,7 +181,7 @@ class API extends Model {
* @param string $password * @param string $password
* @return string|false * @return string|false
*/ */
public function authenticate($username, $password) public function authenticate(string $username, string $password)
{ {
$response = $this->post(AnimeClient::HUMMINGBIRD_AUTH_URL, [ $response = $this->post(AnimeClient::HUMMINGBIRD_AUTH_URL, [
'form_params' => [ 'form_params' => [
@ -191,7 +192,7 @@ class API extends Model {
if ($response->getStatusCode() === 201) if ($response->getStatusCode() === 201)
{ {
return json_decode($response->getBody(), TRUE); return json_decode((string)$response->getBody(), TRUE);
} }
return FALSE; return FALSE;
@ -205,7 +206,7 @@ class API extends Model {
* @param string $status * @param string $status
* @return array * @return array
*/ */
protected function _get_list_from_api($status) protected function _get_list_from_api(string $status): array
{ {
return []; return [];
} }

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>
@ -208,13 +208,13 @@ class Anime extends API {
* @param string $status * @param string $status
* @return array * @return array
*/ */
protected function _get_list_from_api($status = "all") protected function _get_list_from_api(string $status = "all"): array
{ {
$config = [ $config = [
'allow_redirects' => FALSE 'allow_redirects' => FALSE
]; ];
if ($status !== "all") if ($status !== 'all')
{ {
$config['query']['status'] = $status; $config['query']['status'] = $status;
} }
@ -266,7 +266,7 @@ class Anime extends API {
{ {
$api_data = Json::decode($response->getBody(), TRUE); $api_data = Json::decode($response->getBody(), TRUE);
$transformer = new AnimeListTransformer(); $transformer = new AnimeListTransformer();
$transformed = $transformer->transform_collection($api_data); $transformed = $transformer->transformCollection($api_data);
return $transformed; return $transformed;
} }
} }

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>
@ -13,6 +13,7 @@
* @version 3.1 * @version 3.1
* @link https://github.com/timw4mail/HummingBirdAnimeClient * @link https://github.com/timw4mail/HummingBirdAnimeClient
*/ */
namespace Aviat\AnimeClient\Model; namespace Aviat\AnimeClient\Model;
use Aviat\Ion\Di\ContainerInterface; use Aviat\Ion\Di\ContainerInterface;

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>
@ -16,11 +16,11 @@
namespace Aviat\AnimeClient\Model; namespace Aviat\AnimeClient\Model;
use GuzzleHttp\Cookie\SetCookie;
use Aviat\Ion\Json;
use Aviat\AnimeClient\Hummingbird\Transformer; use Aviat\AnimeClient\Hummingbird\Transformer;
use Aviat\AnimeClient\Hummingbird\Enum\MangaReadingStatus; use Aviat\AnimeClient\Hummingbird\Enum\MangaReadingStatus;
use Aviat\Ion\Json;
use GuzzleHttp\Cookie\SetCookie;
use RuntimeException;
/** /**
* Model for handling requests dealing with the manga list * Model for handling requests dealing with the manga list
@ -59,7 +59,7 @@ class Manga extends API {
* @param string|null $json * @param string|null $json
* @return array * @return array
*/ */
protected function _manga_api_call($type, $url, $json = NULL) protected function _manga_api_call(string $type, string $url, $json = NULL): array
{ {
$token = $this->container->get('auth') $token = $this->container->get('auth')
->get_auth_token(); ->get_auth_token();
@ -144,7 +144,7 @@ class Manga extends API {
* *
* @param string $name * @param string $name
* @return array * @return array
* @throws \RuntimeException * @throws RuntimeException
*/ */
public function search($name) public function search($name)
{ {
@ -162,10 +162,10 @@ class Manga extends API {
if ((int) $response->getStatusCode() !== 200) if ((int) $response->getStatusCode() !== 200)
{ {
$logger->warning("Non 200 response for search api call"); $logger->warning('Non 200 response for search api call');
$logger->warning($response->getBody()); $logger->warning($response->getBody());
throw new \RuntimeException($response->getEffectiveUrl()); throw new RuntimeException($response->getEffectiveUrl());
} }
return Json::decode($response->getBody(), TRUE); return Json::decode($response->getBody(), TRUE);
@ -189,7 +189,7 @@ class Manga extends API {
* @param string $status * @param string $status
* @return array * @return array
*/ */
public function _get_list_from_api($status = "All") public function _get_list_from_api(string $status = "All"): array
{ {
$config = [ $config = [
'query' => [ 'query' => [
@ -220,11 +220,9 @@ class Manga extends API {
return []; return [];
} }
$zippered_data = $this->zipper_lists($api_data); $zipperedData = $this->zipperLists($api_data);
$transformer = new Transformer\MangaListTransformer(); $transformer = new Transformer\MangaListTransformer();
$transformed_data = $transformer->transform_collection($zippered_data); return $transformer->transformCollection($zipperedData);
return $transformed_data;
} }
/** /**
@ -281,7 +279,7 @@ class Manga extends API {
* @param array $raw_data * @param array $raw_data
* @return array * @return array
*/ */
private function zipper_lists($raw_data) private function zipperLists($raw_data)
{ {
return (new Transformer\MangaListsZipper($raw_data))->transform(); return (new Transformer\MangaListsZipper($raw_data))->transform();
} }

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>
@ -13,6 +13,7 @@
* @version 3.1 * @version 3.1
* @link https://github.com/timw4mail/HummingBirdAnimeClient * @link https://github.com/timw4mail/HummingBirdAnimeClient
*/ */
namespace Aviat\AnimeClient; namespace Aviat\AnimeClient;
use Aviat\Ion\Di\ContainerInterface; use Aviat\Ion\Di\ContainerInterface;

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>
@ -13,6 +13,7 @@
* @version 3.1 * @version 3.1
* @link https://github.com/timw4mail/HummingBirdAnimeClient * @link https://github.com/timw4mail/HummingBirdAnimeClient
*/ */
namespace Aviat\AnimeClient; namespace Aviat\AnimeClient;
use Aviat\Ion\Di\ContainerInterface; use Aviat\Ion\Di\ContainerInterface;

View File

@ -1,10 +1,10 @@
<?php <?php declare(strict_types=1);
/** /**
* Hummingbird Anime Client * Hummingbird Anime Client
* *
* An API client for Hummingbird to manage anime and manga watch lists * An API client for Hummingbird to manage anime and manga watch lists
* *
* PHP version 5.6 * PHP version 7
* *
* @package HummingbirdAnimeClient * @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net> * @author Timothy J. Warren <tim@timshomepage.net>
@ -91,7 +91,7 @@ class Util {
{ {
$url = $this->container->get('request') $url = $this->container->get('request')
->getUri(); ->getUri();
$page_segments = explode("/", $url); $page_segments = explode("/", (string) $url);
$intersect = array_intersect($page_segments, self::$form_pages); $intersect = array_intersect($page_segments, self::$form_pages);

View File

@ -1,11 +1,7 @@
<?php <?php
use GuzzleHttp\Psr7\Response;
use Aviat\Ion\Friend; use Aviat\Ion\Friend;
use Aviat\Ion\Json; use Aviat\Ion\Json;
use Aviat\Ion\Di\ContainerInterface;
use Aviat\AnimeClient\Model\Manga as MangaModel;
use Aviat\AnimeClient\Hummingbird\Enum\MangaReadingStatus;
class MangaModelTest extends AnimeClient_TestCase { class MangaModelTest extends AnimeClient_TestCase {
@ -22,7 +18,7 @@ class MangaModelTest extends AnimeClient_TestCase {
$raw_data = Json::decodeFile($this->mockDir . '/manga.json'); $raw_data = Json::decodeFile($this->mockDir . '/manga.json');
$expected = Json::decodeFile($this->mockDir . '/manga-zippered.json'); $expected = Json::decodeFile($this->mockDir . '/manga-zippered.json');
$this->assertEquals($expected, $this->model->zipper_lists($raw_data)); $this->assertEquals($expected, $this->model->zipperLists($raw_data));
} }
public function testMapByStatus() public function testMapByStatus()

View File

@ -36,7 +36,7 @@ class AnimeListTransformerTest extends AnimeClient_TestCase {
*/ */
public function testLinearizeGenres($original, $expected) public function testLinearizeGenres($original, $expected)
{ {
$actual = $this->transformerFriend->linearize_genres($original); $actual = $this->transformerFriend->linearizeGenres($original);
$this->assertEquals($expected, $actual); $this->assertEquals($expected, $actual);
} }
@ -44,8 +44,7 @@ class AnimeListTransformerTest extends AnimeClient_TestCase {
{ {
$json = Json::decodeFile($this->start_file); $json = Json::decodeFile($this->start_file);
$expected = Json::decodeFile($this->res_file); $expected = Json::decodeFile($this->res_file);
$actual = $this->transformer->transform_collection($json); $actual = $this->transformer->transformCollection($json);
//file_put_contents($this->res_file, json_encode($actual));
$this->assertEquals($expected, $actual); $this->assertEquals($expected, $actual);
} }
} }

View File

@ -19,7 +19,7 @@ class MangaListTransformerTest extends AnimeClient_TestCase {
$orig_json = Json::decodeFile($this->start_file); $orig_json = Json::decodeFile($this->start_file);
$expected = Json::decodeFile($this->res_file); $expected = Json::decodeFile($this->res_file);
$actual = $this->transformer->transform_collection($orig_json); $actual = $this->transformer->transformCollection($orig_json);
$this->assertEquals($expected, $actual); $this->assertEquals($expected, $actual);
} }

View File

@ -150,7 +150,7 @@ class MockBaseApiModel extends BaseApiModel {
use MockInjectionTrait; use MockInjectionTrait;
protected $base_url = 'https://httpbin.org/'; protected $base_url = 'https://httpbin.org/';
protected function _get_list_from_api($status) protected function _get_list_from_api(string $status): array
{ {
return []; return [];
} }