From 490454615c9e0bbe6327e078dfd88193d7f52bd6 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Mon, 9 Jan 2023 23:35:28 +0100 Subject: [PATCH] DkimSigner::__construct() $options changed to parameters (BC break) --- src/Bridges/MailDI/MailExtension.php | 6 +++--- src/Mail/DkimSigner.php | 22 +++++++--------------- tests/Mail.DI/Mail.extension.phpt | 2 ++ tests/Mail/Mail.dkim.headers.phpt | 2 +- tests/Mail/Mail.dkim.invalidKey.phpt | 2 +- tests/Mail/Mail.dkim.process.phpt | 2 +- tests/Mail/Mail.dkim.sign.phpt | 2 +- 7 files changed, 16 insertions(+), 22 deletions(-) diff --git a/src/Bridges/MailDI/MailExtension.php b/src/Bridges/MailDI/MailExtension.php index 00d02f3..fdef305 100644 --- a/src/Bridges/MailDI/MailExtension.php +++ b/src/Bridges/MailDI/MailExtension.php @@ -35,8 +35,8 @@ public function getConfigSchema(): Nette\Schema\Schema 'dkim' => Expect::anyOf( Expect::null(), Expect::structure([ - 'domain' => Expect::string()->dynamic(), - 'selector' => Expect::string()->dynamic(), + 'domain' => Expect::string()->required()->dynamic(), + 'selector' => Expect::string()->required()->dynamic(), 'privateKey' => Expect::string()->required(), 'passPhrase' => Expect::string()->dynamic(), ])->castTo('array'), @@ -59,7 +59,7 @@ public function loadConfiguration() $signer = $builder->addDefinition($this->prefix('signer')) ->setType(Nette\Mail\Signer::class) - ->setFactory(Nette\Mail\DkimSigner::class, [$dkim]); + ->setFactory(Nette\Mail\DkimSigner::class, $dkim); $mailer->addSetup('setSigner', [$signer]); } diff --git a/src/Mail/DkimSigner.php b/src/Mail/DkimSigner.php index 82d92fc..6a344f8 100644 --- a/src/Mail/DkimSigner.php +++ b/src/Mail/DkimSigner.php @@ -27,27 +27,19 @@ class DkimSigner implements Signer ]; private const DkimSignature = 'DKIM-Signature'; - private string $domain; - private array $signHeaders; - private string $selector; - private string $privateKey; - private string $passPhrase; /** @throws Nette\NotSupportedException */ - public function __construct(array $options, array $signHeaders = self::DefaultSignHeaders) - { + public function __construct( + private string $domain, + private string $selector, + private string $privateKey, + private ?string $passPhrase = null, + private array $signHeaders = self::DefaultSignHeaders, + ) { if (!extension_loaded('openssl')) { throw new Nette\NotSupportedException('DkimSigner requires PHP extension openssl which is not loaded.'); } - - $this->domain = $options['domain'] ?? ''; - $this->selector = $options['selector'] ?? ''; - $this->privateKey = $options['privateKey'] ?? ''; - $this->passPhrase = $options['passPhrase'] ?? ''; - $this->signHeaders = count($signHeaders) > 0 - ? $signHeaders - : self::DefaultSignHeaders; } diff --git a/tests/Mail.DI/Mail.extension.phpt b/tests/Mail.DI/Mail.extension.phpt index 19cfbd2..cf4d511 100644 --- a/tests/Mail.DI/Mail.extension.phpt +++ b/tests/Mail.DI/Mail.extension.phpt @@ -45,6 +45,8 @@ mail: smtp: true dkim: privateKey: fixtures/private.key + domain: nette.org + selector: s '); Assert::type(Nette\Mail\DkimSigner::class, $container3->getService('mail.signer')); diff --git a/tests/Mail/Mail.dkim.headers.phpt b/tests/Mail/Mail.dkim.headers.phpt index 9b1458a..1c49ccf 100644 --- a/tests/Mail/Mail.dkim.headers.phpt +++ b/tests/Mail/Mail.dkim.headers.phpt @@ -17,7 +17,7 @@ if (!extension_loaded('openssl')) { Tester\Environment::skip('OpenSSL not installed'); } -$signer = new class ([], ['From', 'To', 'Date', 'Subject', 'Message-ID', 'X-Mailer', 'Content-Type']) extends DkimSigner { +$signer = new class ('', '', '', null, ['From', 'To', 'Date', 'Subject', 'Message-ID', 'X-Mailer', 'Content-Type']) extends DkimSigner { public function getSignedHeaders(Message $message): array { return parent::getSignedHeaders($message); diff --git a/tests/Mail/Mail.dkim.invalidKey.phpt b/tests/Mail/Mail.dkim.invalidKey.phpt index c58009b..0770e7a 100644 --- a/tests/Mail/Mail.dkim.invalidKey.phpt +++ b/tests/Mail/Mail.dkim.invalidKey.phpt @@ -18,7 +18,7 @@ if (!extension_loaded('openssl')) { Tester\Environment::skip('OpenSSL not installed'); } -$signer = new DkimSigner([]); +$signer = new DkimSigner('', '', ''); $mail = new Message; $mail->setFrom('John Doe '); diff --git a/tests/Mail/Mail.dkim.process.phpt b/tests/Mail/Mail.dkim.process.phpt index bb33a52..748a99c 100644 --- a/tests/Mail/Mail.dkim.process.phpt +++ b/tests/Mail/Mail.dkim.process.phpt @@ -17,7 +17,7 @@ if (!extension_loaded('openssl')) { Tester\Environment::skip('OpenSSL not installed'); } -$signer = new class ([], ['From', 'To', 'Subject', 'X-Mailer', 'Content-Type']) extends DkimSigner { +$signer = new class ('', '', '', null, ['From', 'To', 'Subject', 'X-Mailer', 'Content-Type']) extends DkimSigner { public function computeSignature(string $rawHeader, string $signature): string { $headers = parent::computeSignature($rawHeader, $signature); diff --git a/tests/Mail/Mail.dkim.sign.phpt b/tests/Mail/Mail.dkim.sign.phpt index 57194a6..9c15fab 100644 --- a/tests/Mail/Mail.dkim.sign.phpt +++ b/tests/Mail/Mail.dkim.sign.phpt @@ -25,7 +25,7 @@ $mail->addTo('Lady Jane '); $mail->setSubject('Hello Jane!'); $mail->setBody('Příliš žluťoučký kůň'); -$signer = new class (['privateKey' => $privateKey, 'domain' => 'nette.org', 'selector' => 'selector'], ['From', 'To', 'Subject']) extends DkimSigner { +$signer = new class ('nette.org', 'selector', $privateKey, null, ['From', 'To', 'Subject']) extends DkimSigner { protected function getTime(): int { return 0;