private static function req($sessionID, $path, $params = array(), $gzip = false, $allowError = false) { $url = self::$config['syncURLPrefix'] . $path; $params = array_merge(array("sessionid" => $sessionID, "version" => self::$config['syncVersion']), $params ? $params : array()); if ($gzip) { $data = ""; foreach ($params as $key => $val) { $data .= $key . "=" . urlencode($val) . "&"; } $data = gzdeflate(substr($data, 0, -1)); $headers = ["Content-Type: application/octet-stream", "Content-Encoding: gzip"]; } else { $data = $params; $headers = []; } if (!empty(self::$config['zoteroVersion'])) { $headers[] = "X-Zotero-Version: " . self::$config['zoteroVersion']; } $response = HTTP::post($url, $data, $headers); self::checkResponse($response, $allowError); return $response; } private static function checkSessionID($sessionID) { if (!preg_match('/^[a-g0-9]{32}$/', $sessionID)) { throw new Exception("Invalid session id"); } } } Sync::loadConfig();