From 7559f79ef692da69bf4a1c490ea44d36947196cd Mon Sep 17 00:00:00 2001 From: "Timothy J. Warren" Date: Mon, 2 Oct 2023 11:48:34 -0400 Subject: [PATCH] Various tweaks --- src/AnimeClient/API/Anilist/Model.php | 2 +- src/AnimeClient/RoutingBase.php | 9 ++++++++- src/AnimeClient/UrlGenerator.php | 17 ++++++++++++++--- src/AnimeClient/constants.php | 4 ++-- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/AnimeClient/API/Anilist/Model.php b/src/AnimeClient/API/Anilist/Model.php index 6d0493c9..292f4ad8 100644 --- a/src/AnimeClient/API/Anilist/Model.php +++ b/src/AnimeClient/API/Anilist/Model.php @@ -106,7 +106,7 @@ final class Model public function createListItem(array $data, string $type = 'anime'): ?Request { $mediaId = $this->getMediaId($data, $type); - if ($mediaId === NULL) + if ($mediaId === NULL || $mediaId === "undefined") { return NULL; } diff --git a/src/AnimeClient/RoutingBase.php b/src/AnimeClient/RoutingBase.php index 728eac83..e23cb81f 100644 --- a/src/AnimeClient/RoutingBase.php +++ b/src/AnimeClient/RoutingBase.php @@ -14,6 +14,7 @@ namespace Aviat\AnimeClient; +use Aura\Router\Generator; use Aviat\Ion\ConfigInterface; use Aviat\Ion\Di\ContainerInterface; use Aviat\Ion\Di\Exception\{ContainerException, NotFoundException}; @@ -24,7 +25,7 @@ use Psr\Http\Message\ServerRequestInterface; /** * Base for routing/url classes */ -class RoutingBase +abstract class RoutingBase { /** * Config Object @@ -36,6 +37,11 @@ class RoutingBase */ protected ServerRequestInterface $request; + /** + * Aura url generator + */ + protected Generator $routerUrl; + /** * Constructor * @@ -47,6 +53,7 @@ class RoutingBase { $this->config = $container->get('config'); $this->request = $container->get('request'); + $this->routerUrl = $container->get('aura-router')->getGenerator(); } /** diff --git a/src/AnimeClient/UrlGenerator.php b/src/AnimeClient/UrlGenerator.php index 7a902ba9..e90a6bfd 100644 --- a/src/AnimeClient/UrlGenerator.php +++ b/src/AnimeClient/UrlGenerator.php @@ -54,6 +54,11 @@ class UrlGenerator extends RoutingBase return implode('/', $args); } + public function fromRoute(string $route, array $args = []): string + { + return $this->hostUrl($this->routerUrl->generate($route, $args)); + } + /** * Generate a proper url from the path */ @@ -81,9 +86,7 @@ class UrlGenerator extends RoutingBase $path = implode('/', $pathSegments); - $scheme = $this->config->get('secure_urls') !== FALSE ? 'https:' : 'http:'; - - return "{$scheme}//{$this->host}/{$path}"; + return $this->hostUrl($path); } /** @@ -103,6 +106,14 @@ class UrlGenerator extends RoutingBase throw new InvalidArgumentException("Invalid default type: '{$type}'"); } + + private function hostUrl(string $path): string + { + $path = trim($path, '/'); + $scheme = $this->config->get('secure_urls') !== FALSE ? 'https:' : 'http:'; + + return "{$scheme}//{$this->host}/{$path}"; + } } // End of UrlGenerator.php diff --git a/src/AnimeClient/constants.php b/src/AnimeClient/constants.php index 7224a985..7d8471eb 100644 --- a/src/AnimeClient/constants.php +++ b/src/AnimeClient/constants.php @@ -25,9 +25,9 @@ const SRC_DIR = __DIR__; const USER_AGENT = "Tim's Anime Client/5.2"; // Regex patterns -const ALPHA_SLUG_PATTERN = '[a-z_]+'; +const ALPHA_SLUG_PATTERN = '[a-zA-Z_]+'; const NUM_PATTERN = '[0-9]+'; -const SLUG_PATTERN = '[a-z0-9\-]+'; +const SLUG_PATTERN = '[a-zA-Z0-9\-]+'; const SLUG_SPACE_PATTERN = '[a-zA-Z_\- ]+'; // Why doesn't this already exist?