function main($path) { if (count($path) != 1) { exit_with_error('InvalidRequest'); } $parts = explode('-', $path[0]); if (count($parts) != 2) { exit_with_error('InvalidRequest'); } $db = new Database(); if (!$db->connect()) { exit_with_error('DatabaseConnectionFailure'); } $platform_id = intval($parts[0]); $metric_id = intval($parts[1]); $config_rows = $db->query_and_fetch_all('SELECT * FROM test_configurations WHERE config_metric = $1 AND config_platform = $2', array($metric_id, $platform_id)); if (!$config_rows) { exit_with_error('ConfigurationNotFound'); } $test_group_id = array_get($_GET, 'testGroup'); $should_cache = array_get($_GET, 'cache'); if ($test_group_id) { $test_group_id = intval($test_group_id); } else { if ($should_cache) { // Only v1 UI needs caching. $maxage = config('jsonCacheMaxAge'); header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $maxage) . ' GMT'); header("Cache-Control: maxage={$maxage}"); } } $generator = new RunsGenerator($config_rows); foreach ($config_rows as $config) { if ($test_group_id) { $raw_runs = fetch_runs_for_config_and_test_group($db, $config, $test_group_id); } else { $raw_runs = fetch_runs_for_config($db, $config); } $generator->add_runs($config['config_type'], $raw_runs); } $content = success_json($generator->results()); if (!$test_group_id) { generate_data_file("{$platform_id}-{$metric_id}.json", $content); } echo $content; }