Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php declare(strict_types=1);
2
 
3
/*
4
 * This file is part of the Monolog package.
5
 *
6
 * (c) Jordi Boggiano <j.boggiano@seld.be>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
 
12
namespace Monolog\Handler;
13
 
14
use Monolog\Logger;
15
use Monolog\Utils;
16
 
17
/**
18
 * IFTTTHandler uses cURL to trigger IFTTT Maker actions
19
 *
20
 * Register a secret key and trigger/event name at https://ifttt.com/maker
21
 *
22
 * value1 will be the channel from monolog's Logger constructor,
23
 * value2 will be the level name (ERROR, WARNING, ..)
24
 * value3 will be the log record's message
25
 *
26
 * @author Nehal Patel <nehal@nehalpatel.me>
27
 */
28
class IFTTTHandler extends AbstractProcessingHandler
29
{
30
    /** @var string */
31
    private $eventName;
32
    /** @var string */
33
    private $secretKey;
34
 
35
    /**
36
     * @param string $eventName The name of the IFTTT Maker event that should be triggered
37
     * @param string $secretKey A valid IFTTT secret key
38
     */
39
    public function __construct(string $eventName, string $secretKey, $level = Logger::ERROR, bool $bubble = true)
40
    {
41
        if (!extension_loaded('curl')) {
42
            throw new MissingExtensionException('The curl extension is needed to use the IFTTTHandler');
43
        }
44
 
45
        $this->eventName = $eventName;
46
        $this->secretKey = $secretKey;
47
 
48
        parent::__construct($level, $bubble);
49
    }
50
 
51
    /**
52
     * {@inheritDoc}
53
     */
54
    public function write(array $record): void
55
    {
56
        $postData = [
57
            "value1" => $record["channel"],
58
            "value2" => $record["level_name"],
59
            "value3" => $record["message"],
60
        ];
61
        $postString = Utils::jsonEncode($postData);
62
 
63
        $ch = curl_init();
64
        curl_setopt($ch, CURLOPT_URL, "https://maker.ifttt.com/trigger/" . $this->eventName . "/with/key/" . $this->secretKey);
65
        curl_setopt($ch, CURLOPT_POST, true);
66
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
67
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
68
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
69
            "Content-Type: application/json",
70
        ]);
71
 
72
        Curl\Util::execute($ch);
73
    }
74
}