Completed
Push — master ( 0406ad...05b406 )
by Freek
29:56 queued 16:17
created

FileAdderFactory::createAllFromRequest()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
1
<?php
2
3
namespace Spatie\MediaLibrary\FileAdder;
4
5
use Illuminate\Database\Eloquent\Model;
6
use Spatie\MediaLibrary\Exceptions\FileCannotBeAdded\RequestDoesNotHaveFile;
7
8
class FileAdderFactory
9
{
10
    /**
11
     * @param \Illuminate\Database\Eloquent\Model                        $subject
12
     * @param string|\Symfony\Component\HttpFoundation\File\UploadedFile $file
13
     *
14
     * @return \Spatie\MediaLibrary\FileAdder\FileAdder
15
     */
16
    public static function create(Model $subject, $file)
17
    {
18
        return app(FileAdder::class)
19
            ->setSubject($subject)
20
            ->setFile($file);
21
    }
22
23
    /**
24
     * @param \Illuminate\Database\Eloquent\Model $subject
25
     * @param string                              $key
26
     *
27
     * @return \Spatie\MediaLibrary\FileAdder\FileAdder
28
     *
29
     * @throws \Spatie\MediaLibrary\Exceptions\FileCannotBeAdded
30
     */
31
    public static function createFromRequest(Model $subject, string $key)
32
    {
33
        return array_values(static::createMultipleFromRequest($subject, [$key]))[0];
34
    }
35
36
    /**
37
     * @param Model    $subject
38
     * @param string[] $keys
39
     *
40
     * @return \Spatie\MediaLibrary\FileAdder\FileAdder[]
41
     *
42
     * @throws RequestDoesNotHaveFile
43
     */
44
    public static function createMultipleFromRequest(Model $subject, array $keys = [])
45
    {
46
        $fileAdders = [];
47
48
        foreach ($keys as $key) {
49
            if (! request()->hasFile($key)) {
50
                throw RequestDoesNotHaveFile::create($key);
51
            }
52
53
            $fileAdders[] = static::create($subject, request()->file($key));
54
        }
55
56
        return $fileAdders;
57
    }
58
59
    /**
60
     * @param Model $subject
61
     *
62
     * @return FileAdder[]
63
     */
64
    public static function createAllFromRequest(Model $subject)
65
    {
66
        $allFileKeys = array_keys(request()->allFiles());
67
68
        return static::createMultipleFromRequest($subject, $allFileKeys);
69
    }
70
}
71