GithubHelp home page GithubHelp logo

libcloudstorage / libcloudstorage Goto Github PK

View Code? Open in Web Editor NEW
5.0 3.0 0.0 3.57 MB

License: Other

Makefile 0.52% QML 2.17% Prolog 0.10% Java 0.53% HTML 0.70% C++ 92.26% C 1.24% Shell 1.38% M4 1.11%
googledrive dropbox onedrive mega amazondrive box yandexdisk webdav amazons3 youtube

libcloudstorage's Introduction

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 People

Contributors

chouquette avatar dbtdsilva avatar jbkempf avatar lemourin avatar notmart avatar starsep avatar wojcu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

libcloudstorage's Issues

make[1]: *** [Makefile:922: CloudProvider/MegaNz.lo] Error 1

I have followed the instructions to install all dependencies. I have successfully built and installed Mega SDK. Then I proceeded to build libcloudstorage, however, I'm encountering errors:

$ make -j4
Making all in src
make[1]: Entering directory '/home/alex/.repos/.not_mine/libcloudstorage/src'
  CXX      Utility/Auth.lo
  CXX      Utility/CloudStorage.lo
  CXX      Utility/Item.lo
  CXX      Utility/Utility.lo
  CXX      Utility/CryptoPP.lo
  CXX      Utility/CurlHttp.lo
  CXX      Utility/MicroHttpdServer.lo
  CXX      Utility/ThreadPool.lo
  CXX      Utility/FileServer.lo
  CXX      Utility/CloudAccess.lo
  CXX      Utility/CloudEventLoop.lo
  CXX      Utility/CloudFactory.lo
  CXX      Utility/GenerateThumbnail.lo
  CXX      Utility/HttpServer.lo
  CXX      Utility/LoginPage.lo
  CXX      CloudProvider/CloudProvider.lo
  CXX      CloudProvider/GoogleDrive.lo
  CXX      CloudProvider/OneDrive.lo
  CXX      CloudProvider/Dropbox.lo
  CXX      CloudProvider/AmazonS3.lo
  CXX      CloudProvider/Box.lo
  CXX      CloudProvider/YouTube.lo
  CXX      CloudProvider/YandexDisk.lo
  CXX      CloudProvider/WebDav.lo
  CXX      CloudProvider/PCloud.lo
  CXX      CloudProvider/HubiC.lo
  CXX      CloudProvider/GooglePhotos.lo
  CXX      CloudProvider/MegaNz.lo
  CXX      CloudProvider/LocalDrive.lo
  CXX      CloudProvider/LocalDriveWinRT.lo
  CXX      CloudProvider/AnimeZone.lo
