X-Git-Url: http://git.shiar.nl/sc2-widget/blobdiff_plain/b4c80b59335b9905191da1e9be35e82487ff36e7..ae31cf0d5d4533c0f3dc35b75d7ff374e135c24f:/widget.php diff --git a/widget.php b/widget.php index 736a7b1..c996111 100644 --- a/widget.php +++ b/widget.php @@ -17,15 +17,31 @@ function error($message, $status = 500) exit; } -$request = trim($_SERVER['PATH_INFO'], '/'); -$target = "$request.json"; -if (!file_exists($target)) { - if (!is_numeric($request)) { +$request = trim($_GET['clan'] ?? $_SERVER['PATH_INFO'], '/'); +$target = "data/$request.json"; +$last = file_exists($target) ? lstat($target)['mtime'] : 0; + +if ($last < time() - 3600) { + $recipe = NULL; + if (is_numeric($request)) { + $recipe = $request; + } + elseif ($last) { + if ($data = json_decode(file_get_contents($target), true)) { + $profiles = array_column($data['members'], 'profileId'); + #TODO: reduce profiles by checking ladder presence + $recipe = join(' ', array_merge([$request], $profiles)); + } + } + else { error("Unknown profile request $request", 400); } - system("./getsc2clan $request | sponge $target", $exitcode); - if ($exitcode) { - error("No results for profile id $request from Blizzard", 503); + + if ($recipe) { + system("./getsc2clan $recipe | sponge $target", $exitcode); + if ($exitcode and !$last) { + error("No results for profile $request from Blizzard", 503); + } } } if (!filesize($target)) {