|
12 | 12 | namespace FriendsOfHyperf\Sentry\Factory; |
13 | 13 |
|
14 | 14 | use FriendsOfHyperf\Sentry\Version; |
| 15 | +use Hyperf\Collection\Arr; |
15 | 16 | use Hyperf\Contract\ConfigInterface; |
16 | 17 | use Psr\Container\ContainerInterface; |
17 | 18 | use Sentry\ClientBuilder; |
| 19 | +use Sentry\Options; |
18 | 20 | use Sentry\Transport\TransportInterface; |
19 | 21 |
|
20 | 22 | use function Hyperf\Support\env; |
21 | 23 | use function Hyperf\Tappable\tap; |
22 | 24 |
|
| 25 | +/** |
| 26 | + * @property \Symfony\Component\OptionsResolver\OptionsResolver $resolver |
| 27 | + */ |
23 | 28 | class ClientBuilderFactory |
24 | 29 | { |
25 | | - public const SPECIFIC_OPTIONS = [ |
26 | | - 'breadcrumbs', |
27 | | - 'crons', |
28 | | - 'enable', |
29 | | - 'ignore_commands', |
30 | | - 'integrations', |
31 | | - 'logs_channel_level', |
32 | | - 'enable_default_metrics', |
33 | | - 'enable_command_metrics', |
34 | | - 'enable_queue_metrics', |
35 | | - 'enable_pool_metrics', |
36 | | - 'metrics_interval', |
37 | | - 'transport_channel_size', |
38 | | - 'transport_concurrent_limit', |
39 | | - 'tracing', |
40 | | - 'tracing_spans', |
41 | | - 'tracing_tags', |
42 | | - ]; |
43 | | - |
44 | 30 | public function __invoke(ContainerInterface $container): ClientBuilder |
45 | 31 | { |
46 | 32 | $userConfig = $container->get(ConfigInterface::class)->get('sentry', []); |
47 | 33 | $userConfig['enable_tracing'] ??= true; |
48 | 34 |
|
49 | | - foreach (static::SPECIFIC_OPTIONS as $specificOptionName) { |
50 | | - if (isset($userConfig[$specificOptionName])) { |
51 | | - unset($userConfig[$specificOptionName]); |
52 | | - } |
53 | | - } |
| 35 | + /** @var null|\Symfony\Component\OptionsResolver\OptionsResolver $resolver */ |
| 36 | + $resolver = (fn () => $this->resolver)->call(new Options()); |
| 37 | + $userConfig = Arr::only($userConfig, $resolver?->getDefinedOptions() ?? []); |
54 | 38 |
|
55 | 39 | if (isset($userConfig['logger'])) { |
56 | 40 | if (is_string($userConfig['logger']) && $container->has($userConfig['logger'])) { |
|
0 commit comments