CloudProvider/MegaNz.cpp:294:8: error: ‘void cloudstorage::{anonymous}::App::transfer_failed(mega::Transfer*, mega::error, mega::dstime)’ marked ‘override’, but does not override
  294 |   void transfer_failed(Transfer*, error, dstime time) override {
      |        ^~~~~~~~~~~~~~~
CloudProvider/MegaNz.cpp:299:10: error: ‘mega::dstime cloudstorage::{anonymous}::App::pread_failure(mega::error, int, void*, mega::dstime)’ marked ‘override’, but does not override
  299 |   dstime pread_failure(error e, int retry, void* d, dstime) override {
      |          ^~~~~~~~~~~~~
CloudProvider/MegaNz.cpp:348:8: error: ‘void cloudstorage::{anonymous}::App::fetchnodes_result(mega::error)’ marked ‘override’, but does not override
  348 |   void fetchnodes_result(error e) override { call(e, e); }
      |        ^~~~~~~~~~~~~~~~~
CloudProvider/MegaNz.cpp:358:8: error: ‘void cloudstorage::{anonymous}::App::putnodes_result(mega::error, mega::targettype_t, mega::NewNode*)’ marked ‘override’, but does not override
  358 |   void putnodes_result(error e, targettype_t, NewNode* nodes) override {
      |        ^~~~~~~~~~~~~~~
CloudProvider/MegaNz.cpp:661:10: error: ‘void cloudstorage::{anonymous}::CloudFileSystemAccess::CloudFileAccess::updatelocalname(std::string*)’ marked ‘override’, but does not override
  661 |     void updatelocalname(string* d) override { fopen(d, true, false); }
      |          ^~~~~~~~~~~~~~~
CloudProvider/MegaNz.cpp:662:10: error: ‘bool cloudstorage::{anonymous}::CloudFileSystemAccess::CloudFileAccess::fopen(std::string*, bool, bool)’ marked ‘override’, but does not override
  662 |     bool fopen(string* str, bool, bool) override {
      |          ^~~~~
CloudProvider/MegaNz.cpp:691:8: error: ‘void cloudstorage::{anonymous}::CloudFileSystemAccess::tmpnamelocal(std::string*) const’ marked ‘override’, but does not override
  691 |   void tmpnamelocal(string*) const override {}
      |        ^~~~~~~~~~~~
CloudProvider/MegaNz.cpp:692:8: error: ‘bool cloudstorage::{anonymous}::CloudFileSystemAccess::getsname(std::string*, std::string*) const’ marked ‘override’, but does not override
  692 |   bool getsname(string*, string*) const override { return false; }
      |        ^~~~~~~~
CloudProvider/MegaNz.cpp:693:8: error: ‘bool cloudstorage::{anonymous}::CloudFileSystemAccess::renamelocal(std::string*, std::string*, bool)’ marked ‘override’, but does not override
  693 |   bool renamelocal(string*, string*, bool) override { return false; }
      |        ^~~~~~~~~~~
CloudProvider/MegaNz.cpp:694:8: error: ‘bool cloudstorage::{anonymous}::CloudFileSystemAccess::copylocal(std::string*, std::string*, mega::m_time_t)’ marked ‘override’, but does not override
  694 |   bool copylocal(string*, string*, m_time_t) override { return false; }
      |        ^~~~~~~~~
CloudProvider/MegaNz.cpp:695:8: error: ‘bool cloudstorage::{anonymous}::CloudFileSystemAccess::unlinklocal(std::string*)’ marked ‘override’, but does not override
  695 |   bool unlinklocal(string*) override { return false; }
      |        ^~~~~~~~~~~
CloudProvider/MegaNz.cpp:696:8: error: ‘bool cloudstorage::{anonymous}::CloudFileSystemAccess::rmdirlocal(std::string*)’ marked ‘override’, but does not override
  696 |   bool rmdirlocal(string*) override { return false; }
      |        ^~~~~~~~~~
CloudProvider/MegaNz.cpp:697:8: error: ‘bool cloudstorage::{anonymous}::CloudFileSystemAccess::mkdirlocal(std::string*, bool)’ marked ‘override’, but does not override
  697 |   bool mkdirlocal(string*, bool) override { return false; }
      |        ^~~~~~~~~~
CloudProvider/MegaNz.cpp:698:8: error: ‘bool cloudstorage::{anonymous}::CloudFileSystemAccess::setmtimelocal(std::string*, mega::m_time_t)’ marked ‘override’, but does not override
  698 |   bool setmtimelocal(string*, m_time_t) override { return false; }
      |        ^~~~~~~~~~~~~
CloudProvider/MegaNz.cpp:699:8: error: ‘bool cloudstorage::{anonymous}::CloudFileSystemAccess::chdirlocal(std::string*) const’ marked ‘override’, but does not override
  699 |   bool chdirlocal(string*) const override { return false; }
      |        ^~~~~~~~~~
CloudProvider/MegaNz.cpp:700:10: error: ‘size_t cloudstorage::{anonymous}::CloudFileSystemAccess::lastpartlocal(std::string*) const’ marked ‘override’, but does not override
  700 |   size_t lastpartlocal(string*) const override { return 0; }
      |          ^~~~~~~~~~~~~
CloudProvider/MegaNz.cpp:701:8: error: ‘bool cloudstorage::{anonymous}::CloudFileSystemAccess::getextension(std::string*, char*, int) const’ marked ‘override’, but does not override
  701 |   bool getextension(string*, char*, int) const override { return false; }
      |        ^~~~~~~~~~~~
CloudProvider/MegaNz.cpp:702:8: error: ‘bool cloudstorage::{anonymous}::CloudFileSystemAccess::issyncsupported(std::string*, bool*)’ marked ‘override’, but does not override
  702 |   bool issyncsupported(string*, bool*) override { return false; }
      |        ^~~~~~~~~~~~~~~
CloudProvider/MegaNz.cpp:703:8: error: ‘bool cloudstorage::{anonymous}::CloudFileSystemAccess::expanselocalpath(std::string*, std::string*)’ marked ‘override’, but does not override
  703 |   bool expanselocalpath(string*, string*) override { return false; }
      |        ^~~~~~~~~~~~~~~~
CloudProvider/MegaNz.cpp:705:8: error: ‘void cloudstorage::{anonymous}::CloudFileSystemAccess::local2path(std::string*, std::string*) const’ marked ‘override’, but does not override
  705 |   void local2path(string*, string*) const override {}
      |        ^~~~~~~~~~
CloudProvider/MegaNz.cpp:706:8: error: ‘void cloudstorage::{anonymous}::CloudFileSystemAccess::path2local(std::string*, std::string*) const’ marked ‘override’, but does not override
  706 |   void path2local(string*, string*) const override {}
      |        ^~~~~~~~~~
CloudProvider/MegaNz.cpp:708:15: error: ‘mega::FileAccess* cloudstorage::{anonymous}::CloudFileSystemAccess::newfileaccess()’ marked ‘override’, but does not override
  708 |   FileAccess* newfileaccess() override { return new CloudFileAccess(this); }
      |               ^~~~~~~~~~~~~
CloudProvider/MegaNz.cpp: In member function ‘bool cloudstorage::{anonymous}::CloudFileSystemAccess::CloudFileAccess::fopen(std::string*, bool, bool)’:
CloudProvider/MegaNz.cpp:663:7: error: ‘localname’ was not declared in this scope; did you mean ‘local2name’?
  663 |       localname = *str;
      |       ^~~~~~~~~
      |       local2name
CloudProvider/MegaNz.cpp: In member function ‘virtual bool cloudstorage::{anonymous}::CloudFileSystemAccess::CloudFileAccess::sysopen(bool)’:
CloudProvider/MegaNz.cpp:683:49: error: ‘localname’ was not declared in this scope; did you mean ‘local2name’?
  683 |     bool sysopen(bool) override { return fopen(&localname, true, false); }
      |                                                 ^~~~~~~~~
      |                                                 local2name
CloudProvider/MegaNz.cpp: In member function ‘mega::FileAccess* cloudstorage::{anonymous}::CloudFileSystemAccess::newfileaccess()’:
CloudProvider/MegaNz.cpp:708:73: error: invalid new-expression of abstract class type ‘cloudstorage::{anonymous}::CloudFileSystemAccess::CloudFileAccess’
  708 |   FileAccess* newfileaccess() override { return new CloudFileAccess(this); }
      |                                                                         ^
CloudProvider/MegaNz.cpp:655:9: note:   because the following virtual functions are pure within ‘cloudstorage::{anonymous}::CloudFileSystemAccess::CloudFileAccess’:
  655 |   class CloudFileAccess : public FileAccess {
      |         ^~~~~~~~~~~~~~~
In file included from //include/mega/filefingerprint.h:27,
                 from //include/mega/node.h:26,
                 from //include/mega/command.h:26,
                 from //include/mega.h:42,
                 from CloudProvider/MegaNz.cpp:74:
//include/mega/filesystem.h:217:18: note: 	‘virtual bool mega::FileAccess::fopen(mega::LocalPath&, bool, bool, mega::DirAccess*, bool)’
  217 |     virtual bool fopen(LocalPath&, bool read, bool write, DirAccess* iteratingDir = nullptr, bool ignoreAttributes = false) = 0;
      |                  ^~~~~
In file included from //include/mega/filefingerprint.h:27,
                 from //include/mega/node.h:26,
                 from //include/mega/command.h:26,
                 from //include/mega.h:42,
                 from CloudProvider/MegaNz.cpp:74:
//include/mega/filesystem.h:227:18: note: 	‘virtual void mega::FileAccess::updatelocalname(mega::LocalPath&)’
  227 |     virtual void updatelocalname(LocalPath&) = 0;
      |                  ^~~~~~~~~~~~~~~
CloudProvider/MegaNz.cpp: In lambda function:
CloudProvider/MegaNz.cpp:1004:69: error: no match for ‘operator=’ (operand types are ‘mega::LocalPath’ and ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’})
 1004 |                 std::to_string(reinterpret_cast<uintptr_t>(callback));
      |                                                                     ^
In file included from //include/mega/filefingerprint.h:27,
                 from //include/mega/node.h:26,
                 from //include/mega/command.h:26,
                 from //include/mega.h:42,
                 from CloudProvider/MegaNz.cpp:74:
//include/mega/filesystem.h:106:16: note: candidate: ‘mega::LocalPath& mega::LocalPath::operator=(const mega::LocalPath&)’
  106 | class MEGA_API LocalPath
      |                ^~~~~~~~~
//include/mega/filesystem.h:106:16: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const mega::LocalPath&’
//include/mega/filesystem.h:106:16: note: candidate: ‘mega::LocalPath& mega::LocalPath::operator=(mega::LocalPath&&)’
//include/mega/filesystem.h:106:16: note:   no known conversion for argument 1 from ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘mega::LocalPath&&’
CloudProvider/MegaNz.cpp:1005:51: error: no matching function for call to ‘mega::MegaClient::startxfer(mega::direction_t, cloudstorage::{anonymous}::FileUpload*&)’
 1005 |             mega_->client()->startxfer(PUT, upload);
      |                                                   ^
In file included from //include/mega/pubkeyaction.h:25,
                 from //include/mega.h:50,
                 from CloudProvider/MegaNz.cpp:74:
//include/mega/megaclient.h:476:10: note: candidate: ‘bool mega::MegaClient::startxfer(mega::direction_t, mega::File*, mega::DBTableTransactionCommitter&, bool, bool, bool)’
  476 |     bool startxfer(direction_t, File*, DBTableTransactionCommitter&, bool skipdupes = false, bool startfirst = false, bool donotpersist = false);
      |          ^~~~~~~~~
//include/mega/megaclient.h:476:10: note:   candidate expects 6 arguments, 2 provided
CloudProvider/MegaNz.cpp: In lambda function:
CloudProvider/MegaNz.cpp:1045:73: error: no matching function for call to ‘mega::MegaClient::unlink(mega::Node*&, bool)’
 1045 |                                      mega_->client()->unlink(node, false);
      |                                                                         ^
In file included from //include/mega/pubkeyaction.h:25,
                 from //include/mega.h:50,
                 from CloudProvider/MegaNz.cpp:74:
//include/mega/megaclient.h:464:11: note: candidate: ‘mega::error mega::MegaClient::unlink(mega::Node*, bool, int, std::function<void(long unsigned int, mega::ErrorCodes)>)’
  464 |     error unlink(Node*, bool keepversions, int tag, std::function<void(handle, error)> resultFunction = nullptr);
      |           ^~~~~~
//include/mega/megaclient.h:464:11: note:   candidate expects 4 arguments, 2 provided
CloudProvider/MegaNz.cpp: In lambda function:
CloudProvider/MegaNz.cpp:1094:42: error: no match for ‘operator=’ (operand types are ‘std::unique_ptr<std::__cxx11::basic_string<char> >’ and ‘std::string*’ {aka ‘std::__cxx11::basic_string<char>*’})
 1094 |             folder.attrstring = new std::string;
      |                                          ^~~~~~
In file included from /usr/include/c++/9/memory:80,
                 from /usr/include/c++/9/thread:39,
                 from CloudProvider/CloudProvider.h:30,
                 from CloudProvider/MegaNz.h:29,
                 from CloudProvider/MegaNz.cpp:26:
/usr/include/c++/9/bits/unique_ptr.h:305:7: note: candidate: ‘std::unique_ptr<_Tp, _Dp>& std::unique_ptr<_Tp, _Dp>::operator=(std::unique_ptr<_Tp, _Dp>&&) [with _Tp = std::__cxx11::basic_string<char>; _Dp = std::default_delete<std::__cxx11::basic_string<char> >]’
  305 |       operator=(unique_ptr&& __u) noexcept
      |       ^~~~~~~~
/usr/include/c++/9/bits/unique_ptr.h:305:30: note:   no known conversion for argument 1 from ‘std::string*’ {aka ‘std::__cxx11::basic_string<char>*’} to ‘std::unique_ptr<std::__cxx11::basic_string<char> >&&’
  305 |       operator=(unique_ptr&& __u) noexcept
      |                 ~~~~~~~~~~~~~^~~
/usr/include/c++/9/bits/unique_ptr.h:325:2: note: candidate: ‘template<class _Up, class _Ep> typename std::enable_if<std::__and_<std::__and_<std::is_convertible<typename std::unique_ptr<_Up, _Ep>::pointer, typename std::__uniq_ptr_impl<_Tp, _Dp>::pointer>, std::__not_<std::is_array<_Up> > >, std::is_assignable<_T2&, _U2&&> >::value, std::unique_ptr<_Tp, _Dp>&>::type std::unique_ptr<_Tp, _Dp>::operator=(std::unique_ptr<_Up, _Ep>&&) [with _Up = _Up; _Ep = _Ep; _Tp = std::__cxx11::basic_string<char>; _Dp = std::default_delete<std::__cxx11::basic_string<char> >]’
  325 |  operator=(unique_ptr<_Up, _Ep>&& __u) noexcept
      |  ^~~~~~~~
/usr/include/c++/9/bits/unique_ptr.h:325:2: note:   template argument deduction/substitution failed:
CloudProvider/MegaNz.cpp:1094:42: note:   mismatched types ‘std::unique_ptr<_Tp, _Dp>’ and ‘std::string*’ {aka ‘std::__cxx11::basic_string<char>*’}
 1094 |             folder.attrstring = new std::string;
      |                                          ^~~~~~
In file included from /usr/include/c++/9/memory:80,
                 from /usr/include/c++/9/thread:39,
                 from CloudProvider/CloudProvider.h:30,
                 from CloudProvider/MegaNz.h:29,
                 from CloudProvider/MegaNz.cpp:26:
/usr/include/c++/9/bits/unique_ptr.h:334:7: note: candidate: ‘std::unique_ptr<_Tp, _Dp>& std::unique_ptr<_Tp, _Dp>::operator=(std::nullptr_t) [with _Tp = std::__cxx11::basic_string<char>; _Dp = std::default_delete<std::__cxx11::basic_string<char> >; std::nullptr_t = std::nullptr_t]’
  334 |       operator=(nullptr_t) noexcept
      |       ^~~~~~~~
/usr/include/c++/9/bits/unique_ptr.h:334:17: note:   no known conversion for argument 1 from ‘std::string*’ {aka ‘std::__cxx11::basic_string<char>*’} to ‘std::nullptr_t’
  334 |       operator=(nullptr_t) noexcept
      |                 ^~~~~~~~~
CloudProvider/MegaNz.cpp:1097:74: error: no matching function for call to ‘mega::MegaClient::putnodes(mega::handle&, mega::NewNode*, int)’
 1097 |             mega_->client()->putnodes(parent_node->nodehandle, &folder, 1);
      |                                                                          ^
In file included from //include/mega/pubkeyaction.h:25,
                 from //include/mega.h:50,
                 from CloudProvider/MegaNz.cpp:74:
//include/mega/megaclient.h:531:10: note: candidate: ‘void mega::MegaClient::putnodes(mega::handle, std::vector<mega::NewNode>&&, const char*)’
  531 |     void putnodes(handle, vector<NewNode>&&, const char * = NULL);
      |          ^~~~~~~~
//include/mega/megaclient.h:531:27: note:   no known conversion for argument 2 from ‘mega::NewNode*’ to ‘std::vector<mega::NewNode>&&’
  531 |     void putnodes(handle, vector<NewNode>&&, const char * = NULL);
      |                           ^~~~~~~~~~~~~~~~~
//include/mega/megaclient.h:534:10: note: candidate: ‘void mega::MegaClient::putnodes(const char*, std::vector<mega::NewNode>&&)’
  534 |     void putnodes(const char*, vector<NewNode>&&);
      |          ^~~~~~~~
//include/mega/megaclient.h:534:10: note:   candidate expects 2 arguments, 3 provided
In file included from ./Request/Request.h:34,
                 from ./Request/AuthorizeRequest.h:27,
                 from CloudProvider/CloudProvider.h:34,
                 from CloudProvider/MegaNz.h:29,
                 from CloudProvider/MegaNz.cpp:26:
./Utility/Utility.h: In instantiation of ‘std::unique_ptr<_Tp> cloudstorage::util::make_unique(Args&& ...) [with T = cloudstorage::{anonymous}::CloudFileSystemAccess; Args = {}]’:
CloudProvider/MegaNz.cpp:719:54:   required from here
./Utility/Utility.h:86:29: error: invalid new-expression of abstract class type ‘cloudstorage::{anonymous}::CloudFileSystemAccess’
   86 |   return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CloudProvider/MegaNz.cpp:653:7: note:   because the following virtual functions are pure within ‘cloudstorage::{anonymous}::CloudFileSystemAccess’:
  653 | class CloudFileSystemAccess : public FileSystemAccess {
      |       ^~~~~~~~~~~~~~~~~~~~~
In file included from //include/mega/filefingerprint.h:27,
                 from //include/mega/node.h:26,
                 from //include/mega/command.h:26,
                 from //include/mega.h:42,
                 from CloudProvider/MegaNz.cpp:74:
//include/mega/filesystem.h:402:41: note: 	‘virtual std::unique_ptr<mega::FileAccess> mega::FileSystemAccess::newfileaccess(bool)’
  402 |     virtual std::unique_ptr<FileAccess> newfileaccess(bool followSymLinks = true) = 0;
      |                                         ^~~~~~~~~~~~~
//include/mega/filesystem.h:418:18: note: 	‘virtual bool mega::FileSystemAccess::getlocalfstype(const mega::LocalPath&, mega::FileSystemType&) const’
  418 |     virtual bool getlocalfstype(const LocalPath& path, FileSystemType& type) const = 0;
      |                  ^~~~~~~~~~~~~~
//include/mega/filesystem.h:423:18: note: 	‘virtual void mega::FileSystemAccess::path2local(const string*, std::string*) const’
  423 |     virtual void path2local(const string*, string*) const = 0;
      |                  ^~~~~~~~~~
//include/mega/filesystem.h:424:18: note: 	‘virtual void mega::FileSystemAccess::local2path(const string*, std::string*) const’
  424 |     virtual void local2path(const string*, string*) const = 0;
      |                  ^~~~~~~~~~
//include/mega/filesystem.h:440:18: note: 	‘virtual void mega::FileSystemAccess::tmpnamelocal(mega::LocalPath&) const’
  440 |     virtual void tmpnamelocal(LocalPath&) const = 0;
      |                  ^~~~~~~~~~~~
//include/mega/filesystem.h:443:18: note: 	‘virtual bool mega::FileSystemAccess::getsname(mega::LocalPath&, mega::LocalPath&) const’
  443 |     virtual bool getsname(LocalPath&, LocalPath&) const = 0;
      |                  ^~~~~~~~
//include/mega/filesystem.h:446:18: note: 	‘virtual bool mega::FileSystemAccess::renamelocal(mega::LocalPath&, mega::LocalPath&, bool)’
  446 |     virtual bool renamelocal(LocalPath&, LocalPath&, bool = true) = 0;
      |                  ^~~~~~~~~~~
//include/mega/filesystem.h:449:18: note: 	‘virtual bool mega::FileSystemAccess::copylocal(mega::LocalPath&, mega::LocalPath&, mega::m_time_t)’
  449 |     virtual bool copylocal(LocalPath&, LocalPath&, m_time_t) = 0;
      |                  ^~~~~~~~~
//include/mega/filesystem.h:452:18: note: 	‘virtual bool mega::FileSystemAccess::unlinklocal(mega::LocalPath&)’
  452 |     virtual bool unlinklocal(LocalPath&) = 0;
      |                  ^~~~~~~~~~~
//include/mega/filesystem.h:455:18: note: 	‘virtual bool mega::FileSystemAccess::rmdirlocal(mega::LocalPath&)’
  455 |     virtual bool rmdirlocal(LocalPath&) = 0;
      |                  ^~~~~~~~~~
//include/mega/filesystem.h:458:18: note: 	‘virtual bool mega::FileSystemAccess::mkdirlocal(mega::LocalPath&, bool)’
  458 |     virtual bool mkdirlocal(LocalPath&, bool = false) = 0;
      |                  ^~~~~~~~~~
//include/mega/filesystem.h:464:18: note: 	‘virtual bool mega::FileSystemAccess::setmtimelocal(mega::LocalPath&, mega::m_time_t)’
  464 |     virtual bool setmtimelocal(LocalPath&, m_time_t) = 0;
      |                  ^~~~~~~~~~~~~
//include/mega/filesystem.h:467:18: note: 	‘virtual bool mega::FileSystemAccess::chdirlocal(mega::LocalPath&) const’
  467 |     virtual bool chdirlocal(LocalPath&) const = 0;
      |                  ^~~~~~~~~~
//include/mega/filesystem.h:470:20: note: 	‘virtual size_t mega::FileSystemAccess::lastpartlocal(const string*) const’
  470 |     virtual size_t lastpartlocal(const string*) const = 0;
      |                    ^~~~~~~~~~~~~
//include/mega/filesystem.h:473:18: note: 	‘virtual bool mega::FileSystemAccess::getextension(const mega::LocalPath&, char*, size_t) const’
  473 |     virtual bool getextension(const LocalPath&, char*, size_t) const = 0;
      |                  ^~~~~~~~~~~~
//include/mega/filesystem.h:485:18: note: 	‘virtual bool mega::FileSystemAccess::expanselocalpath(mega::LocalPath&, mega::LocalPath&)’
  485 |     virtual bool expanselocalpath(LocalPath& path, LocalPath& absolutepath) = 0;
      |                  ^~~~~~~~~~~~~~~~
In file included from ./Request/Request.h:34,
                 from ./Request/AuthorizeRequest.h:27,
                 from CloudProvider/CloudProvider.h:34,
                 from CloudProvider/MegaNz.h:29,
                 from CloudProvider/MegaNz.cpp:26:
./Utility/Utility.h: In instantiation of ‘std::unique_ptr<_Tp> cloudstorage::util::make_unique(Args&& ...) [with T = mega::MegaClient; Args = {cloudstorage::{anonymous}::App*, std::nullptr_t, cloudstorage::{anonymous}::CloudHttp*, cloudstorage::{anonymous}::CloudFileSystemAccess*, std::nullptr_t, std::nullptr_t, const char*&, const char (&)[16]}]’:
CloudProvider/MegaNz.cpp:722:73:   required from here
./Utility/Utility.h:86:29: error: no matching function for call to ‘mega::MegaClient::MegaClient(cloudstorage::{anonymous}::App*, std::nullptr_t, cloudstorage::{anonymous}::CloudHttp*, cloudstorage::{anonymous}::CloudFileSystemAccess*, std::nullptr_t, std::nullptr_t, const char*&, const char [16])’
   86 |   return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from //include/mega/pubkeyaction.h:25,
                 from //include/mega.h:50,
                 from CloudProvider/MegaNz.cpp:74:
//include/mega/megaclient.h:1821:5: note: candidate: ‘mega::MegaClient::MegaClient(mega::MegaApp*, mega::Waiter*, mega::HttpIO*, mega::FileSystemAccess*, mega::DbAccess*, mega::GfxProc*, const char*, const char*, unsigned int)’
 1821 |     MegaClient(MegaApp*, Waiter*, HttpIO*, FileSystemAccess*, DbAccess*, GfxProc*, const char*, const char*, unsigned workerThreadCount);
      |     ^~~~~~~~~~
//include/mega/megaclient.h:1821:5: note:   candidate expects 9 arguments, 8 provided
  CXX      CloudProvider/FourShared.lo
make[1]: *** [Makefile:922: CloudProvider/MegaNz.lo] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/home/alex/.repos/.not_mine/libcloudstorage/src'
make: *** [Makefile:426: all-recursive] Error 1

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.