Giter Club home page Giter Club logo

libcloudstorage

Build status Build Status Coverity Scan Build Status Codacy Badge Discord License: LGPL v2.1

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)
  • YouTube (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:

Building:

The generic way to build and install it is:

  • ./bootstrap
  • ./configure
  • make
  • sudo make install

Optional dependency notes:

  • libcryptopp:

    when not found, ICrypto interface needs to be implemented, can be
    explicitly disabled with --with-cryptopp=no

  • libcurl

    when not found, IHttp interface needs to be implemented, can be explicitly
    disabled with --with-curl=no

  • libmicrohttpd

    when not found, IHttpServer interface needs to be implemented, can be
    explicitly disabled with --with-microhttpd=no

  • boost-filesystem

    when found, LocalDrive provider representing local directory will be
    included, can be explicitly disabled with --with-filesystem=no

  • mega

    when not found, mega cloud provider will not be included, can be
    explicitly disabled with --with-mega=no

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 (unless explicitly disabled with --with-fuse=no). 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, unless explicitly disabled with
--with-cloudbrowser=no.

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

  • vlc-qt (https://github.com/vlc-qt/vlc-qt)

    when found, Cloud Browser will use vlc-based media player instead of
    QtMultimedia-based one

  • mpv

    when found, Cloud Browser will use mpv-based media player

Screenshot:

Apps that use libcloudstorage:

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.

libcloudstorage's Projects

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.