Completed
Pull Request — master (#447)
by Marcel
03:21 queued 01:37
created

DashboardLogger::log()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 16
rs 9.7333
c 0
b 0
f 0
cc 1
nc 1
nop 3
1
<?php
2
3
namespace BeyondCode\LaravelWebSockets\Dashboard;
4
5
use BeyondCode\LaravelWebSockets\WebSockets\Channels\ChannelManager;
6
7
class DashboardLogger
8
{
9
    const LOG_CHANNEL_PREFIX = 'private-websockets-dashboard-';
10
11
    const TYPE_DISCONNECTED = 'disconnected';
12
13
    const TYPE_CONNECTED = 'connected';
14
15
    const TYPE_VACATED = 'vacated';
16
17
    const TYPE_OCCUPIED = 'occupied';
18
19
    const TYPE_SUBSCRIBED = 'subscribed';
20
21
    const TYPE_WS_MESSAGE = 'ws-message';
22
23
    const TYPE_API_MESSAGE = 'api-message';
24
25
    const TYPE_REPLICATOR_SUBSCRIBED = 'replicator-subscribed';
26
27
    const TYPE_REPLICATOR_UNSUBSCRIBED = 'replicator-unsubscribed';
28
29
    const TYPE_REPLICATOR_JOINED_CHANNEL = 'replicator-joined';
30
31
    const TYPE_REPLICATOR_LEFT_CHANNEL = 'replicator-left';
32
33
    const TYPE_REPLICATOR_MESSAGE_PUBLISHED = 'replicator-message-published';
34
35
    const TYPE_REPLICATOR_MESSAGE_RECEIVED = 'replicator-message-received';
36
37
    /**
38
     * The list of all channels.
39
     *
40
     * @var array
41
     */
42
    public static $channels = [
43
        self::TYPE_DISCONNECTED,
44
        self::TYPE_CONNECTED,
45
        self::TYPE_VACATED,
46
        self::TYPE_OCCUPIED,
47
        self::TYPE_SUBSCRIBED,
48
        self::TYPE_WS_MESSAGE,
49
        self::TYPE_API_MESSAGE,
50
        self::TYPE_REPLICATOR_SUBSCRIBED,
51
        self::TYPE_REPLICATOR_UNSUBSCRIBED,
52
        self::TYPE_REPLICATOR_JOINED_CHANNEL,
53
        self::TYPE_REPLICATOR_LEFT_CHANNEL,
54
        self::TYPE_REPLICATOR_MESSAGE_PUBLISHED,
55
        self::TYPE_REPLICATOR_MESSAGE_RECEIVED,
56
    ];
57
58
    /**
59
     * Log an event for an app.
60
     *
61
     * @param  mixed  $appId
62
     * @param  string  $type
63
     * @param  array  $details
64
     * @return void
65
     */
66
    public static function log($appId, string $type, array $details = [])
67
    {
68
        $channelName = static::LOG_CHANNEL_PREFIX.$type;
69
70
        $channel = app(ChannelManager::class)->find($appId, $channelName);
71
72
        optional($channel)->broadcast([
73
            'event' => 'log-message',
74
            'channel' => $channelName,
75
            'data' => [
76
                'type' => $type,
77
                'time' => strftime('%H:%M:%S'),
78
                'details' => $details,
79
            ],
80
        ]);
81
    }
82
}
83