mirror of
https://github.com/Codappix/search_core.git
synced 2024-11-27 18:16:12 +01:00
Daniel Siepmann
5779cb911d
Keep old code and behaviour. Adjust only a single place to keep old expected behaviour. If TYPO3 throws an exception, catch this, and replace it by old behaviour which is already handled throughout the code.
75 lines
2.4 KiB
PHP
75 lines
2.4 KiB
PHP
<?php
|
|
namespace Codappix\SearchCore\Connection\Elasticsearch;
|
|
|
|
/*
|
|
* Copyright (C) 2016 Daniel Siepmann <coding@daniel-siepmann.de>
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
* 02110-1301, USA.
|
|
*/
|
|
|
|
use Codappix\SearchCore\Configuration\ConfigurationContainerInterface;
|
|
use TYPO3\CMS\Core\SingletonInterface as Singleton;
|
|
|
|
/**
|
|
* The current connection to elasticsearch.
|
|
*
|
|
* Wrapper for Elastica\Client.
|
|
*
|
|
* TODO: Catch inner exception and throw general ones (at least in Connection-Namespace (not elastic specific))
|
|
*/
|
|
class Connection implements Singleton
|
|
{
|
|
/**
|
|
* @var \Elastica\Client
|
|
*/
|
|
protected $elasticaClient;
|
|
|
|
/**
|
|
* @var ConfigurationContainerInterface
|
|
*/
|
|
protected $configuration;
|
|
|
|
/**
|
|
* @param ConfigurationContainerInterface $configuration
|
|
* @param \Elastica\Client|null $elasticaClient
|
|
*/
|
|
public function __construct(
|
|
ConfigurationContainerInterface $configuration,
|
|
\Elastica\Client $elasticaClient = null
|
|
) {
|
|
$this->configuration = $configuration;
|
|
|
|
if ($elasticaClient === null) {
|
|
$elasticaClient = new \Elastica\Client([
|
|
'host' => $this->configuration->get('connections.elasticsearch.host'),
|
|
'port' => $this->configuration->get('connections.elasticsearch.port'),
|
|
// TODO: Make configurable
|
|
// 'log' => 'file',
|
|
]);
|
|
// TODO: Make configurable.
|
|
// new \Elastica\Log($this->elasticaClient);
|
|
}
|
|
$this->elasticaClient = $elasticaClient;
|
|
}
|
|
|
|
/**
|
|
* Get the concrete client for internal usage!
|
|
*/
|
|
public function getClient() : \Elastica\Client
|
|
{
|
|
return $this->elasticaClient;
|
|
}
|
|
}
|