Skip to content

Commit 63d8d7b

Browse files
authored
Merge pull request #113 from mikemeier/master
Fix Writers could not handle targets with sub-directories
2 parents b0316a0 + bd67693 commit 63d8d7b

File tree

4 files changed

+54
-1
lines changed

4 files changed

+54
-1
lines changed

src/Resource/Writer/FilesystemWriter.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@
77

88
class FilesystemWriter implements ResourceWriter
99
{
10-
1110
/**
1211
* @param ResourceReader $reader
1312
* @param string $target
1413
*/
1514
public function writeFromReader(ResourceReader $reader, $target)
1615
{
16+
$directory = dirname($target);
17+
if (!is_dir($directory)) {
18+
mkdir($directory, 0777, true);
19+
}
20+
1721
file_put_contents($target, $reader->getContentsAsStream());
1822
}
1923
}

src/Resource/Writer/StreamWriter.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ class StreamWriter implements ResourceWriter
1313
*/
1414
public function writeFromReader(ResourceReader $reader, $target)
1515
{
16+
$directory = dirname($target);
17+
if (!is_dir($directory)) {
18+
mkdir($directory, 0777, true);
19+
}
20+
1621
$targetResource = fopen($target, 'w+');
1722
$sourceResource = $reader->getContentsAsStream();
1823

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace Alchemy\Zippy\Tests\Resource;
4+
5+
use Alchemy\Zippy\Resource\Reader\Stream\StreamReader;
6+
use Alchemy\Zippy\Resource\Resource;
7+
use Alchemy\Zippy\Resource\Writer\FilesystemWriter;
8+
use Alchemy\Zippy\Tests\TestCase;
9+
10+
class FilesystemWriterTest extends TestCase
11+
{
12+
public function testWriteFromReader()
13+
{
14+
$resource = new Resource(fopen(__FILE__, 'r'), fopen(__FILE__, 'r'));
15+
$reader = new StreamReader($resource);
16+
17+
$streamWriter = new FilesystemWriter();
18+
19+
$streamWriter->writeFromReader($reader, sys_get_temp_dir().'/stream/writer/test.php');
20+
$streamWriter->writeFromReader($reader, sys_get_temp_dir().'/test.php');
21+
}
22+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace Alchemy\Zippy\Tests\Resource;
4+
5+
use Alchemy\Zippy\Resource\Reader\Stream\StreamReader;
6+
use Alchemy\Zippy\Resource\Resource;
7+
use Alchemy\Zippy\Resource\Writer\StreamWriter;
8+
use Alchemy\Zippy\Tests\TestCase;
9+
10+
class StreamWriterTest extends TestCase
11+
{
12+
public function testWriteFromReader()
13+
{
14+
$resource = new Resource(fopen(__FILE__, 'r'), fopen(__FILE__, 'r'));
15+
$reader = new StreamReader($resource);
16+
17+
$streamWriter = new StreamWriter();
18+
19+
$streamWriter->writeFromReader($reader, sys_get_temp_dir().'/stream/writer/test.php');
20+
$streamWriter->writeFromReader($reader, sys_get_temp_dir().'/test.php');
21+
}
22+
}

0 commit comments

Comments
 (0)