diff --git a/SpacesAPI/File.php b/SpacesAPI/File.php index 6917d3e..789a9f0 100644 --- a/SpacesAPI/File.php +++ b/SpacesAPI/File.php @@ -224,6 +224,19 @@ class File return new self($this->space, $newFilename); } + /** + * @param string $newFilename + * + * @return \SpacesAPI\File + */ + public function move(string $newFilename): File + { + $newFile = $this->copy($newFilename, $this->isPublic()); + $this->delete(); + + return $newFile; + } + /** * Get the public URL * This URL will not work if the file is private diff --git a/docs/File.md b/docs/File.md index f347f44..bdca5b1 100644 --- a/docs/File.md +++ b/docs/File.md @@ -30,6 +30,7 @@ Rather obtain an instance from `\SpacesAPI\Space::list()`, `\SpacesAPI\Spaces::f |[isPublic](#fileispublic)|Is this file publicly accessible| |[makePrivate](#filemakeprivate)|Make file non-publicly accessible| |[makePublic](#filemakepublic)|Make file publicly accessible| +|[move](#filemove)|Move and/or rename file| @@ -288,4 +289,28 @@ Make file publicly accessible `void` +
+ + +### File::move + +**Description** + +```php +public move (string $newFilename) +``` + +Move or rename a file +The `File` instance on which you call `move` will become invalid and calling methods on it will result in a `FileDoesntExistException` + + +**Parameters** + +* `(string) $newFilename` + +**Return Values** + +`\SpacesAPI\File` : An instance for the new file + +
diff --git a/tests/FileTest.php b/tests/FileTest.php index f5c7f2c..aa5174b 100644 --- a/tests/FileTest.php +++ b/tests/FileTest.php @@ -62,6 +62,17 @@ class FileTest extends TestCase self::$space->file('lorem-ipsum-2.txt'); } + public function testCanMoveRenameFile() + { + $file = self::$file->copy('test.txt'); + $file->move('renamed-file.txt'); + + $this->assertEquals("Lorem ipsum", self::$space->file('renamed-file.txt')->getContents()); + + $this->expectException(FileDoesntExistException::class); + self::$space->file('test.txt'); + } + public function testCanGetURL() { $this->assertStringContainsString('lorem-ipsum.txt', self::$file->getURL());