-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNtfyTransportFactory.php
59 lines (48 loc) · 1.64 KB
/
NtfyTransportFactory.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Notifier\Bridge\Ntfy;
use Symfony\Component\Notifier\Exception\UnsupportedSchemeException;
use Symfony\Component\Notifier\Transport\AbstractTransportFactory;
use Symfony\Component\Notifier\Transport\Dsn;
use Symfony\Component\Notifier\Transport\TransportInterface;
/**
* @author Mickael Perraud <mikaelkael.fr@gmail.com>
*/
final class NtfyTransportFactory extends AbstractTransportFactory
{
public function create(Dsn $dsn): TransportInterface
{
if ('ntfy' !== $dsn->getScheme()) {
throw new UnsupportedSchemeException($dsn, 'ntfy', $this->getSupportedSchemes());
}
$host = 'default' === $dsn->getHost() ? null : $dsn->getHost();
$topic = substr($dsn->getPath(), 1);
if (\in_array($dsn->getOption('secureHttp', true), [0, false, 'false', 'off', 'no'], true)) {
$secureHttp = false;
} else {
$secureHttp = true;
}
$transport = (new NtfyTransport($topic, $secureHttp))->setHost($host);
if ($port = $dsn->getPort()) {
$transport->setPort($port);
}
if ($user = $dsn->getUser()) {
$transport->setUser($user);
}
if ($password = $dsn->getPassword()) {
$transport->setPassword($password);
}
return $transport;
}
protected function getSupportedSchemes(): array
{
return ['ntfy'];
}
}