module-filesystem icon indicating copy to clipboard operation
module-filesystem copied to clipboard

Replace Filesystem, FTP with FlySystem in order to support more filesystems

Open oparoz opened this issue 10 years ago • 6 comments

"FlySystem is a filesystem abstraction which allows you to easily swap out a local filesystem for a remote one. Reducing technical debt and chance of vendor lock-in."

It could replace the custom FileSystem and FTP modules and offer support for many more filesystems. Here is a list of what's available today :

  • Local
  • Azure
  • AWS S3 V2
  • AWS S3 V3
  • Copy.com
  • Dropbox
  • FTP / SFTP
  • GridFS
  • Memory
  • Rackspace
  • WebDAV
  • PHPCR
  • ZipArchive

The API

http://flysystem.thephpleague.com/api/

Write Files

$filesystem->write('path/to/file.txt', 'contents');

Update Files

$filesystem->update('path/to/file.txt', 'new contents');

Write or Update Files

$filesystem->put('path/to/file.txt', 'contents');

Read Files

$contents = $filesystem->read('path/to/file.txt');

Check if a file exists

$exists = $filesystem->has('path/to/file.txt');

Delete Files

$filesystem->delete('path/to/file.txt');

Read and Delete

$contents = $filesystem->readAndDelete('path/to/file.txt');

Rename Files

$filesystem->rename('filename.txt', 'newname.txt');

Copy Files

$filesystem->copy('filename.txt', 'duplicate.txt');

Get Mimetypes

$mimetype = $filesystem->getMimetype('path/to/file.txt');

Get Timestamps

$timestamp = $filesystem->getTimestamp('path/to/file.txt');

Get File Sizes

$size = $filesystem->getSize('path/to/file.txt');

Create Directories

$filesystem->createDir('path/to/nested/directory');

Directories are also made implicitly when writing to a deeper path

$filesystem->write('path/to/file.txt', 'contents');

Delete Directories

$filesystem->deleteDir('path/to/directory');

oparoz avatar Aug 12 '15 13:08 oparoz

Good idea. If you can get this module implemented that would be really cool!

DavertMik avatar Aug 17 '15 09:08 DavertMik

Hi, guys! We developed our version of the module and share it https://github.com/lamoda/codeception-flysystem currently supports 2 protocols (FTP, WebDAV), we already using it in our tests and will be happy if it will be useful for you. Comments/issues are welcome too :)

pavelsavelyev avatar Nov 19 '18 16:11 pavelsavelyev

@pavelsavelyev it looks like something we could take inspiration from!

It doesn't have any tests though...

SamMousa avatar Nov 19 '18 16:11 SamMousa

@SamMousa Thank you for your feedback :) We will add tests in the nearest future, already created an issue based on your advice https://github.com/lamoda/codeception-flysystem/issues/1

pavelsavelyev avatar Nov 19 '18 17:11 pavelsavelyev

Thanks, @pavelsavelyev Wow, just watched video from Badoo Meetup where this module was presented by your colleague. Looks awesome, I added it to our addons page https://codeception.com/addons

Probably we could have some chapter on filesystem testing in our documentation but I can't figure out where to put it. Maybe in Data testing? Maybe not )

DavertMik avatar Mar 21 '19 23:03 DavertMik

Oh, great news, really happy to see the module on Add-ons page, thank you @DavertMik :) In the nearest future, we extend supported formats by S3 (this sprint). And after that probably we will share a couple more modules. About where to put documentation, currently best options seems page Data, but not sure - everything is data :) and this page may become too big in perspective.

pavelsavelyev avatar Apr 01 '19 17:04 pavelsavelyev