ReceiverWorker   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 18
c 1
b 0
f 0
dl 0
loc 38
ccs 0
cts 11
cp 0
rs 10
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A receive() 0 17 2
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * Derafu: Biblioteca PHP (Núcleo).
7
 * Copyright (C) Derafu <https://www.derafu.org>
8
 *
9
 * Este programa es software libre: usted puede redistribuirlo y/o modificarlo
10
 * bajo los términos de la Licencia Pública General Affero de GNU publicada por
11
 * la Fundación para el Software Libre, ya sea la versión 3 de la Licencia, o
12
 * (a su elección) cualquier versión posterior de la misma.
13
 *
14
 * Este programa se distribuye con la esperanza de que sea útil, pero SIN
15
 * GARANTÍA ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD
16
 * PARA UN PROPÓSITO DETERMINADO. Consulte los detalles de la Licencia Pública
17
 * General Affero de GNU para obtener una información más detallada.
18
 *
19
 * Debería haber recibido una copia de la Licencia Pública General Affero de GNU
20
 * junto a este programa.
21
 *
22
 * En caso contrario, consulte <http://www.gnu.org/licenses/agpl.html>.
23
 */
24
25
namespace Derafu\Lib\Core\Package\Prime\Component\Mail\Worker;
26
27
use Derafu\Lib\Core\Foundation\Abstract\AbstractWorker;
28
use Derafu\Lib\Core\Package\Prime\Component\Mail\Contract\PostmanInterface;
29
use Derafu\Lib\Core\Package\Prime\Component\Mail\Contract\ReceiverStrategyInterface;
30
use Derafu\Lib\Core\Package\Prime\Component\Mail\Contract\ReceiverWorkerInterface;
31
use Derafu\Lib\Core\Package\Prime\Component\Mail\Exception\MailException;
32
use Throwable;
33
34
/**
35
 * Clase para la recepción de correos.
36
 */
37
class ReceiverWorker extends AbstractWorker implements ReceiverWorkerInterface
38
{
39
    /**
40
     * Esquema de las opciones.
41
     *
42
     * @var array<string,array|bool>
43
     */
44
    protected array $optionsSchema = [
45
        'strategy' => [
46
            'types' => 'string',
47
            'default' => 'imap',
48
        ],
49
        'transport' => [
50
            'types' => 'array',
51
            'default' => [],
52
        ],
53
    ];
54
55
    /**
56
     * {@inheritDoc}
57
     */
58
    public function receive(PostmanInterface $postman): array
59
    {
60
        $options = $this->resolveOptions($postman->getOptions());
61
        $strategy = $this->getStrategy($options->get('strategy'));
62
63
        assert($strategy instanceof ReceiverStrategyInterface);
64
65
        try {
66
            $envelopes = $strategy->receive($postman);
67
        } catch (Throwable $e) {
68
            throw new MailException(
69
                message: $e->getMessage(),
70
                previous: $e
71
            );
72
        }
73
74
        return $envelopes;
75
    }
76
}
77