libcloudstorage
libcloudstorage copied to clipboard
Official libcloudstorage repository.
libcloudstorage
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.
Supported cloud providers:
-
GoogleDrive
-
OneDrive
-
Dropbox
-
box.com
-
YandexDisk
-
WebDAV
-
mega.nz
-
AmazonS3
-
pCloud
-
hubiC
-
4shared
-
Google Photos
(partial)
Supported operations on files:
-
list directory
-
download file
-
upload file
-
get thumbnail
-
delete file
-
create directory
-
move file
-
rename file
-
fetch direct, preauthenticated url to file
Requirements:
-
jsoncpp
-
tinyxml2
-
libmicrohttpd
(optional) -
cURL
(withOpenSSL
/c-ares
, optional) -
libcryptopp
(optional, required forAmazonS3
) -
mega
(optional, required formega.nz
)
Building:
The generic way to build and install it is:
-
mkdir build && cd build && cmake .. && make && sudo make install
Optional dependency notes:
-
libcryptopp
:when not found,
ICrypto
interface needs to be implemented -
libcurl
when not found,
IHttp
interface needs to be implemented -
libmicrohttpd
when not found,
IHttpServer
interface needs to be implemented -
boost-filesystem
when found,
LocalDrive
provider representing local directory will be included -
mega
when not found,
mega
cloud provider will not be included
FUSE:
In bin/fuse
there is implemented a user space file system using fuse
(https://github.com/libfuse/libfuse) library. It will be build when fuse
is
found. The file system is implemented using libfuse
's low level api; however
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 provider 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.
Windows:
It is possible to run cloudstorage-fuse
under Windows
using Dokan
(https://github.com/dokan-dev/dokany).
Usage:
To add cloud providers to file system, first the cloud providers need to be added. This can be done by calling:
cloudstorage-fuse --add=provider_label
After cloud providers are added, the file system can be mount using:
cloudstorage-fuse mountpoint
Cloud Browser:
In bin/cloudbrowser
there is a program which provides easy graphics user
interface for all the features implemented in libcloudstorage
. It will be
built when its dependencies are found.
Cloud Browser dependencies:
-
Qt5Core
,Qt5Gui
,Qt5Quick
-
kirigami
(https://github.com/KDE/kirigami) -
Qt5WebView
when found, Cloud Browser will use it to present the authorization scheme
-
ffmpeg
when found, Cloud Browser will generate fallback thumbnails if cloud provider doesn't provide any
-
mpv
when found, Cloud Browser will use mpv-based media player
Screenshot:

Apps that use libcloudstorage:
- https://play.google.com/store/apps/details?id=io.storage.cloudbrowser
- https://www.microsoft.com/en-us/p/cloud-storage-browser/9nbkjrh757k7
TODO:
Implement following cloud providers:
-
Apple ICloud
-
Asus WebStorage
-
Baidu Cloud
-
CloudMe
-
FileDropper
-
Fileserve
-
Handy Backup
-
IBM Connections
-
Jumpshare
-
MagicVortex
-
MediaFire
-
Pogoplug
-
SpiderOak
-
SugarSync
-
Tencent Weiyun
-
TitanFile
-
Tresorit
-
XXL Box
Implement bindings to various languages, notably script languages:
-
Obj-C
-
python
-
ruby
-
JavaScript
/node
-
Java
Integrate in various desktops
-
KIO
slave -
gvfs
implementation
Implement chunked uploads.