Version 5.1 - All the GraphQL #32
@ -149,6 +149,23 @@ return [
|
||||
// Manga Collection Routes
|
||||
// ---------------------------------------------------------------------
|
||||
// ---------------------------------------------------------------------
|
||||
// Other Routes
|
||||
// ---------------------------------------------------------------------
|
||||
'character' => [
|
||||
'path' => '/character/{slug}',
|
||||
'action' => 'index',
|
||||
'params' => [],
|
||||
'tokens' => [
|
||||
'slug' => '[a-z0-9\-]+'
|
||||
]
|
||||
],
|
||||
'user_info' => [
|
||||
'path' => '/me',
|
||||
'action' => 'me',
|
||||
'controller' => 'me',
|
||||
'verb' => 'get',
|
||||
],
|
||||
// ---------------------------------------------------------------------
|
||||
// Default / Shared routes
|
||||
// ---------------------------------------------------------------------
|
||||
'cache_purge' => [
|
||||
|
12
app/views/character.php
Normal file
12
app/views/character.php
Normal file
@ -0,0 +1,12 @@
|
||||
<main class="details">
|
||||
<section class="flex flex-no-wrap">
|
||||
<div>
|
||||
<img class="cover" width="402" height="284" src="<?= $data['image']['original'] ?>" alt="" />
|
||||
</div>
|
||||
<div>
|
||||
<h3><?= $data['name'] ?></h3>
|
||||
|
||||
<p><?= $data['description'] ?></p>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
@ -93,7 +93,7 @@ class Model {
|
||||
* @param string $username
|
||||
* @return string
|
||||
*/
|
||||
public function getUserIdByUsername(string $username = NULL)
|
||||
public function getUserIdByUsername(string $username = NULL): string
|
||||
{
|
||||
if (is_null($username))
|
||||
{
|
||||
@ -119,6 +119,39 @@ class Model {
|
||||
return $cacheItem->get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get information about a character
|
||||
*
|
||||
* @param string $slug
|
||||
* @return array
|
||||
*/
|
||||
public function getCharacter(string $slug): array
|
||||
{
|
||||
$data = $this->getRequest('/characters', [
|
||||
'query' => [
|
||||
'filter' => [
|
||||
'slug' => $slug
|
||||
],
|
||||
// 'include' => 'primaryMedia,castings'
|
||||
]
|
||||
]);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function getUserData(string $username): array
|
||||
{
|
||||
$userId = $this->getUserIdByUsername($username);
|
||||
$data = $this->getRequest("/users/{$userId}", [
|
||||
'query' => [
|
||||
'include' => 'waifu,pinnedPost,blocks,linkedAccounts,profileLinks,mediaFollows,userRoles'
|
||||
]
|
||||
]);
|
||||
// $data['included'] = JsonAPI::organizeIncludes($data['included']);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the access token from the Kitsu API
|
||||
*
|
||||
|
@ -123,6 +123,13 @@ class Controller {
|
||||
$this->baseData['message'] = $this->session->getFlash('message');
|
||||
}
|
||||
|
||||
public function me()
|
||||
{
|
||||
$username = $this->config->get(['kitsu_username']);
|
||||
$model = $this->container->get('kitsu-model');
|
||||
$this->outputJSON($model->getUserData($username));
|
||||
}
|
||||
|
||||
/**
|
||||
* Redirect to the default controller/url from an empty path
|
||||
*
|
||||
|
41
src/Controller/Character.php
Normal file
41
src/Controller/Character.php
Normal file
@ -0,0 +1,41 @@
|
||||
<?php declare(strict_types=1);
|
||||
/**
|
||||
* Hummingbird Anime List Client
|
||||
*
|
||||
* An API client for Kitsu and MyAnimeList to manage anime and manga watch lists
|
||||
*
|
||||
* PHP version 7
|
||||
*
|
||||
* @package HummingbirdAnimeClient
|
||||
* @author Timothy J. Warren <tim@timshomepage.net>
|
||||
* @copyright 2015 - 2017 Timothy J. Warren
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @version 4.0
|
||||
* @link https://git.timshomepage.net/timw4mail/HummingBirdAnimeClient
|
||||
*/
|
||||
|
||||
namespace Aviat\AnimeClient\Controller;
|
||||
|
||||
use Aviat\AnimeClient\Controller as BaseController;
|
||||
|
||||
class Character extends BaseController {
|
||||
|
||||
public function index(string $slug)
|
||||
{
|
||||
$model = $this->container->get('kitsu-model');
|
||||
|
||||
$data = $model->getCharacter($slug);
|
||||
|
||||
if ( ! array_key_exists('data', $data))
|
||||
{
|
||||
return $this->notFound();
|
||||
}
|
||||
|
||||
// $this->outputJSON($data);
|
||||
$this->outputHTML('character', [
|
||||
'title' => $this->config->get('whose_list') .
|
||||
"'s Anime List · Characters · " . $data['data'][0]['attributes']['name'],
|
||||
'data' => $data['data'][0]['attributes']
|
||||
]);
|
||||
}
|
||||
}
|
@ -38,7 +38,8 @@ class Util {
|
||||
'update_form',
|
||||
'login',
|
||||
'logout',
|
||||
'details'
|
||||
'details',
|
||||
'character'
|
||||
];
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user