diff options
Diffstat (limited to 'vendor/ruflin/elastica/lib/Elastica/Transport/Http.php')
-rw-r--r-- | vendor/ruflin/elastica/lib/Elastica/Transport/Http.php | 188 |
1 files changed, 0 insertions, 188 deletions
diff --git a/vendor/ruflin/elastica/lib/Elastica/Transport/Http.php b/vendor/ruflin/elastica/lib/Elastica/Transport/Http.php deleted file mode 100644 index 5606dbbc..00000000 --- a/vendor/ruflin/elastica/lib/Elastica/Transport/Http.php +++ /dev/null @@ -1,188 +0,0 @@ -<?php - -namespace Elastica\Transport; - -use Elastica\Exception\Connection\HttpException; -use Elastica\Exception\PartialShardFailureException; -use Elastica\Exception\ResponseException; -use Elastica\JSON; -use Elastica\Request; -use Elastica\Response; - -/** - * Elastica Http Transport object - * - * @category Xodoa - * @package Elastica - * @author Nicolas Ruflin <spam@ruflin.com> - */ -class Http extends AbstractTransport -{ - /** - * Http scheme - * - * @var string Http scheme - */ - protected $_scheme = 'http'; - - /** - * Curl resource to reuse - * - * @var resource Curl resource to reuse - */ - protected static $_curlConnection = null; - - /** - * Makes calls to the elasticsearch server - * - * All calls that are made to the server are done through this function - * - * @param \Elastica\Request $request - * @param array $params Host, Port, ... - * @throws \Elastica\Exception\ConnectionException - * @throws \Elastica\Exception\ResponseException - * @throws \Elastica\Exception\Connection\HttpException - * @return \Elastica\Response Response object - */ - public function exec(Request $request, array $params) - { - $connection = $this->getConnection(); - - $conn = $this->_getConnection($connection->isPersistent()); - - // If url is set, url is taken. Otherwise port, host and path - $url = $connection->hasConfig('url') ? $connection->getConfig('url') : ''; - - if (!empty($url)) { - $baseUri = $url; - } else { - $baseUri = $this->_scheme . '://' . $connection->getHost() . ':' . $connection->getPort() . '/' . $connection->getPath(); - } - - $baseUri .= $request->getPath(); - - $query = $request->getQuery(); - - if (!empty($query)) { - $baseUri .= '?' . http_build_query($query); - } - - curl_setopt($conn, CURLOPT_URL, $baseUri); - curl_setopt($conn, CURLOPT_TIMEOUT, $connection->getTimeout()); - curl_setopt($conn, CURLOPT_FORBID_REUSE, 0); - - $proxy = $connection->getProxy(); - if (!is_null($proxy)) { - curl_setopt($conn, CURLOPT_PROXY, $proxy); - } - - $this->_setupCurl($conn); - - $headersConfig = $connection->hasConfig('headers') ? $connection->getConfig('headers') : array(); - - if (!empty($headersConfig)) { - $headers = array(); - while (list($header, $headerValue) = each($headersConfig)) { - array_push($headers, $header . ': ' . $headerValue); - } - - curl_setopt($conn, CURLOPT_HTTPHEADER, $headers); - } - - // TODO: REFACTOR - $data = $request->getData(); - $httpMethod = $request->getMethod(); - - if (!empty($data) || '0' === $data) { - if ($this->hasParam('postWithRequestBody') && $this->getParam('postWithRequestBody') == true) { - $httpMethod = Request::POST; - } - - if (is_array($data)) { - $content = JSON::stringify($data, 'JSON_ELASTICSEARCH'); - } else { - $content = $data; - } - - // Escaping of / not necessary. Causes problems in base64 encoding of files - $content = str_replace('\/', '/', $content); - - curl_setopt($conn, CURLOPT_POSTFIELDS, $content); - } else { - curl_setopt($conn, CURLOPT_POSTFIELDS, ''); - } - - curl_setopt($conn, CURLOPT_NOBODY, $httpMethod == 'HEAD'); - - curl_setopt($conn, CURLOPT_CUSTOMREQUEST, $httpMethod); - - if (defined('DEBUG') && DEBUG) { - // Track request headers when in debug mode - curl_setopt($conn, CURLINFO_HEADER_OUT, true); - } - - $start = microtime(true); - - // cURL opt returntransfer leaks memory, therefore OB instead. - ob_start(); - curl_exec($conn); - $responseString = ob_get_clean(); - - $end = microtime(true); - - // Checks if error exists - $errorNumber = curl_errno($conn); - - $response = new Response($responseString, curl_getinfo($this->_getConnection(), CURLINFO_HTTP_CODE)); - - if (defined('DEBUG') && DEBUG) { - $response->setQueryTime($end - $start); - } - - $response->setTransferInfo(curl_getinfo($conn)); - - - if ($response->hasError()) { - throw new ResponseException($request, $response); - } - - if ($response->hasFailedShards()) { - throw new PartialShardFailureException($request, $response); - } - - if ($errorNumber > 0) { - throw new HttpException($errorNumber, $request, $response); - } - - return $response; - } - - /** - * Called to add additional curl params - * - * @param resource $curlConnection Curl connection - */ - protected function _setupCurl($curlConnection) - { - if ($this->getConnection()->hasConfig('curl')) { - foreach ($this->getConnection()->getConfig('curl') as $key => $param) { - curl_setopt($curlConnection, $key, $param); - } - } - } - - /** - * Return Curl resource - * - * @param bool $persistent False if not persistent connection - * @return resource Connection resource - */ - protected function _getConnection($persistent = true) - { - if (!$persistent || !self::$_curlConnection) { - self::$_curlConnection = curl_init(); - } - - return self::$_curlConnection; - } -} |