MrPoudel / libcloudstorage

Official libcloudstorage repository.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

libcloudstorage

Build status Build Status Coverity Scan Build Status Codacy Badge Discord License: LGPLv2.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)

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:

Installation commands for Ubuntu:

  • Install json:
sudo apt-get install libjsoncpp-dev
  • Install tinyxml2:
  • Install curl from development :
  • Install microhttpd:
sudo apt install libmicrohttpd-dev
  • Update the submodules in the repo:
git submodule update --init
# if there are nested submodules:
git submodule update --init --recursive
  • Install fuse library:
sudo apt-get install libjsoncpp-dev

Basic instruction for creating devices mounting point:

  • List the name of the usb/external disk
sudo fdisk -l 

Let's say it's /dev/sda1
  • Mount to the specific location
sudo mount /dev/sda1/ /home/bal/pen_drive

#Note: /home/bal/pen_drive must exist.
  • Do the operatins on ../pen_drive
#e.g. mkdir etc.
  • Unmount the disk
sudo umount  /dev/sda1

#That's it.

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:

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.

About

Official libcloudstorage repository.

License:Other


Languages

Language:C++ 82.3%Language:Shell 8.2%Language:QML 4.1%Language:CMake 2.7%Language:HTML 1.4%Language:Java 1.1%Language:C 0.1%Language:Objective-C++ 0.1%