From bd676931ee64479084fb9fcf6083cc581daaac5a Mon Sep 17 00:00:00 2001 From: Mike Meier Date: Fri, 5 Aug 2016 16:20:56 +0200 Subject: [PATCH] Fix StreamWriter and FilesystemWriter could not handle targets with sub-directories --- src/Resource/Writer/FilesystemWriter.php | 6 ++++- src/Resource/Writer/StreamWriter.php | 5 +++++ tests/Tests/Resource/FilesystemWriterTest.php | 22 +++++++++++++++++++ tests/Tests/Resource/StreamWriterTest.php | 22 +++++++++++++++++++ 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 tests/Tests/Resource/FilesystemWriterTest.php create mode 100644 tests/Tests/Resource/StreamWriterTest.php diff --git a/src/Resource/Writer/FilesystemWriter.php b/src/Resource/Writer/FilesystemWriter.php index cd6ceec..2bba475 100644 --- a/src/Resource/Writer/FilesystemWriter.php +++ b/src/Resource/Writer/FilesystemWriter.php @@ -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()); } } diff --git a/src/Resource/Writer/StreamWriter.php b/src/Resource/Writer/StreamWriter.php index 386e2d8..d5780c9 100644 --- a/src/Resource/Writer/StreamWriter.php +++ b/src/Resource/Writer/StreamWriter.php @@ -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(); diff --git a/tests/Tests/Resource/FilesystemWriterTest.php b/tests/Tests/Resource/FilesystemWriterTest.php new file mode 100644 index 0000000..4af69ab --- /dev/null +++ b/tests/Tests/Resource/FilesystemWriterTest.php @@ -0,0 +1,22 @@ +writeFromReader($reader, sys_get_temp_dir().'/stream/writer/test.php'); + $streamWriter->writeFromReader($reader, sys_get_temp_dir().'/test.php'); + } +} diff --git a/tests/Tests/Resource/StreamWriterTest.php b/tests/Tests/Resource/StreamWriterTest.php new file mode 100644 index 0000000..0204422 --- /dev/null +++ b/tests/Tests/Resource/StreamWriterTest.php @@ -0,0 +1,22 @@ +writeFromReader($reader, sys_get_temp_dir().'/stream/writer/test.php'); + $streamWriter->writeFromReader($reader, sys_get_temp_dir().'/test.php'); + } +}