StreamedCopyTrait   A
last analyzed

Coupling/Cohesion

Components 0
Dependencies 1

Complexity

Total Complexity 5

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

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

3 Methods

Rating   Name   Duplication   Size   Complexity  
B 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 2
        }
30
31 6
        return $result !== false;
32
    }
33
34
    // Required abstract method
35
36
    /**
37
     * @param  string   $path
38
     * @return resource
39
     */
40
    abstract public function readStream($path);
41
42
    /**
43
     * @param  string   $path
44
     * @param  resource $resource
45
     * @param  Config   $config
46
     * @return resource
47
     */
48
    abstract public function writeStream($path, $resource, Config $config);
49
}
50