-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathDefaultProxyFeature.php
73 lines (57 loc) · 1.88 KB
/
DefaultProxyFeature.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
<?php
namespace Unleash\Client\DTO;
use Unleash\Client\Enum\Stickiness;
final class DefaultProxyFeature implements ProxyFeature
{
public string $name;
public bool $enabled;
public Variant $variant;
public bool $impression_data;
/**
* @param array{
* name: string,
* enabled: bool,
* variant: array{
* name: string,
* enabled: bool,
* payload?: array{
* type: string,
* value: string
* }
* },
* impression_data: bool
* } $response
*/
public function __construct(array $response)
{
// This is validated elsewhere, this should only happen if a consumer
// tries to new this up manually and isn't interesting to tests
// @codeCoverageIgnoreStart
assert(isset($response['name'], $response['enabled'], $response['variant'], $response['impression_data']));
// @codeCoverageIgnoreEnd
$this->name = $response['name'];
$this->enabled = $response['enabled'];
$this->impression_data = $response['impression_data'];
$payload = null;
if (isset($response['variant']['payload']['type'], $response['variant']['payload']['value'])) {
$payload = new DefaultVariantPayload($response['variant']['payload']['type'], $response['variant']['payload']['value']);
}
$this->variant = new DefaultVariant($response['variant']['name'], $response['variant']['enabled'], 0, Stickiness::DEFAULT, $payload);
}
public function getName(): string
{
return $this->name;
}
public function isEnabled(): bool
{
return $this->enabled;
}
public function getVariant(): Variant
{
return $this->variant;
}
public function hasImpressionData(): bool
{
return $this->impression_data;
}
}