Skip to content

Commit

Permalink
Merge pull request #113 from mikemeier/master
Browse files Browse the repository at this point in the history
Fix Writers could not handle targets with sub-directories
  • Loading branch information
aztech-dev authored Aug 5, 2016
2 parents b0316a0 + bd67693 commit 63d8d7b
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/Resource/Writer/FilesystemWriter.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,17 @@

class FilesystemWriter implements ResourceWriter
{

/**
* @param ResourceReader $reader
* @param string $target
*/
public function writeFromReader(ResourceReader $reader, $target)
{
$directory = dirname($target);
if (!is_dir($directory)) {
mkdir($directory, 0777, true);
}

file_put_contents($target, $reader->getContentsAsStream());
}
}
5 changes: 5 additions & 0 deletions src/Resource/Writer/StreamWriter.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ class StreamWriter implements ResourceWriter
*/
public function writeFromReader(ResourceReader $reader, $target)
{
$directory = dirname($target);
if (!is_dir($directory)) {
mkdir($directory, 0777, true);
}

$targetResource = fopen($target, 'w+');
$sourceResource = $reader->getContentsAsStream();

Expand Down
22 changes: 22 additions & 0 deletions tests/Tests/Resource/FilesystemWriterTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Alchemy\Zippy\Tests\Resource;

use Alchemy\Zippy\Resource\Reader\Stream\StreamReader;
use Alchemy\Zippy\Resource\Resource;
use Alchemy\Zippy\Resource\Writer\FilesystemWriter;
use Alchemy\Zippy\Tests\TestCase;

class FilesystemWriterTest extends TestCase
{
public function testWriteFromReader()
{
$resource = new Resource(fopen(__FILE__, 'r'), fopen(__FILE__, 'r'));
$reader = new StreamReader($resource);

$streamWriter = new FilesystemWriter();

$streamWriter->writeFromReader($reader, sys_get_temp_dir().'/stream/writer/test.php');
$streamWriter->writeFromReader($reader, sys_get_temp_dir().'/test.php');
}
}
22 changes: 22 additions & 0 deletions tests/Tests/Resource/StreamWriterTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Alchemy\Zippy\Tests\Resource;

use Alchemy\Zippy\Resource\Reader\Stream\StreamReader;
use Alchemy\Zippy\Resource\Resource;
use Alchemy\Zippy\Resource\Writer\StreamWriter;
use Alchemy\Zippy\Tests\TestCase;

class StreamWriterTest extends TestCase
{
public function testWriteFromReader()
{
$resource = new Resource(fopen(__FILE__, 'r'), fopen(__FILE__, 'r'));
$reader = new StreamReader($resource);

$streamWriter = new StreamWriter();

$streamWriter->writeFromReader($reader, sys_get_temp_dir().'/stream/writer/test.php');
$streamWriter->writeFromReader($reader, sys_get_temp_dir().'/test.php');
}
}

0 comments on commit 63d8d7b

Please sign in to comment.