Completed
Push — master ( 946ce1...b88926 )
by Matt
07:13 queued 01:16
created

UploadHelper::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace App\Service;
4
5
use Symfony\Component\HttpFoundation\File\Exception\FileException;
6
use Symfony\Component\HttpFoundation\File\File;
7
use Symfony\Component\HttpFoundation\File\UploadedFile;
8
use Symfony\Component\HttpKernel\Exception\HttpException;
9
use Symfony\Component\String\Slugger\SluggerInterface;
10
11
class UploadHelper
12
{
13
14
    /** @var SluggerInterface */
15
    private $slugger;
16
17
    /** @var string */
18
    private $gpxDirectory;
19
20
    public function __construct(
21
        SluggerInterface $slugger,
22
        string $gpxDirectory
23
    )
24
    {
25
        $this->slugger = $slugger;
26
        $this->gpxDirectory = $gpxDirectory;
27
    }
28
29
    public function uploadGpxFile(File $gpxFile): string
30
    {
31
        if ($gpxFile instanceof UploadedFile) {
32
            $originalFilename = pathinfo($gpxFile->getClientOriginalName(), PATHINFO_FILENAME);
33
        } else {
34
            $originalFilename = $gpxFile->getFilename();
35
        }
36
        $safeFilename = $this->slugger->slug(/** @scrutinizer ignore-type */ $originalFilename);
37
        $newFilename = $safeFilename . '-' . uniqid() . '.' . $gpxFile->guessExtension();
38
        try {
39
            $gpxFile->move(
40
                $this->gpxDirectory,
41
                $newFilename
42
            );
43
        }
44
        catch (FileException $e) {
45
            throw new HttpException(500, "Failed finishing GPX upload: " . $e->getMessage());
46
        }
47
        return $newFilename;
48
    }
49
}