Issues (49)

app/Services/Streamers/PHPStreamer.php (1 issue)

Severity
1
<?php
2
3
namespace App\Services\Streamers;
4
5
use DaveRandom\Resume\FileResource;
6
use function DaveRandom\Resume\get_request_header;
7
use DaveRandom\Resume\InvalidRangeHeaderException;
8
use DaveRandom\Resume\NonExistentFileException;
9
use DaveRandom\Resume\RangeSet;
10
use DaveRandom\Resume\ResourceServlet;
11
use DaveRandom\Resume\SendFileFailureException;
12
use DaveRandom\Resume\UnreadableFileException;
13
use DaveRandom\Resume\UnsatisfiableRangeException;
14
use Symfony\Component\HttpFoundation\Response;
15
16
class PHPStreamer extends Streamer implements DirectStreamerInterface
17
{
18
    public function stream()
19
    {
20
        try {
21
            $rangeSet = RangeSet::createFromHeader(get_request_header('Range'));
22
            $resource = new FileResource($this->song->path);
23
            (new ResourceServlet($resource))->sendResource($rangeSet);
24
        } catch (InvalidRangeHeaderException $e) {
25
            abort(Response::HTTP_BAD_REQUEST);
26
        } catch (UnsatisfiableRangeException $e) {
27
            abort(Response::HTTP_REQUESTED_RANGE_NOT_SATISFIABLE);
28
        } catch (NonExistentFileException $e) {
29
            abort(Response::HTTP_NOT_FOUND);
30
        } catch (UnreadableFileException $e) {
31
            abort(Response::HTTP_INTERNAL_SERVER_ERROR);
32
        } catch (SendFileFailureException $e) {
33
            abort_unless(headers_sent(), Response::HTTP_INTERNAL_SERVER_ERROR);
34
            echo "An error occurred while attempting to send the requested resource: {$e->getMessage()}";
35
        }
36
37
        exit;
0 ignored issues
show
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
38
    }
39
}
40