1: <?php
2:
3: declare(strict_types=1);
4:
5: /**
6: * Copyright OpenSearch Contributors
7: * SPDX-License-Identifier: Apache-2.0
8: *
9: * OpenSearch PHP client
10: *
11: * @link https://github.com/opensearch-project/opensearch-php/
12: * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
13: * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
14: * @license https://www.gnu.org/licenses/lgpl-2.1.html GNU Lesser General Public License, Version 2.1
15: *
16: * Licensed to Elasticsearch B.V under one or more agreements.
17: * Elasticsearch B.V licenses this file to you under the Apache 2.0 License or
18: * the GNU Lesser General Public License, Version 2.1, at your option.
19: * See the LICENSE file in the project root for more information.
20: */
21:
22: namespace OpenSearch\Connections;
23:
24: use OpenSearch\Serializers\SerializerInterface;
25: use Psr\Log\LoggerInterface;
26:
27: // @phpstan-ignore classConstant.deprecatedClass
28: @trigger_error(ConnectionFactory::class . ' is deprecated in 2.4.0 and will be removed in 3.0.0.', E_USER_DEPRECATED);
29:
30: /**
31: * @deprecated in 2.4.0 and will be removed in 3.0.0.
32: */
33: class ConnectionFactory implements ConnectionFactoryInterface
34: {
35: /**
36: * @var array
37: */
38: private $connectionParams;
39:
40: /**
41: * @var SerializerInterface
42: */
43: private $serializer;
44:
45: /**
46: * @var LoggerInterface
47: */
48: private $logger;
49:
50: /**
51: * @var LoggerInterface
52: */
53: private $tracer;
54:
55: /**
56: * @var callable
57: */
58: private $handler;
59:
60: /**
61: * @param array{client?: array{headers?: array<string, list<string>>, curl?: array<int, mixed>}} $connectionParams
62: */
63: public function __construct(callable $handler, array $connectionParams, SerializerInterface $serializer, LoggerInterface $logger, LoggerInterface $tracer)
64: {
65: $this->handler = $handler;
66: $this->connectionParams = $connectionParams;
67: $this->logger = $logger;
68: $this->tracer = $tracer;
69: $this->serializer = $serializer;
70: }
71:
72: public function create(array $hostDetails): ConnectionInterface
73: {
74: if (isset($hostDetails['path'])) {
75: $hostDetails['path'] = rtrim($hostDetails['path'], '/');
76: }
77:
78: return new Connection(
79: $this->handler,
80: $hostDetails,
81: $this->connectionParams,
82: $this->serializer,
83: $this->logger,
84: $this->tracer
85: );
86: }
87: }
88: