Parcourir la source

Remove SwiftMailerHandler

Jordi Boggiano il y a 3 ans
Parent
commit
b586dbe8e6

+ 0 - 112
src/Monolog/Handler/SwiftMailerHandler.php

@@ -1,112 +0,0 @@
-<?php declare(strict_types=1);
-
-/*
- * This file is part of the Monolog package.
- *
- * (c) Jordi Boggiano <j.boggiano@seld.be>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Utils;
-use Monolog\Formatter\FormatterInterface;
-use Monolog\Formatter\LineFormatter;
-use Swift_Message;
-use Swift;
-
-/**
- * SwiftMailerHandler uses Swift_Mailer to send the emails
- *
- * @author Gyula Sallai
- *
- * @phpstan-import-type Record from \Monolog\Logger
- */
-class SwiftMailerHandler extends MailHandler
-{
-    /** @var \Swift_Mailer */
-    protected $mailer;
-    /** @var Swift_Message|callable(string, Record[]): Swift_Message */
-    private $messageTemplate;
-
-    /**
-     * @psalm-param Swift_Message|callable(string, Record[]): Swift_Message $message
-     *
-     * @param \Swift_Mailer          $mailer  The mailer to use
-     * @param callable|Swift_Message $message An example message for real messages, only the body will be replaced
-     */
-    public function __construct(\Swift_Mailer $mailer, $message, $level = Logger::ERROR, bool $bubble = true)
-    {
-        parent::__construct($level, $bubble);
-
-        $this->mailer = $mailer;
-        $this->messageTemplate = $message;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected function send(string $content, array $records): void
-    {
-        $this->mailer->send($this->buildMessage($content, $records));
-    }
-
-    /**
-     * Gets the formatter for the Swift_Message subject.
-     *
-     * @param string|null $format The format of the subject
-     */
-    protected function getSubjectFormatter(?string $format): FormatterInterface
-    {
-        return new LineFormatter($format);
-    }
-
-    /**
-     * Creates instance of Swift_Message to be sent
-     *
-     * @param  string        $content formatted email body to be sent
-     * @param  array         $records Log records that formed the content
-     * @return Swift_Message
-     *
-     * @phpstan-param Record[] $records
-     */
-    protected function buildMessage(string $content, array $records): Swift_Message
-    {
-        $message = null;
-        if ($this->messageTemplate instanceof Swift_Message) {
-            $message = clone $this->messageTemplate;
-            $message->generateId();
-        } elseif (is_callable($this->messageTemplate)) {
-            $message = ($this->messageTemplate)($content, $records);
-        }
-
-        if (!$message instanceof Swift_Message) {
-            $record = reset($records);
-            throw new \InvalidArgumentException('Could not resolve message as instance of Swift_Message or a callable returning it' . ($record ? Utils::getRecordMessageForException($record) : ''));
-        }
-
-        if ($records) {
-            $subjectFormatter = $this->getSubjectFormatter($message->getSubject());
-            $message->setSubject($subjectFormatter->format($this->getHighestRecord($records)));
-        }
-
-        $mime = 'text/plain';
-        if ($this->isHtmlBody($content)) {
-            $mime = 'text/html';
-        }
-
-        $message->setBody($content, $mime);
-        /** @phpstan-ignore-next-line */
-        if (version_compare(Swift::VERSION, '6.0.0', '>=')) {
-            $message->setDate(new \DateTimeImmutable());
-        } else {
-            /** @phpstan-ignore-next-line */
-            $message->setDate(time());
-        }
-
-        return $message;
-    }
-}

+ 0 - 115
tests/Monolog/Handler/SwiftMailerHandlerTest.php

@@ -1,115 +0,0 @@
-<?php declare(strict_types=1);
-
-/*
- * This file is part of the Monolog package.
- *
- * (c) Jordi Boggiano <j.boggiano@seld.be>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Monolog\Handler;
-
-use Monolog\Logger;
-use Monolog\Test\TestCase;
-use PHPUnit\Framework\MockObject\MockObject;
-
-class SwiftMailerHandlerTest extends TestCase
-{
-    /** @var \Swift_Mailer|MockObject */
-    private $mailer;
-
-    public function setUp(): void
-    {
-        $this->mailer = $this
-            ->getMockBuilder('Swift_Mailer')
-            ->disableOriginalConstructor()
-            ->getMock();
-    }
-
-    public function testMessageCreationIsLazyWhenUsingCallback()
-    {
-        $this->mailer->expects($this->never())
-            ->method('send');
-
-        $callback = function () {
-            throw new \RuntimeException('Swift_Message creation callback should not have been called in this test');
-        };
-        $handler = new SwiftMailerHandler($this->mailer, $callback);
-
-        $records = [
-            $this->getRecord(Logger::DEBUG),
-            $this->getRecord(Logger::INFO),
-        ];
-        $handler->handleBatch($records);
-    }
-
-    public function testMessageCanBeCustomizedGivenLoggedData()
-    {
-        // Wire Mailer to expect a specific Swift_Message with a customized Subject
-        $expectedMessage = new \Swift_Message();
-        $this->mailer->expects($this->once())
-            ->method('send')
-            ->with($this->callback(function ($value) use ($expectedMessage) {
-                return $value instanceof \Swift_Message
-                    && $value->getSubject() === 'Emergency'
-                    && $value === $expectedMessage;
-            }));
-
-        // Callback dynamically changes subject based on number of logged records
-        $callback = function ($content, array $records) use ($expectedMessage) {
-            $subject = count($records) > 0 ? 'Emergency' : 'Normal';
-            $expectedMessage->setSubject($subject);
-
-            return $expectedMessage;
-        };
-        $handler = new SwiftMailerHandler($this->mailer, $callback);
-
-        // Logging 1 record makes this an Emergency
-        $records = [
-            $this->getRecord(Logger::EMERGENCY),
-        ];
-        $handler->handleBatch($records);
-    }
-
-    public function testMessageSubjectFormatting()
-    {
-        // Wire Mailer to expect a specific Swift_Message with a customized Subject
-        $messageTemplate = new \Swift_Message();
-        $messageTemplate->setSubject('Alert: %level_name% %message%');
-        $receivedMessage = null;
-
-        $this->mailer->expects($this->once())
-            ->method('send')
-            ->with($this->callback(function ($value) use (&$receivedMessage) {
-                $receivedMessage = $value;
-
-                return true;
-            }));
-
-        $handler = new SwiftMailerHandler($this->mailer, $messageTemplate);
-
-        $records = [
-            $this->getRecord(Logger::EMERGENCY),
-        ];
-        $handler->handleBatch($records);
-
-        $this->assertEquals('Alert: EMERGENCY test', $receivedMessage->getSubject());
-    }
-
-    public function testMessageHaveUniqueId()
-    {
-        $messageTemplate = new \Swift_Message();
-        $handler = new SwiftMailerHandler($this->mailer, $messageTemplate);
-
-        $method = new \ReflectionMethod('Monolog\Handler\SwiftMailerHandler', 'buildMessage');
-        $method->setAccessible(true);
-        $method->invokeArgs($handler, [$messageTemplate, []]);
-
-        $builtMessage1 = $method->invoke($handler, $messageTemplate, []);
-        $builtMessage2 = $method->invoke($handler, $messageTemplate, []);
-
-        $this->assertFalse($builtMessage1->getId() === $builtMessage2->getId(), 'Two different messages have the same id');
-    }
-}