A C++ library providing access to files located in various cloud services, licensed under GNU LGPLv2.1. It is focused on the basic operations on those services.
The library can be built on any platform which has a proper C++11 support. It was tested under the following operating systems:
jsoncpptinyxml2libmicrohttpd (optional)cURL (with OpenSSL/c-ares, optional)libcryptopp (optional, required for AmazonS3)mega (optional, required for mega.nz)The generic way to build and install it is:
./bootstrap
./configure
make
sudo make install
Optional dependency notes:
ICrypto interface needs to be implemented, can be explicitly disabled with --with-cryptopp=no.IHttp interface needs to be implemented, can be explicitly disabled with --with-curl=no.IHttpServer interface needs to be implemented, can be explicitly disabled with --with-microhttpd=no.LocalDrive provider representing local directory will be included, can be explicitly disabled with --with-filesystem=no.mega cloud provider will not be included, can be explicitly disabled with --with-mega=no.In bin/fuse there is implemented a user space file system using the fuse library. It will be built when fuse is found (unless explicitly disabled with --with-fuse=no). The file system is implemented using libfuse’s low level API; however a high level API implementation is also provided. The file system supports moving, renaming, creating directories, reading and writing new files. Writing over already-present files in cloud providers is not supported. The file system uses asynchronous I/O to its full potency. It doesn’t cache files anywhere by itself which implies no local storage overhead. Most cloud providers are fast enough when it comes to watching videos; with mega.nz being the fastest and Google Drive being the slowest.
It is possible to run libcloudstorage-fuse under Windows using Dokan’s fuse wrapper.
To add cloud providers to the file system, first the cloud providers need to be added. This can be done by calling:
libcloudstorage-fuse --add=provider_label
After cloud providers are added, the file system can be mounted using:
libcloudstorage-fuse mountpoint
In bin/cloudbrowser there is a program which provides an easy graphical user interface for all the features implemented in libcloudstorage. It will be built when its dependencies are found, unless explicitly disabled with --with-cloudbrowser=no.
Cloud Browser dependencies:
Qt5Core, Qt5Gui, Qt5QuickkirigamiQt5WebView — when found, Cloud Browser will use it to present the authorization schemelibffmpegthumbnailer — when found, Cloud Browser will generate fallback thumbnails if a cloud provider doesn’t provide anyvlc-qt — when found, Cloud Browser will use a vlc-based media player instead of the QtMultimedia-based one