Code Duplication    Length = 57-57 lines in 2 locations

src/Adapter/Pear/Tar/TarResourceIterator.php 1 location

@@ 13-69 (lines=57) @@
10
use Alchemy\Zippy\Resource\ResourceReaderResolver;
11
use Alchemy\Zippy\Resource\ResourceUri;
12
13
class TarResourceIterator extends AbstractIterator implements ResourceReaderResolver
14
{
15
    /**
16
     * @var \Archive_Tar
17
     */
18
    private $archive;
19
20
    /**
21
     * @var PackagedResource
22
     */
23
    private $container;
24
25
    /**
26
     * @param PackagedResource $container
27
     */
28
    public function __construct(PackagedResource $container)
29
    {
30
        $this->container = $container;
31
        $this->archive = new \Archive_Tar($container->getRelativeUri()->getResource());
32
    }
33
34
    /**
35
     * @return PackagedResource
36
     */
37
    public function current()
38
    {
39
        $resource = $this->getIterator()->current();
40
41
        return new PackagedResource(
42
            $resource,
43
            $this,
44
            $this->container->getWriterResolver(),
45
            $this->container
46
        );
47
    }
48
49
    /**
50
     * @return \ArrayIterator
51
     */
52
    protected function buildIterator()
53
    {
54
        return new MappingArrayIterator($this->archive->listContent(), function ($current) {
55
            return ResourceUri::fromString($current['filename']);
56
        });
57
    }
58
59
    /**
60
     * Resolves a reader for the given resource URI.
61
     *
62
     * @param ResourceUri $resource
63
     * @return ResourceReader
64
     */
65
    public function resolveReader(ResourceUri $resource)
66
    {
67
        return new StringReader($this->archive->extractInString($resource->getResource()));
68
    }
69
}
70

src/Adapter/Pecl/Rar/RarResourceIterator.php 1 location

@@ 13-69 (lines=57) @@
10
use Alchemy\Zippy\Resource\ResourceReaderResolver;
11
use Alchemy\Zippy\Resource\ResourceUri;
12
13
class RarResourceIterator extends AbstractIterator implements ResourceReaderResolver
14
{
15
    /**
16
     * @var \RarArchive
17
     */
18
    private $archive;
19
20
    /**
21
     * @var PackagedResource
22
     */
23
    private $container;
24
25
    /**
26
     * @param PackagedResource $container
27
     */
28
    public function __construct(PackagedResource $container)
29
    {
30
        $this->container = $container;
31
        $this->archive = \RarArchive::open($container->getAbsoluteUri()->getResource());
32
    }
33
34
    /**
35
     * @return \Iterator
36
     */
37
    protected  function buildIterator()
38
    {
39
        return new MappingArrayIterator($this->archive->getEntries(), function ($current) {
40
            return ResourceUri::fromString($current->getName());
41
        });
42
    }
43
44
    /**
45
     * @return PackagedResource
46
     */
47
    public function current()
48
    {
49
        $resource = $this->getIterator()->current();
50
51
        return new PackagedResource(
52
            $resource,
53
            $this,
54
            $this->container->getWriterResolver(),
55
            $this->container
56
        );
57
    }
58
59
    /**
60
     * Resolves a reader for the given resource URI.
61
     *
62
     * @param ResourceUri $resource
63
     * @return ResourceReader
64
     */
65
    public function resolveReader(ResourceUri $resource)
66
    {
67
        return new RawStreamReader($this->archive->getEntry($resource->getResource())->getStream());
68
    }
69
}
70