OpenViduController   A
last analyzed

Complexity

Total Complexity 16

Size/Duplication

Total Lines 188
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 41
c 1
b 0
f 0
dl 0
loc 188
rs 10
wmc 16

16 Methods

Rating   Name   Duplication   Size   Complexity  
A forceDisconnect() 0 5 1
A connections() 0 5 1
A token() 0 5 1
A fetch() 0 5 1
A webhook() 0 4 1
A startRecording() 0 4 1
A session() 0 4 1
A stopRecording() 0 4 1
A sessions() 0 4 1
A signal() 0 4 1
A close() 0 5 1
A publish() 0 5 1
A forceUnpublish() 0 5 1
A isBeingRecording() 0 5 1
A deleteRecording() 0 4 1
A recording() 0 4 1
1
<?php
2
3
namespace SquareetLabs\LaravelOpenVidu\Http\Controllers;
4
5
use Illuminate\Routing\Controller;
6
use Illuminate\Support\Facades\Response;
7
use SquareetLabs\LaravelOpenVidu\Builders\PublishStreamBuilder;
8
use SquareetLabs\LaravelOpenVidu\Builders\RecordingPropertiesBuilder;
9
use SquareetLabs\LaravelOpenVidu\Builders\SessionPropertiesBuilder;
10
use SquareetLabs\LaravelOpenVidu\Builders\SignalPropertiesBuilder;
11
use SquareetLabs\LaravelOpenVidu\Builders\TokenOptionsBuilder;
12
use SquareetLabs\LaravelOpenVidu\Dispatchers\WebhookEventDispatcher;
13
use SquareetLabs\LaravelOpenVidu\Exceptions\OpenViduConnectionNotFoundException;
14
use SquareetLabs\LaravelOpenVidu\Exceptions\OpenViduException;
15
use SquareetLabs\LaravelOpenVidu\Exceptions\OpenViduInvalidArgumentException;
16
use SquareetLabs\LaravelOpenVidu\Exceptions\OpenViduSessionNotFoundException;
17
use SquareetLabs\LaravelOpenVidu\Exceptions\OpenViduStreamTypeInvalidException;
18
use SquareetLabs\LaravelOpenVidu\Facades\OpenVidu;
19
use SquareetLabs\LaravelOpenVidu\Http\Requests\GenerateTokenRequest;
20
use SquareetLabs\LaravelOpenVidu\Http\Requests\PublishStreamRequest;
21
use SquareetLabs\LaravelOpenVidu\Http\Requests\SignalRequest;
22
use SquareetLabs\LaravelOpenVidu\Http\Requests\StartRecordingRequest;
23
use SquareetLabs\LaravelOpenVidu\Http\Requests\WebhookEventRequest;
24
25
/**
26
 * Class SmsUpReportController
27
 * @package SquareetLabs\LaravelOpenVidu\Http\Controllers
28
 */
