/** * Uploads gzipped file * * @param string $local_path * @param string $remote_path * @param bool $force_rewrite * @return array */ function _upload_gzip($local_path, $remote_path, $force_rewrite = false) { if (!function_exists('gzencode')) { return $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, "GZIP library doesn't exists."); } if (!file_exists($local_path)) { return $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, 'Source file not found.'); } $contents = @file_get_contents($local_path); if ($contents === false) { return $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, 'Unable to read file.'); } $data = gzencode($contents); $md5 = md5($data); $content_md5 = $this->_get_content_md5($md5); if (!$force_rewrite) { try { $properties = $this->_client->getBlobProperties($this->_config['container'], $remote_path); $size = @filesize($local_path); if ($size === (int) $properties->Size && $content_md5 === $properties->ContentMd5) { return $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_OK, 'File up-to-date.'); } } catch (Exception $exception) { } } $headers = $this->_get_headers($local_path); $headers = array_merge($headers, array('Content-MD5' => $content_md5, 'Content-Encoding' => 'gzip')); try { $this->_client->putBlobData($this->_config['container'], $remote_path, $data, array(), null, $headers); } catch (Exception $exception) { return $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_ERROR, sprintf('Unable to put blob (%s).', $exception->getMessage())); } return $this->_get_result($local_path, $remote_path, W3TC_CDN_RESULT_OK, 'OK'); }