/** * Add request settings for the debug component * * @param DebugComponent $component * @param Request $request * @return Request */ public function buildComponent($component, $request) { $request->addParam('debugQuery', 'true'); $request->addParam('debug.explain.structured', 'true'); $request->addParam('explainOther', $component->getExplainOther()); return $request; }
/** * @depends testConstructorAndGetters * * @param PreCreateRequest $event */ public function testSetAndGetQuery($event) { $request = new Request(); $request->addParam('testparam', 'test value'); $event->setRequest($request); $this->assertEquals($request, $event->getRequest()); }
public function testConstructorAndGetters() { $query = new Query(); $query->setQuery('test123'); $request = new Request(); $request->addParam('testparam', 'test value'); $event = new PostCreateRequest($query, $request); $this->assertEquals($query, $event->getQuery()); $this->assertEquals($request, $event->getRequest()); }
public function testConstructorAndGetters() { $client = new Client(); $request = new Request(); $request->addParam('testparam', 'test value'); $endpoint = $client->getEndpoint(); $event = new PreExecuteRequest($request, $endpoint); $this->assertEquals($request, $event->getRequest()); $this->assertEquals($endpoint, $event->getEndpoint()); return $event; }
public function testConstructorAndGetters() { $client = new Client(); $request = new Request(); $request->addParam('testparam', 'test value'); $endpoint = $client->getEndpoint(); $response = new Response('', array('HTTP 1.0 200 OK')); $event = new PostExecuteRequest($request, $endpoint, $response); $this->assertEquals($request, $event->getRequest()); $this->assertEquals($endpoint, $event->getEndpoint()); $this->assertEquals($response, $event->getResponse()); }
/** * Add request settings for DistributedSearch * * @param DistributedSearchComponent $component * @param Request $request * @return Request */ public function buildComponent($component, $request) { // add shards to request $shards = array_values($component->getShards()); if (count($shards)) { $request->addParam('shards', implode(',', $shards)); } $request->addParam('shards.qt', $component->getShardRequestHandler()); // add collections to request $collections = array_values($component->getCollections()); if (count($collections)) { $request->addParam('collection', implode(',', $collections)); } return $request; }
/** * Build request for a select query. * * @param QueryInterface|Query $query * * @return Request */ public function build(QueryInterface $query) { $request = new Request(); $request->setHandler($query->getHandler()); $request->addParam('omitHeader', $query->getOmitHeader()); $request->addParam('timeAllowed', $query->getTimeAllowed()); $request->addParams($query->getParams()); $request->addParam('wt', $query->getResponseWriter()); if ($query->getResponseWriter() == $query::WT_JSON) { // only one JSON format is supported $request->addParam('json.nl', 'flat'); } return $request; }
/** * Build request for a select query * * @param Query $query * @return Request */ public function build(QueryInterface $query) { $request = new Request(); $request->setHandler($query->getHandler()); $request->addParam('omitHeader', $query->getOmitHeader()); $request->addParams($query->getParams()); $request->addParam('wt', $query->getResponseWriter()); return $request; }
/** * Add request settings for DistributedSearch. * * @param DistributedSearchComponent $component * @param Request $request * * @return Request */ public function buildComponent($component, $request) { // add shards to request $shards = array_values($component->getShards()); if (count($shards)) { $request->addParam('shards', implode(',', $shards)); } $replicas = array_values($component->getReplicas()); if (count($replicas)) { $value = $request->getParam('shards') ? $request->getParam('shards') . ',' . implode('|', $replicas) : implode('|', $replicas); $request->addParam('shards', $value, true); } $request->addParam('shards.qt', $component->getShardRequestHandler()); // add collections to request $collections = array_values($component->getCollections()); if (count($collections)) { $request->addParam('collection', implode(',', $collections)); } return $request; }
/** * Add request settings for the stats component * * @param StatsComponent $component * @param Request $request * @return Request */ public function buildComponent($component, $request) { // enable stats $request->addParam('stats', 'true'); // add fields foreach ($component->getFields() as $field) { $request->addParam('stats.field', $field->getKey()); // add field specific facet stats foreach ($field->getFacets() as $facet) { $request->addParam('f.' . $field->getKey() . '.stats.facet', $facet); } } // add facet stats for all fields foreach ($component->getFacets() as $facet) { $request->addParam('stats.facet', $facet); } return $request; }
/** * Add request settings for the stats component * * @param StatsComponent $component * @param Request $request * @return Request */ public function buildComponent($component, $request) { // enable stats $request->addParam('stats', 'true'); // add fields foreach ($component->getFields() as $field) { $value = $this->renderLocalParams($field->getKey(), array('ex' => $field->getExcludes())); $request->addParam('stats.field', $value); // add field specific facet stats foreach ($field->getFacets() as $facet) { $request->addParam('f.' . $field->getKey() . '.stats.facet', $facet); } } // add facet stats for all fields foreach ($component->getFacets() as $facet) { $request->addParam('stats.facet', $facet); } return $request; }
/** * Add request settings for the stats component. * * @param StatsComponent $component * @param Request $request * * @return Request */ public function buildComponent($component, $request) { // enable stats $request->addParam('stats', 'true'); // add fields foreach ($component->getFields() as $field) { $pivots = $field->getPivots(); $prefix = count($pivots) > 0 ? '{!tag=' . implode(',', $pivots) . '}' : ''; $request->addParam('stats.field', $prefix . $field->getKey()); // add field specific facet stats foreach ($field->getFacets() as $facet) { $request->addParam('f.' . $field->getKey() . '.stats.facet', $facet); } } // add facet stats for all fields foreach ($component->getFacets() as $facet) { $request->addParam('stats.facet', $facet); } return $request; }
/** * Add params for a range facet to request * * @param Request $request * @param FacetPivot $facet * @return void */ public function addFacetPivot($request, $facet) { $request->addParam('facet.pivot', $this->renderLocalParams(implode(',', $facet->getFields()), array('key' => $facet->getKey(), 'ex' => $facet->getExcludes()))); $request->addParam('facet.pivot.mincount', $facet->getMinCount(), true); }
/** * Create a stream context for a request * * @param Request $request * @param Endpoint $endpoint * @return resource */ public function createContext($request, $endpoint) { $method = $request->getMethod(); $context = stream_context_create(array('http' => array('method' => $method, 'timeout' => $endpoint->getTimeout()))); if ($method == Request::METHOD_POST) { if ($request->getFileUpload()) { stream_context_set_option($context, 'http', 'content', file_get_contents($request->getFileUpload())); $request->addHeader('Content-Type: multipart/form-data'); } else { $data = $request->getRawData(); if (null !== $data) { stream_context_set_option($context, 'http', 'content', $data); $request->addHeader('Content-Type: text/xml; charset=UTF-8'); } } } // Try endpoint authentication first, fallback to request for backwards compatibility $authData = $endpoint->getAuthentication(); if (empty($authData['username'])) { $authData = $request->getAuthentication(); } if (!empty($authData['username']) && !empty($authData['password'])) { $request->addHeader('Authorization: Basic ' . base64_encode($authData['username'] . ':' . $authData['password'])); } $headers = $request->getHeaders(); if (count($headers) > 0) { stream_context_set_option($context, 'http', 'header', implode("\r\n", $headers)); } return $context; }
/** * Add per-field override options to the request * * @param HighlightingField $field * @param Request $request * @return void */ protected function addFieldParams($field, $request) { $prefix = 'f.' . $field->getName() . '.hl.'; $request->addParam($prefix . 'snippets', $field->getSnippets()); $request->addParam($prefix . 'fragsize', $field->getFragSize()); $request->addParam($prefix . 'mergeContiguous', $field->getMergeContiguous()); $request->addParam($prefix . 'alternateField', $field->getAlternateField()); $request->addParam($prefix . 'formatter', $field->getFormatter()); $request->addParam($prefix . 'simple.pre', $field->getSimplePrefix()); $request->addParam($prefix . 'simple.post', $field->getSimplePostfix()); $request->addParam($prefix . 'fragmenter', $field->getFragmenter()); $request->addParam($prefix . 'useFastVectorHighlighter', $field->getUseFastVectorHighlighter()); }
public function testCreateContextWithAuthorization() { $timeout = 13; $method = Request::METHOD_HEAD; $request = new Request(); $request->setMethod($method); $request->setAuthentication('someone', 'S0M3p455'); $endpoint = new Endpoint(); $endpoint->setTimeout($timeout); $context = $this->adapter->createContext($request, $endpoint); $this->assertEquals(array('http' => array('method' => $method, 'timeout' => $timeout, 'header' => 'Authorization: Basic c29tZW9uZTpTME0zcDQ1NQ==')), stream_context_get_options($context)); }
public function testCreateRequestWithOverridingPlugin() { $expectedRequest = new Request(); $expectedRequest->setHandler('something-unique-345978'); $query = new SelectQuery(); $expectedEvent = new PreCreateRequestEvent($query); $expectedEvent->setDispatcher($this->client->getEventDispatcher()); $expectedEvent->setName(Events::PRE_CREATE_REQUEST); $test = $this; $this->client->getEventDispatcher()->addListener(Events::PRE_CREATE_REQUEST, function (PreCreateRequestEvent $event) use($test, $expectedRequest, $expectedEvent) { $test->assertEquals($expectedEvent, $event); $event->setRequest($expectedRequest); }); $returnedRequest = $this->client->createRequest($query); $this->assertEquals($expectedRequest, $returnedRequest); }
/** * Add request settings for morelikethis * * @param MoreLikeThisComponent $component * @param Request $request * @return Request */ public function buildComponent($component, $request) { // enable morelikethis $request->addParam('mlt', 'true'); $request->addParam('mlt.fl', count($component->getFields()) ? implode(',', $component->getFields()) : null); $request->addParam('mlt.mintf', $component->getMinimumTermFrequency()); $request->addParam('mlt.mindf', $component->getMinimumDocumentFrequency()); $request->addParam('mlt.minwl', $component->getMinimumWordLength()); $request->addParam('mlt.maxwl', $component->getMaximumWordLength()); $request->addParam('mlt.maxqt', $component->getMaximumQueryTerms()); $request->addParam('mlt.maxntp', $component->getMaximumNumberOfTokens()); $request->addParam('mlt.boost', $component->getBoost()); $request->addParam('mlt.qf', count($component->getQueryFields()) ? implode(',', $component->getQueryFields()) : null); $request->addParam('mlt.count', $component->getCount()); return $request; }
public function testPreExecuteRequestWithPersistentAndNonPersistentCustomizations() { $input = array('key' => 'xid', 'type' => 'param', 'name' => 'xid', 'value' => 123); $this->plugin->addCustomization($input); $input = array('key' => 'auth', 'type' => 'header', 'name' => 'X-my-auth', 'value' => 'mypassword', 'persistent' => true); $this->plugin->addCustomization($input); $request = new Request(); $event = new PreExecuteRequestEvent($request, new Endpoint()); $this->plugin->preExecuteRequest($event); $this->assertEquals(123, $request->getParam('xid')); $this->assertEquals(array('X-my-auth: mypassword'), $request->getHeaders()); // second use, only the header should be persistent $request = new Request(); $event = new PreExecuteRequestEvent($request, new Endpoint()); $this->plugin->preExecuteRequest($event); $this->assertEquals(null, $request->getParam('xid')); $this->assertEquals(array('X-my-auth: mypassword'), $request->getHeaders()); }
/** * Add params for a interval facet to request * * @param Request $request * @param FacetInterval $facet * @return void */ public function addFacetInterval($request, $facet) { $field = $facet->getField(); $request->addParam('facet.interval', $this->renderLocalParams($field)); foreach ($facet->getSet() as $key => $setValue) { if (is_string($key)) { $setValue = '{!key="' . $key . '"}' . $setValue; } $request->addParam("f.{$field}.facet.interval.set", $setValue); } }
/** * Prepare the client to send the file and params in request * * @param \Zend_Http_Client $client * @param Request $request * @return void */ protected function prepareFileUpload($client, $request) { $filename = $request->getFileUpload(); $client->setFileUpload('content', 'content', file_get_contents($filename), 'application/octet-stream; charset=binary'); }
public function testExecuteWithFileUpload() { $request = new Request(); $request->setMethod(Request::METHOD_POST); $request->setFileUpload(__FILE__); $endpoint = new Endpoint(); $response = new \Zend_Http_Response(200, array('status' => 'HTTP 1.1 200 OK'), 'dummy'); $mock = $this->getMock('Zend_Http_Client'); $mock->expects($this->once())->method('setFileUpload')->with($this->equalTo('content'), $this->equalTo('content'), $this->equalTo(file_get_contents(__FILE__)), $this->equalTo('application/octet-stream; charset=binary')); $mock->expects($this->once())->method('request')->will($this->returnValue($response)); $this->adapter->setZendHttp($mock); $this->adapter->execute($request, $endpoint); }
/** * Add request settings for Spellcheck * * @param SpellcheckComponent $component * @param Request $request * @return Request */ public function buildComponent($component, $request) { // enable spellcheck $request->addParam('spellcheck', 'true'); $request->addParam('spellcheck.q', $component->getQuery()); $request->addParam('spellcheck.build', $component->getBuild()); $request->addParam('spellcheck.reload', $component->getReload()); $request->addParam('spellcheck.dictionary', $component->getDictionary()); $request->addParam('spellcheck.count', $component->getCount()); $request->addParam('spellcheck.onlyMorePopular', $component->getOnlyMorePopular()); $request->addParam('spellcheck.extendedResults', $component->getExtendedResults()); $request->addParam('spellcheck.collate', $component->getCollate()); $request->addParam('spellcheck.maxCollations', $component->getMaxCollations()); $request->addParam('spellcheck.maxCollationTries', $component->getMaxCollationTries()); $request->addParam('spellcheck.maxCollationEvaluations', $component->getMaxCollationEvaluations()); $request->addParam('spellcheck.collateExtendedResults', $component->getCollateExtendedResults()); $request->addParam('spellcheck.accuracy', $component->getAccuracy()); foreach ($component->getCollateParams() as $param => $value) { $request->addParam('spellcheck.collateParam.' . $param, $value); } return $request; }
/** * Build request for a stats.jsp query. * * @param QueryInterface $query * @return Request */ public function build(QueryInterface $query) { $request = new Request(); $request->setHandler($query->getHandler()); return $request; }
/** * Add request settings for Dismax. * * @param DismaxComponent $component * @param Request $request * * @return Request */ public function buildComponent($component, $request) { // enable dismax $request->addParam('defType', $component->getQueryParser()); $request->addParam('q.alt', $component->getQueryAlternative()); $request->addParam('qf', $component->getQueryFields()); $request->addParam('mm', $component->getMinimumMatch()); $request->addParam('pf', $component->getPhraseFields()); $request->addParam('ps', $component->getPhraseSlop()); $request->addParam('qs', $component->getQueryPhraseSlop()); $request->addParam('tie', $component->getTie()); // add boostqueries to request $boostQueries = $component->getBoostQueries(); if (count($boostQueries) !== 0) { foreach ($boostQueries as $boostQuery) { $request->addParam('bq', $boostQuery->getQuery()); } } $request->addParam('bf', $component->getBoostFunctions()); return $request; }
/** * Add request settings for Grouping. * * @param GroupingComponent $component * @param Request $request * * @return Request */ public function buildComponent($component, $request) { // enable grouping $request->addParam('group', 'true'); $request->addParam('group.field', $component->getFields()); $request->addParam('group.query', $component->getQueries()); $request->addParam('group.limit', $component->getLimit()); $request->addParam('group.offset', $component->getOffset()); $request->addParam('group.sort', $component->getSort()); $request->addParam('group.main', $component->getMainResult()); $request->addParam('group.ngroups', $component->getNumberOfGroups()); $request->addParam('group.cache.percent', $component->getCachePercentage()); $request->addParam('group.truncate', $component->getTruncate()); $request->addParam('group.func', $component->getFunction()); $request->addParam('group.facet', $component->getFacet()); $request->addParam('group.format', $component->getFormat()); return $request; }
/** * * adapt Request to HttpRequest * * {@link http://us.php.net/manual/en/http.constants.php * HTTP Predefined Constant} * * {@link http://us.php.net/manual/en/http.request.options.php * HttpRequest options} * * @throws InvalidArgumentException * @param Request $request * @param Endpoint $endpoint * @param HttpRequest * @return \HttpRequest */ public function toHttpRequest($request, $endpoint) { $url = $endpoint->getBaseUri() . $request->getUri(); $httpRequest = new \HttpRequest($url); $headers = array(); foreach ($request->getHeaders() as $headerLine) { list($header, $value) = explode(':', $headerLine); if ($header = trim($header)) { $headers[$header] = trim($value); } } // Try endpoint authentication first, fallback to request for backwards compatibility $authData = $endpoint->getAuthentication(); if (empty($authData['username'])) { $authData = $request->getAuthentication(); } if (!empty($authData['username']) && !empty($authData['password'])) { $headers['Authorization'] = 'Basic ' . base64_encode($authData['username'] . ':' . $authData['password']); } switch ($request->getMethod()) { case Request::METHOD_GET: $method = HTTP_METH_GET; break; case Request::METHOD_POST: $method = HTTP_METH_POST; if ($request->getFileUpload()) { $httpRequest->addPostFile('content', $request->getFileUpload(), 'application/octet-stream; charset=binary'); } else { $httpRequest->setBody($request->getRawData()); if (!isset($headers['Content-Type'])) { $headers['Content-Type'] = 'text/xml; charset=utf-8'; } } break; case Request::METHOD_HEAD: $method = HTTP_METH_HEAD; break; default: throw new InvalidArgumentException('Unsupported method: ' . $request->getMethod()); } $httpRequest->setMethod($method); $httpRequest->setOptions(array('timeout' => $endpoint->getTimeout(), 'connecttimeout' => $endpoint->getTimeout(), 'dns_cache_timeout' => $endpoint->getTimeout())); $httpRequest->setHeaders($headers); return $httpRequest; }
/** * Add request settings for Dismax * * @param DismaxComponent $component * @param Request $request * @return Request */ public function buildComponent($component, $request) { // enable dismax $request->addParam('defType', $component->getQueryParser()); $request->addParam('q.alt', $component->getQueryAlternative()); $request->addParam('qf', $component->getQueryFields()); $request->addParam('mm', $component->getMinimumMatch()); $request->addParam('pf', $component->getPhraseFields()); $request->addParam('ps', $component->getPhraseSlop()); $request->addParam('qs', $component->getQueryPhraseSlop()); $request->addParam('tie', $component->getTie()); $request->addParam('bq', $component->getBoostQuery()); $request->addParam('bf', $component->getBoostFunctions()); return $request; }
public function testToHttpRequestWithDefaultContentType() { $request = new Request(); $request->setMethod(Request::METHOD_POST); $endpoint = new Endpoint(); $endpoint->setTimeout(10); $httpRequest = $this->adapter->toHttpRequest($request, $endpoint); $this->assertEquals(array('timeout' => 10, 'connecttimeout' => 10, 'dns_cache_timeout' => 10, 'headers' => array('Content-Type' => 'text/xml; charset=utf-8')), $httpRequest->getOptions()); }
/** * Create http request options from request. * * @param Request $request * @param Endpoint $endpoint * @return array */ protected function createOptions($request, $endpoint) { // @codeCoverageIgnoreStart $options = array('timeout' => $endpoint->getTimeout()); foreach ($request->getHeaders() as $headerLine) { list($header, $value) = explode(':', $headerLine); if ($header = trim($header)) { $options['headers'][$header] = trim($value); } } return $options; // @codeCoverageIgnoreEnd }