Skip to content

Commit 0399b91

Browse files
committed
implement feature flag
1 parent a0fe1e9 commit 0399b91

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

app/SearchAPI/SearchAPIServiceProvider.php

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,18 @@ public function register(Container $pimple)
1515

1616
$pimple['search_api'] = function (Container $pimple) {
1717

18+
$headers = [];
19+
if ($pimple['search_api.use_client_ids']) {
20+
$headers['X-Client-Id'] = $pimple['search_api.client_id'];
21+
} else {
22+
$headers['X-Api-Key'] = $pimple['search_api.api_key'];
23+
}
24+
$headers['X-Client-Properties'] = 'cluster|widgets, cluster|snowplow';
25+
1826
$guzzleClient = new Client(
1927
[
2028
'base_uri' => $pimple['search_api.base_url'],
21-
'headers' => [
22-
'X-Api-Key' => $pimple['search_api.api_key'],
23-
'X-Client-Properties' => 'cluster|widgets, cluster|snowplow',
24-
],
29+
'headers' => $headers,
2530
'handler' => $this->getHandlerStack('search_api', $pimple),
2631
]
2732
);
@@ -36,7 +41,11 @@ public function register(Container $pimple)
3641
$config = $searchClient->getClient()->getConfig();
3742
$config['base_uri'] = $pimple['search_api_test.base_url'];
3843
$headers = $config['headers'] ?? [];
39-
$headers['X-Api-Key'] = $pimple['search_api_test.api_key'];
44+
if ($pimple['search_api.use_client_ids']) {
45+
$headers['X-Client-Id'] = $pimple['search_api_test.client_id'];
46+
} else {
47+
$headers['X-Api-Key'] = $pimple['search_api_test.api_key'];
48+
}
4049
$config['headers'] = $headers;
4150

4251
$searchClient->setClient(new \GuzzleHttp\Client($config));

app/Widget/WidgetServiceProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public function register(Container $pimple)
6666

6767
/** @var RequestContext $requestContext */
6868
$requestContext = $pimple['request_context'];
69-
$renderer = new Renderer($pimple['widget_layout_manager'], $pimple['google_tag_manager'], $pimple['project_repository'], $pimple['search_api'], $pimple['search_api_test'], $pimple['curatoren_api'], $pimple['curatoren_api_test']);
69+
$renderer = new Renderer($pimple['widget_layout_manager'], $pimple['google_tag_manager'], $pimple['project_repository'], $pimple['search_api'], $pimple['search_api_test'], $pimple['curatoren_api'], $pimple['curatoren_api_test'], $pimple['use_client_ids'] ?? false);
7070
$renderer->addSettings(['apiUrl' => $requestContext->getScheme() . '://' . $requestContext->getHost() . $requestContext->getBaseUrl() . '/widgets/api']);
7171

7272
return $renderer;

src/Widget/Renderer.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ class Renderer implements RendererInterface
6161
*/
6262
protected $curatorenClientTest;
6363

64+
/**
65+
* @var bool
66+
*/
67+
protected $useClientIds;
68+
6469
/**
6570
* @var array
6671
*/
@@ -82,7 +87,7 @@ class Renderer implements RendererInterface
8287
* @param $googleTagManagerId
8388
* @param ProjectServiceInterface $projectService
8489
*/
85-
public function __construct(WidgetPluginManager $widgetPluginManager, $googleTagManagerId, EntityRepository $projectRepository, SearchClientInterface $searchClient, SearchClientInterface $searchClientTest, CuratorenClient $curatorenClient, CuratorenClient $curatorenClientTest)
90+
public function __construct(WidgetPluginManager $widgetPluginManager, $googleTagManagerId, EntityRepository $projectRepository, SearchClientInterface $searchClient, SearchClientInterface $searchClientTest, CuratorenClient $curatorenClient, CuratorenClient $curatorenClientTest, bool $useClientIds)
8691
{
8792
$this->widgetPluginManager = $widgetPluginManager;
8893
$this->googleTagManagerId = $googleTagManagerId;
@@ -91,6 +96,7 @@ public function __construct(WidgetPluginManager $widgetPluginManager, $googleTag
9196
$this->searchClientTest = $searchClientTest;
9297
$this->curatorenClient = $curatorenClient;
9398
$this->curatorenClientTest = $curatorenClientTest;
99+
$this->useClientIds = $useClientIds;
94100
}
95101

96102
public function addSettings(array $settings)
@@ -105,16 +111,22 @@ public function setProject(ProjectInterface $project)
105111
// If a project is not live yet. We should use the test api + test key.
106112
if ($project->getStatus() !== ProjectInterface::PROJECT_STATUS_ACTIVE) {
107113
$apiKey = $project->getTestApiKeySapi3();
114+
$clientId = $project->getTestClientId();
108115
$config = $this->searchClientTest->getClient()->getConfig();
109116
$curatorenConfig = $this->curatorenClientTest->getClient()->getConfig();
110117
} else {
111118
$config = $this->searchClient->getClient()->getConfig();
112119
$apiKey = $project->getLiveApiKeySapi3();
120+
$clientId = $project->getLiveClientId();
113121
$curatorenConfig = $this->curatorenClient->getClient()->getConfig();
114122
}
115123

116124
$headers = $config['headers'] ?? [];
117-
$headers['X-Api-Key'] = $apiKey;
125+
if ($this->useClientIds) {
126+
$headers['X-Client-Id'] = $clientId;
127+
} else {
128+
$headers['X-Api-Key'] = $apiKey;
129+
}
118130
$config['headers'] = $headers;
119131

120132
$this->searchClient->setClient(new \GuzzleHttp\Client($config));

0 commit comments

Comments
 (0)