Passed
Push — master ( c8e4bc...17399e )
by Jacobo
04:15
created

OpenViduController::publish()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

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