| 
 | 1 | +<?php  | 
 | 2 | + | 
 | 3 | +namespace App\Http\Controllers\Media;  | 
 | 4 | + | 
 | 5 | +use App\Http\Controllers\Controller;  | 
 | 6 | +use App\Jobs\VideoEncodingJob;  | 
 | 7 | +use App\Models\Content;  | 
 | 8 | +use Illuminate\Http\Request;  | 
 | 9 | +use Illuminate\Http\UploadedFile;  | 
 | 10 | +use Pion\Laravel\ChunkUpload\Handler\ContentRangeUploadHandler;  | 
 | 11 | +use Pion\Laravel\ChunkUpload\Receiver\FileReceiver;  | 
 | 12 | + | 
 | 13 | +class VideosController extends Controller  | 
 | 14 | +{  | 
 | 15 | +    public function index(Content $content)  | 
 | 16 | +    {  | 
 | 17 | +        return inertia('media/videos/Upload', compact('content'));  | 
 | 18 | +    }  | 
 | 19 | + | 
 | 20 | +    /**  | 
 | 21 | +     * Quando realizar a opção de upar algo  | 
 | 22 | +     * 3 - Expor a rota para receber os chuncks do video upado  | 
 | 23 | +     */  | 
 | 24 | +    public function store(Request $request, Content $content)  | 
 | 25 | +    {  | 
 | 26 | +        $video = $content->videos()->create([  | 
 | 27 | +            'code' => str()->uuid(),  | 
 | 28 | +            'name' => $request->name,  | 
 | 29 | +        ]);  | 
 | 30 | + | 
 | 31 | +        return $video;  | 
 | 32 | +    }  | 
 | 33 | + | 
 | 34 | +    public function update(Content $content, $video, Request $request)  | 
 | 35 | +    {  | 
 | 36 | +        $video = $content->videos()->findOrFail($video);  | 
 | 37 | + | 
 | 38 | +        $video->update([  | 
 | 39 | +            'name' => $request->name,  | 
 | 40 | +            'description' => $request->description  | 
 | 41 | +        ]);  | 
 | 42 | + | 
 | 43 | +        return redirect()->back();  | 
 | 44 | +    }  | 
 | 45 | + | 
 | 46 | +    public function destroy(Content $content, $video)  | 
 | 47 | +    {  | 
 | 48 | +        $video = $content->videos()->findOrFail($video);  | 
 | 49 | +        $video->delete();  | 
 | 50 | + | 
 | 51 | +        return redirect()->back();  | 
 | 52 | +    }  | 
 | 53 | + | 
 | 54 | +    public function processChunck(Content $content, $video, Request $request)  | 
 | 55 | +    {  | 
 | 56 | +        $receiver = new FileReceiver(  | 
 | 57 | +            UploadedFile::fake()->createWithContent('file', $request->getContent()),  | 
 | 58 | +            $request,  | 
 | 59 | +            ContentRangeUploadHandler::class  | 
 | 60 | +        );  | 
 | 61 | + | 
 | 62 | +        $save = $receiver->receive();  | 
 | 63 | + | 
 | 64 | +        if($save->isFinished()) {  | 
 | 65 | +            $video = $content->videos()->findOrFail($video);  | 
 | 66 | + | 
 | 67 | +            $video->update([  | 
 | 68 | +                'video' => $save->getFile()->storeAs('', str()->uuid(), 'videos')  | 
 | 69 | +            ]);  | 
 | 70 | + | 
 | 71 | +            dispatch(new VideoEncodingJob($video));  | 
 | 72 | +        }  | 
 | 73 | + | 
 | 74 | +        $save->handler();  | 
 | 75 | +    }  | 
 | 76 | +}  | 
0 commit comments