$url = \Podlove\Http\Curl::resolve_redirects($url, 5); } curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // make curl_exec() return the result curl_setopt($curl, CURLOPT_HEADER, true); // header only curl_setopt($curl, CURLOPT_NOBODY, true); // return no body; HTTP request method: HEAD curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, \Podlove\get_setting('website', 'ssl_verify_peer') == 'on'); // Don't check SSL certificate in order to be able to use self signed certificates curl_setopt($curl, CURLOPT_FAILONERROR, true); curl_setopt($curl, CURLOPT_TIMEOUT, 3); // HEAD requests shouldn't take > 2 seconds if ($etag) { curl_setopt($curl, CURLOPT_HTTPHEADER, array('If-None-Match: "' . $etag . '"')); } curl_setopt($curl, CURLOPT_USERAGENT, \Podlove\Http\Curl::user_agent()); $response = curl_exec($curl); $response_header = curl_getinfo($curl); $error = curl_error($curl); curl_close($curl); return array('header' => $response_header, 'response' => $response, 'error' => $error); } } MediaFile::property('id', 'INT NOT NULL AUTO_INCREMENT PRIMARY KEY'); MediaFile::property('episode_id', 'INT'); MediaFile::property('episode_asset_id', 'INT'); MediaFile::property('size', 'INT'); MediaFile::property('etag', 'VARCHAR(255)');