X-Git-Url: http://git.shiar.nl/sc2-widget/blobdiff_plain/aaceaa1177cdd850334513701913eefebc6fcfaa..4d46f04b5ec1a9a7fbf8a5701fe7332f56080232:/widget.php diff --git a/widget.php b/widget.php index e5aa326..d1b3b88 100644 --- a/widget.php +++ b/widget.php @@ -1,12 +1,50 @@ '; + } + print "

$message

\n"; + print "\n\n"; + exit; +} + $request = trim($_SERVER['PATH_INFO'], '/'); -if (!file_exists("$request.json")) { - if (!is_numeric($request)) { - die("unknown profile request $request"); +$target = "data/$request.json"; +$last = file_exists($target) ? filemtime($target) : 0; + +if ($last < time() - 3600) { + $recipe = NULL; + if (is_numeric($request)) { + $recipe = $request; } - system("./getsc2clan $request | sponge $request.json", $exitcode); - if ($exitcode) { - die("no results for profile id $request from Blizzard"); + 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); + } + + if ($recipe) { + system("./getsc2clan $recipe | sponge $target", $exitcode); + if ($exitcode and !$last) { + error("No results for profile $request from Blizzard", 503); + } + } +} +if (!filesize($target)) { + error("No clan data for $request", 404); } require('widget.html');