ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
Init.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21namespace ILIAS\FileDelivery;
22
35
39class Init
40{
41 public static function init(Container $c): void
42 {
43 $c['file_delivery.response_builder'] = static function (): ResponseBuilder {
44 $settings = (@include DeliveryMethodObjective::PATH()) ?? [];
45
46 return match ($settings[DeliveryMethodObjective::SETTINGS] ?? null) {
49 default => new PHPResponseBuilder(),
50 };
51 };
52
53 $c['file_delivery.fallback_response_builder'] = (static fn(): ResponseBuilder => new PHPResponseBuilder());
54
55 $c['file_delivery.data_signer'] = static function (): DataSigner {
56 $keys = array_map(static fn(string $key): SecretKey => new SecretKey($key), (require KeyRotationObjective::PATH()) ?? []);
57
58 $current_key = array_shift($keys);
59
60 return new DataSigner(
62 $current_key,
63 ...$keys
64 )
65 );
66 };
67
68 $c['file_delivery.delivery'] = static function () use ($c): StreamDelivery {
69 // if http is not initialized, we need to do it here
70 if (!$c->offsetExists('http')) {
71 $init_http = new \InitHttpServices();
72 $init_http->init($c);
73 }
74
75 return new StreamDelivery(
76 $c['file_delivery.data_signer'],
77 $c['http'],
78 $c['file_delivery.response_builder'],
79 $c['file_delivery.fallback_response_builder']
80 );
81 };
82
83 $c['file_delivery.legacy_delivery'] = static function () use ($c): LegacyDelivery {
84 // if http is not initialized, we need to do it here
85 if (!$c->offsetExists('http')) {
86 $init_http = new \InitHttpServices();
87 $init_http->init($c);
88 }
89
90 return new LegacyDelivery(
91 $c['http'],
92 $c['file_delivery.response_builder'],
93 $c['file_delivery.fallback_response_builder']
94 );
95 };
96
97 $c['file_delivery'] = (static fn(): Services => new Services(
98 $c['file_delivery.delivery'],
99 $c['file_delivery.legacy_delivery'],
100 $c['file_delivery.data_signer'],
101 $c['http']
102 ));
103 }
104}
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:36
static init(Container $c)
Definition: Init.php:41
Key rotation can provide an extra layer of mitigation against an attacker discovering a secret key.
Signatures are secured by the secret_key.
Definition: SecretKey.php:40
$c
Definition: deliver.php:25