|
|
@@ -0,0 +1,48 @@ |
|
|
|
<?php |
|
|
|
|
|
|
|
namespace App\Knockout; |
|
|
|
|
|
|
|
use Illuminate\Support\Facades\Cache; |
|
|
|
|
|
|
|
class Stat { |
|
|
|
|
|
|
|
public $users; |
|
|
|
public $posts; |
|
|
|
public $threads; |
|
|
|
public $ratings; |
|
|
|
|
|
|
|
public static function unwrap($stat) |
|
|
|
{ |
|
|
|
$s = new self(); |
|
|
|
|
|
|
|
$s->users = $stat->userCount; |
|
|
|
$s->posts = $stat->postCount; |
|
|
|
$s->threads = $stat->threadCount; |
|
|
|
$s->ratings = $stat->ratingsCount; |
|
|
|
|
|
|
|
return $s; |
|
|
|
} |
|
|
|
|
|
|
|
private static function requestAll(): Dataset |
|
|
|
{ |
|
|
|
$data = (new AbstractData)->httpGet('/stats'); |
|
|
|
$json = json_decode($data); |
|
|
|
$record = self::unwrap($json); |
|
|
|
return (new Dataset($record)); |
|
|
|
} |
|
|
|
|
|
|
|
public static function updateAll(): Dataset |
|
|
|
{ |
|
|
|
$data = self::requestAll(); |
|
|
|
Cache::put('stats', $data, 7200); |
|
|
|
return $data; |
|
|
|
} |
|
|
|
|
|
|
|
public static function all(): Dataset |
|
|
|
{ |
|
|
|
return Cache::get('stats', function() { |
|
|
|
return self::updateAll(); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
} |