Passed
Push — master ( 478a8d...e9ee2b )
by Doug
62:21
created

GridFile::__construct()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 13
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 7
c 1
b 0
f 0
nc 3
nop 1
dl 0
loc 13
rs 10
1
<?php
2
/**
3
 * PHPCoord.
4
 *
5
 * @author Doug Wright
6
 */
7
declare(strict_types=1);
8
9
namespace PHPCoord\CoordinateOperation;
10
11
use SplFileObject;
12
use ZipArchive;
13
14
use function assert;
15
use function file_exists;
16
use function sys_get_temp_dir;
17
use function str_ends_with;
18
19
/**
20
 * @internal
21
 */
22
class GridFile extends SplFileObject
23
{
24
    public function __construct(string $filename)
25
    {
26
        if (str_ends_with($filename, '.zip')) {
27
            $zip = new ZipArchive();
28
            $zip->open($filename);
29
            $filename = sys_get_temp_dir() . '/' . $zip->getNameIndex(0); // only 1 file inside
30
31
            if (!file_exists($filename)) {
32
                $zip->extractTo(sys_get_temp_dir());
33
            }
34
        }
35
36
        parent::__construct($filename);
37
    }
38
39
    public function fgets(): string
40
    {
41
        $result = parent::fgets();
42
        assert($result !== false);
43
44
        return $result;
45
    }
46
47
    public function fread(int $length): string
48
    {
49
        $result = parent::fread($length);
50
        assert($result !== false);
51
52
        return $result;
53
    }
54
}
55