[ 'method' => 'GET', 'header' => ['Accept: application/json'], ], ]); // default parameters for all requests $params = [ 'userid' => AREMA_USERNAME, 'password' => AREMA_PASSWORD, 'encrypted' => 'false', ]; // request-specific handling switch ($_GET['fetch']) { default: case 'joblist': $url = AREMA_URL . '/rest/jobs'; $params['limit'] = 50; $params['order_by'] = 'job_id_desc'; $params['history'] = 'false'; if (isset($_GET['q']) && strlen($_GET['q']) > 0 && $_GET['q'] != 'null') { $params['text'] = $_GET['q']; } break; case 'jobdetails': $url = AREMA_URL . '/rest/jobs/' . intval($_GET['jobid']); break; case 'jobprogress': $url = AREMA_URL . '/rest/jobs/' . intval($_GET['jobid']) . '/progress'; break; } $params_encoded = []; foreach ($params as $k => $v) { $params_encoded[] = $k . '=' . rawurlencode($v); } $params_str = implode('&', $params_encoded); $url .= '?' . $params_str; $cache_token = sha1($url); // Clean cache $cached_files = glob(CACHE_DIR . '/*'); foreach ($cached_files as $f) { $mtime = filemtime($f); if ((time() - $mtime) > CACHE_SECONDS) { // cached file outdated --> delete unlink($f); } } $cache_file = CACHE_DIR . '/' . $cache_token; if (file_exists($cache_file)) { // Get cached data $data = file_get_contents($cache_file); } else { // Query Arema $data = file_get_contents($url, false, $ctx); // Cache answer file_put_contents($cache_file, $data); } // Output JSON header('Content-Type: application/json'); echo $data;