Compare commits

...

2 Commits

Author SHA1 Message Date
Timothy Warren 4d26acea5b Use the same API client instance across the codebase
timw4mail/HummingBirdAnimeClient/PR-14 This commit looks good Details
2018-12-07 10:24:42 -05:00
Timothy Warren a38c9712e6 Don't show media tabs with no media on character page, make stats on user page more resiliant 2018-12-07 10:22:16 -05:00
4 changed files with 56 additions and 27 deletions

View File

@ -27,10 +27,10 @@ use Aviat\AnimeClient\API\Kitsu;
</div> </div>
</section> </section>
<?php if (array_key_exists('anime', $data['media']) || array_key_exists('manga', $data['media'])): ?> <?php if ( ! (empty($data['media']['anime']) || empty($data['media']['manga']))): ?>
<h3>Media</h3> <h3>Media</h3>
<div class="tabs"> <div class="tabs">
<?php if (array_key_exists('anime', $data['media'])): ?> <?php if ( ! empty($data['media']['anime'])): ?>
<input checked="checked" type="radio" id="media-anime" name="media-tabs" /> <input checked="checked" type="radio" id="media-anime" name="media-tabs" />
<label for="media-anime">Anime</label> <label for="media-anime">Anime</label>
@ -58,7 +58,7 @@ use Aviat\AnimeClient\API\Kitsu;
</section> </section>
<?php endif ?> <?php endif ?>
<?php if (array_key_exists('manga', $data['media'])): ?> <?php if ( ! empty($data['media']['manga'])): ?>
<input type="radio" id="media-manga" name="media-tabs" /> <input type="radio" id="media-manga" name="media-tabs" />
<label for="media-manga">Manga</label> <label for="media-manga">Manga</label>

View File

@ -131,19 +131,38 @@ final class UserTransformer extends AbstractTransformer {
return $output; return $output;
} }
private function organizeStats($stats, $data): array private function organizeStats($stats, $data = []): array
{ {
// $timeOnAnime = $this->formatAnimeTime($orgData['attributes']['lifeSpentOnAnime']); $animeStats = [];
$mangaStats = [];
$otherStats = [];
return [ if (array_key_exists('anime-amount-consumed', $stats))
'Time spent watching anime:' => $this->formatAnimeTime($stats['anime-amount-consumed']['time']), {
'Anime series watched:' => number_format($stats['anime-amount-consumed']['media']), $animeStats = [
'Anime episodes watched:' => number_format($stats['anime-amount-consumed']['units']), 'Time spent watching anime:' => $this->formatAnimeTime($stats['anime-amount-consumed']['time']),
'Manga series read:' => number_format($stats['manga-amount-consumed']['media']), 'Anime series watched:' => number_format($stats['anime-amount-consumed']['media']),
'Manga chapters read:' => number_format($stats['manga-amount-consumed']['units']), 'Anime episodes watched:' => number_format($stats['anime-amount-consumed']['units']),
'Posts:' => number_format($data['postsCount']), ];
'Comments:' => number_format($data['commentsCount']), }
'Media Rated:' => number_format($data['ratingsCount']),
]; if (array_key_exists('manga-amount-consumed', $stats))
{
$mangaStats = [
'Manga series read:' => number_format($stats['manga-amount-consumed']['media']),
'Manga chapters read:' => number_format($stats['manga-amount-consumed']['units']),
];
}
if ( ! empty($data))
{
$otherStats = [
'Posts:' => number_format($data['postsCount']),
'Comments:' => number_format($data['commentsCount']),
'Media Rated:' => number_format($data['ratingsCount']),
];
}
return array_merge($animeStats, $mangaStats, $otherStats);
} }
} }

View File

@ -18,8 +18,7 @@ namespace Aviat\AnimeClient\API;
use function Amp\call; use function Amp\call;
use function Amp\Promise\{all, wait}; use function Amp\Promise\{all, wait};
use function Aviat\AnimeClient\getApiClient;
use Amp\Artax\{Client, DefaultClient};
/** /**
* Class to simplify making and validating simultaneous requests * Class to simplify making and validating simultaneous requests
@ -72,10 +71,7 @@ final class ParallelAPIRequest {
*/ */
public function makeRequests(): array public function makeRequests(): array
{ {
$client = new DefaultClient(); $client = getApiClient();
// Timeouts suck
$client->setOption(Client::OP_TRANSFER_TIMEOUT, 0);
$promises = []; $promises = [];
@ -98,10 +94,7 @@ final class ParallelAPIRequest {
*/ */
public function getResponses(): array public function getResponses(): array
{ {
$client = new DefaultClient(); $client = getApiClient();
// Timeouts suck
$client->setOption(Client::OP_TRANSFER_TIMEOUT, 0);
$promises = []; $promises = [];

View File

@ -207,6 +207,24 @@ function checkFolderPermissions(ConfigInterface $config): array
return $errors; return $errors;
} }
/**
* Get an API Client, with better defaults
*
* @return DefaultClient
*/
function getApiClient ()
{
static $client;
if ($client === NULL)
{
$client = new DefaultClient;
$client->setOption(Client::OP_TRANSFER_TIMEOUT, 0);
}
return $client;
}
/** /**
* Simplify making a request with Artax * Simplify making a request with Artax
* *
@ -216,8 +234,7 @@ function checkFolderPermissions(ConfigInterface $config): array
*/ */
function getResponse ($request): Response function getResponse ($request): Response
{ {
$client = new DefaultClient; $client = getApiClient();
$client->setOption(Client::OP_TRANSFER_TIMEOUT, 0);
return wait($client->request($request)); return wait($client->request($request));
} }