StreamedCopyTrait   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 1
dl 0
loc 45
ccs 8
cts 8
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A copy() 0 16 5
readStream() 0 1 ?
writeStream() 0 1 ?
1
<?php
2
3
namespace League\Flysystem\Adapter\Polyfill;
4
5
use League\Flysystem\Config;
6
7
trait StreamedCopyTrait
8
{
9
    /**
10
     * Copy a file.
11
     *
12
     * @param string $path
13
     * @param string $newpath
14
     *
15
     * @return bool
16
     */
17 9
    public function copy($path, $newpath)
18
    {
19 9
        $response = $this->readStream($path);
20
21 9
        if ($response === false || ! is_resource($response['stream'])) {
22 3
            return false;
23
        }
24
25 6
        $result = $this->writeStream($newpath, $response['stream'], new Config());
26
27 6
        if ($result !== false && is_resource($response['stream'])) {
28 3
            fclose($response['stream']);
29
        }
30
31 6
        return $result !== false;
32
    }
33
34
    // Required abstract method
35
36
    /**
37
     * @param string $path
38
     *
39
     * @return resource
40
     */
41
    abstract public function readStream($path);
42
43
    /**
44
     * @param string   $path
45
     * @param resource $resource
46
     * @param Config   $config
47
     *
48
     * @return resource
49
     */
50
    abstract public function writeStream($path, $resource, Config $config);
51
}
52