/** * Downloads a request * * @param RequestInterface $request * * @return boolean */ public function download(RequestInterface $request, $path) { $response = $this->httpAdapter->sendRequest($request); if (!($body = $response->getBody())) { return false; } $stream = $body->detach(); if (is_resource($stream)) { return $this->filesystem->putStream($path, $stream); } return $this->filesystem->put($path, $stream); }
function it_handles_ivory_interface_incompatibility(Filesystem $filesystem, HttpAdapterInterface $httpAdapter, Request $request, Response $response, Stream $stream) { $httpAdapter->sendRequest($request)->willReturn($response); $response->getBody()->willReturn($stream); $stream->detach()->willReturn('text'); $filesystem->putStream('path/to/file', Argument::type('resource'))->shouldNotBeCalled(); $filesystem->put('path/to/file', 'text')->willReturn(true); $this->download($request, 'path/to/file')->shouldReturn(true); }
/** * Makes calls to the elasticsearch server. * * All calls that are made to the server are done through this function * * @param \Elastica\Request $elasticaRequest * @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(ElasticaRequest $elasticaRequest, array $params) { $connection = $this->getConnection(); if ($timeout = $connection->getTimeout()) { $this->httpAdapter->getConfiguration()->setTimeout($timeout); } $httpAdapterRequest = $this->_createHttpAdapterRequest($elasticaRequest, $connection); $start = microtime(true); $httpAdapterResponse = $this->httpAdapter->sendRequest($httpAdapterRequest); $end = microtime(true); $elasticaResponse = $this->_createElasticaResponse($httpAdapterResponse, $connection); $elasticaResponse->setQueryTime($end - $start); $elasticaResponse->setTransferInfo(array('request_header' => $httpAdapterRequest->getMethod(), 'http_code' => $httpAdapterResponse->getStatusCode())); if ($elasticaResponse->hasError()) { throw new ResponseException($elasticaRequest, $elasticaResponse); } if ($elasticaResponse->hasFailedShards()) { throw new PartialShardFailureException($elasticaRequest, $elasticaResponse); } return $elasticaResponse; }
/** * @param string $method * @param string $uri With or without host * @param string|array $body */ private function send($method, $uri, $body = null) { if (!$this->hasHost($uri)) { $uri = rtrim($this->httpClient->getConfiguration()->getBaseUri(), '/') . '/' . ltrim($uri, '/'); } $body = is_array($body) ? http_build_query($body) : $body; $stream = new Stream('php://memory', 'rw'); if (is_scalar($body)) { $stream->write($body); } $this->request = new Request($uri, $method, $stream, $this->requestHeaders); $this->response = $this->httpClient->sendRequest($this->request); // Reset headers used for the HTTP request $this->requestHeaders = []; }