29
class OpenViduController extends Controller
30
{
31
    /**
32
     * @param  GenerateTokenRequest  $request
33
     * @return string
34
     * @throws OpenViduException
35
     */
36
    public function token(GenerateTokenRequest $request)
37
    {
38
        $session = OpenVidu::createSession(SessionPropertiesBuilder::build($request->get('session')));
39
        $token = $session->generateToken(TokenOptionsBuilder::build($request->get('tokenOptions')));
40
        return Response::json(['token' => $token], 200);
41
    }
42
43
    /**
44
     * @param  string  $sessionId
45
     * @return string
46
     */
47
    public function session(string $sessionId)
48
    {
49
        $session = OpenVidu::getSession($sessionId);
50
        return Response::json(['session' => $session], 200);
51
    }
52
53
    /**
54
     * @return string
55
     */
56
    public function sessions()
57
    {
58
        $sessions = OpenVidu::getActiveSessions();
59
        return Response::json(['sessions' => $sessions], 200);
60
    }
61
62
    /**
63
     * @param  string  $sessionId
64
     * @return string
65
     */
66
    public function connections(string $sessionId)
67
    {
68
        $session = OpenVidu::getSession($sessionId);
69
        $connections = $session->getActiveConnections();
70
        return Response::json(['connections' => $connections], 200);
71
    }
72
73
    /**
74
     * @param  string  $sessionId
75
     * @return string
76
     * @throws OpenViduException
77
     */
78
    public function close(string $sessionId)
79
    {
80
        $session = OpenVidu::getSession($sessionId);
81
        $closed = $session->close();
82
        return Response::json(['closed' => $closed], 200);
83
    }
84
85
86
    /**
87
     * @param  string  $sessionId
88
     * @return string
89
     */
90
    public function fetch(string $sessionId)
91
    {
92
        $session = OpenVidu::getSession($sessionId);
93
        $hasChanges = $session->fetch();
94
        return Response::json(['session' => $session, 'hasChanges' => $hasChanges], 200);
95
    }
96
97
98
    /**
99
     * @param  string  $sessionId
100
     * @return string
101
     */
102
    public function isBeingRecording(string $sessionId)
103
    {
104
        $session = OpenVidu::getSession($sessionId);
105
        $isBeingRecording = $session->isBeingRecorded();
106
        return Response::json(['isBeingRecording' => $isBeingRecording], 200);
107
    }
108
109
110
    /**
111
     * @param  string  $sessionId
112
     * @param  PublishStreamRequest  $request
113
     * @return string
114
     * @throws OpenViduException
115
     * @throws OpenViduSessionNotFoundException
116
     * @throws OpenViduStreamTypeInvalidException
117
     */
118
    public function publish(string $sessionId, PublishStreamRequest $request)
119
    {
120
        $session = OpenVidu::getSession($sessionId);
121
        $connection = $session->publish(PublishStreamBuilder::build($request->all()));
122
        return Response::json(['connection' => $connection], 200);
123
    }
124
125
126
    /**
127
     * @param  string  $sessionId
128
     * @param  string  $streamId
129
     * @return string
130
     * @throws OpenViduConnectionNotFoundException
131
     * @throws OpenViduException
132
     * @throws OpenViduSessionNotFoundException
133
     */
134
    public function forceUnpublish(string $sessionId, string $streamId)
135
    {
136
        $session = OpenVidu::getSession($sessionId);
137
        $session->forceUnpublish($streamId);
138
        return Response::json(['unpublished' => true], 200);
139
    }
140
141
    /**
142
     * @param  string  $sessionId
143
     * @param  string  $connectionId
144
     * @return string
145
     * @throws OpenViduException
146
     */
147
    public function forceDisconnect(string $sessionId, string $connectionId)
148
    {
149
        $session = OpenVidu::getSession($sessionId);
150
        $session->forceDisconnect($connectionId);
151
        return Response::json(['disconnected' => true], 200);
152
    }
153
154
155
    /**
156
     * @param  StartRecordingRequest  $request
157
     * @return string
158
     * @throws OpenViduInvalidArgumentException
159
     */
160
    public function startRecording(StartRecordingRequest $request)
161
    {
162
        $recording = OpenVidu::startRecording(RecordingPropertiesBuilder::build($request->all()));
163
        return Response::json(['recording' => $recording], 200);
164
    }
165
166
167
    /**
168
     * @param  string  $recordingId
169
     * @return string
170
     */
171
    public function stopRecording(string $recordingId)
172
    {
173
        $recording = OpenVidu::stopRecording($recordingId);
174
        return Response::json(['recording' => $recording], 200);
175
    }
176
177
    /**
178
     * @param  string  $recordingId
179
     * @return string
180
     */
181
    public function recording(string $recordingId)
182
    {
183
        $recording = OpenVidu::getRecording($recordingId);
184
        return Response::json(['recording' => $recording], 200);
185
    }
186
187
188
    /**
189
     * @param  string  $recordingId
190
     * @return string
191
     */
192
    public function deleteRecording(string $recordingId)
193
    {
194
        $recording = OpenVidu::deleteRecording($recordingId);
195
        return Response::json(['recording' => $recording], 200);
196
    }
197
198
    /**
199
     * @param  SignalRequest  $request
200
     * @return string
201
     * @throws OpenViduInvalidArgumentException
202
     */
203
    public function signal(SignalRequest $request)
204
    {
205
        $sent = OpenVidu::sendSignal(SignalPropertiesBuilder::build($request->all()));
206
        return Response::json(['sent' => $sent], 200);
207
    }
208
209
    /**
210
     * @param  WebhookEventRequest  $request
211
     * @return string
212
     */
213
    public function webhook(WebhookEventRequest $request)
214
    {
215
        WebhookEventDispatcher::dispatch($request->all());
216
        return Response::json(['success' => true], 200);
217
    }
218
}
219