-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathClientBuilder.php
110 lines (96 loc) · 2.48 KB
/
ClientBuilder.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
/**
* This file is part of the Elastic Site Search PHP Client package.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Elastic\SiteSearch\Client;
/**
* Use this class to instantiate new client and all their dependencies.
*
* @package Elastic\SiteSearch\Client
*/
class ClientBuilder extends \Elastic\OpenApi\Codegen\AbstractClientBuilder
{
/**
* @var string
*/
const URI_PREFIX = '/api/v1/';
/**
* @var string
*/
const API_ENDPOINT = 'https://api.swiftype.com';
/**
* @var string
*/
private $apiKey;
/**
* @var string
*/
private $integration;
/**
* Instantiate a new client builder.
*
* @param string $hostIdentifier
* @param string $apiKey
*
* @return \Elastic\SiteSearch\Client\ClientBuilder
*/
public static function create($apiKey = null)
{
return (new static())->setHost(self::API_ENDPOINT)->setApiKey($apiKey);
}
/**
* Set the api key for the client.
*
* @param string $apiKey
*
* @return ClientBuilder
*/
public function setApiKey($apiKey)
{
$this->apiKey = $apiKey;
return $this;
}
/**
* Set integration name & version for the client.
*
* @param string $integration
*
* @return ClientBuilder
*/
public function setIntegration($integration)
{
$this->integration = $integration;
return $this;
}
/**
* Return the configured Site Search client.
*
* @return \Elastic\SiteSearch\Client\Client
*/
public function build()
{
return new Client($this->getEndpointBuilder(), $this->getConnection());
}
/**
* {@inheritdoc}
*/
protected function getHandler()
{
$handler = parent::getHandler();
$handler = new Connection\Handler\RequestAuthenticationHandler($handler, $this->apiKey);
$handler = new Connection\Handler\RequestClientHeaderHandler($handler, $this->integration);
$handler = new \Elastic\OpenApi\Codegen\Connection\Handler\RequestUrlPrefixHandler($handler, self::URI_PREFIX);
$handler = new Connection\Handler\ApiErrorHandler($handler);
return $handler;
}
/**
* {@inheritdoc}
*/
protected function getEndpointBuilder()
{
return new \Elastic\OpenApi\Codegen\Endpoint\Builder(__NAMESPACE__ . "\Endpoint");
}
}