CLOUD: Update downloading in Storages
Id should be used everywhere.
This commit is contained in:
parent
60add0df1b
commit
f0d61084da
10 changed files with 39 additions and 17 deletions
|
@ -27,8 +27,8 @@
|
||||||
|
|
||||||
namespace Cloud {
|
namespace Cloud {
|
||||||
|
|
||||||
DownloadRequest::DownloadRequest(Storage *storage, Storage::BoolCallback callback, Networking::ErrorCallback ecb, Common::String remoteFile, Common::DumpFile *dumpFile):
|
DownloadRequest::DownloadRequest(Storage *storage, Storage::BoolCallback callback, Networking::ErrorCallback ecb, Common::String remoteFileId, Common::DumpFile *dumpFile):
|
||||||
Request(nullptr, ecb), _boolCallback(callback), _localFile(dumpFile), _remoteFileName(remoteFile), _storage(storage),
|
Request(nullptr, ecb), _boolCallback(callback), _localFile(dumpFile), _remoteFileId(remoteFileId), _storage(storage),
|
||||||
_remoteFileStream(nullptr), _workingRequest(nullptr), _ignoreCallback(false) {
|
_remoteFileStream(nullptr), _workingRequest(nullptr), _ignoreCallback(false) {
|
||||||
start();
|
start();
|
||||||
}
|
}
|
||||||
|
@ -47,8 +47,8 @@ void DownloadRequest::start() {
|
||||||
//TODO: reopen DumpFile
|
//TODO: reopen DumpFile
|
||||||
_ignoreCallback = false;
|
_ignoreCallback = false;
|
||||||
|
|
||||||
_workingRequest = _storage->streamFile(
|
_workingRequest = _storage->streamFileById(
|
||||||
_remoteFileName,
|
_remoteFileId,
|
||||||
new Common::Callback<DownloadRequest, Networking::NetworkReadStreamResponse>(this, &DownloadRequest::streamCallback),
|
new Common::Callback<DownloadRequest, Networking::NetworkReadStreamResponse>(this, &DownloadRequest::streamCallback),
|
||||||
new Common::Callback<DownloadRequest, Networking::ErrorResponse>(this, &DownloadRequest::streamErrorCallback)
|
new Common::Callback<DownloadRequest, Networking::ErrorResponse>(this, &DownloadRequest::streamErrorCallback)
|
||||||
);
|
);
|
||||||
|
|
|
@ -33,7 +33,7 @@ namespace Cloud {
|
||||||
class DownloadRequest: public Networking::Request {
|
class DownloadRequest: public Networking::Request {
|
||||||
Storage::BoolCallback _boolCallback;
|
Storage::BoolCallback _boolCallback;
|
||||||
Common::DumpFile *_localFile;
|
Common::DumpFile *_localFile;
|
||||||
Common::String _remoteFileName;
|
Common::String _remoteFileId;
|
||||||
Storage *_storage;
|
Storage *_storage;
|
||||||
Networking::NetworkReadStream *_remoteFileStream;
|
Networking::NetworkReadStream *_remoteFileStream;
|
||||||
Request *_workingRequest;
|
Request *_workingRequest;
|
||||||
|
@ -44,7 +44,7 @@ class DownloadRequest: public Networking::Request {
|
||||||
void streamErrorCallback(Networking::ErrorResponse error);
|
void streamErrorCallback(Networking::ErrorResponse error);
|
||||||
void finishSuccess(bool success);
|
void finishSuccess(bool success);
|
||||||
public:
|
public:
|
||||||
DownloadRequest(Storage *storage, Storage::BoolCallback callback, Networking::ErrorCallback ecb, Common::String remoteFile, Common::DumpFile *dumpFile);
|
DownloadRequest(Storage *storage, Storage::BoolCallback callback, Networking::ErrorCallback ecb, Common::String remoteFileId, Common::DumpFile *dumpFile);
|
||||||
virtual ~DownloadRequest();
|
virtual ~DownloadRequest();
|
||||||
|
|
||||||
virtual void handle();
|
virtual void handle();
|
||||||
|
|
|
@ -117,7 +117,7 @@ Networking::Request *DropboxStorage::upload(Common::String path, Common::Seekabl
|
||||||
return addRequest(new DropboxUploadRequest(_token, path, contents, callback, errorCallback));
|
return addRequest(new DropboxUploadRequest(_token, path, contents, callback, errorCallback));
|
||||||
}
|
}
|
||||||
|
|
||||||
Networking::Request *DropboxStorage::streamFile(Common::String path, Networking::NetworkReadStreamCallback callback, Networking::ErrorCallback errorCallback) {
|
Networking::Request *DropboxStorage::streamFileById(Common::String path, Networking::NetworkReadStreamCallback callback, Networking::ErrorCallback errorCallback) {
|
||||||
Common::JSONObject jsonRequestParameters;
|
Common::JSONObject jsonRequestParameters;
|
||||||
jsonRequestParameters.setVal("path", new Common::JSONValue(path));
|
jsonRequestParameters.setVal("path", new Common::JSONValue(path));
|
||||||
Common::JSONValue value(jsonRequestParameters);
|
Common::JSONValue value(jsonRequestParameters);
|
||||||
|
|
|
@ -74,7 +74,7 @@ public:
|
||||||
virtual Networking::Request *upload(Common::String path, Common::SeekableReadStream *contents, UploadCallback callback, Networking::ErrorCallback errorCallback);
|
virtual Networking::Request *upload(Common::String path, Common::SeekableReadStream *contents, UploadCallback callback, Networking::ErrorCallback errorCallback);
|
||||||
|
|
||||||
/** Returns pointer to Networking::NetworkReadStream. */
|
/** Returns pointer to Networking::NetworkReadStream. */
|
||||||
virtual Networking::Request *streamFile(Common::String path, Networking::NetworkReadStreamCallback callback, Networking::ErrorCallback errorCallback);
|
virtual Networking::Request *streamFileById(Common::String path, Networking::NetworkReadStreamCallback callback, Networking::ErrorCallback errorCallback);
|
||||||
|
|
||||||
/** Calls the callback when finished. */
|
/** Calls the callback when finished. */
|
||||||
virtual Networking::Request *remove(Common::String path, BoolCallback callback, Networking::ErrorCallback errorCallback) { return nullptr; } //TODO
|
virtual Networking::Request *remove(Common::String path, BoolCallback callback, Networking::ErrorCallback errorCallback) { return nullptr; } //TODO
|
||||||
|
|
|
@ -263,6 +263,18 @@ Networking::Request *GoogleDriveStorage::streamFile(Common::String path, Network
|
||||||
request->addHeader("Authorization: Bearer " + _token);
|
request->addHeader("Authorization: Bearer " + _token);
|
||||||
return addRequest(request);
|
return addRequest(request);
|
||||||
*/
|
*/
|
||||||
|
//TODO: resolve id
|
||||||
|
//TODO: then call streamFileById()
|
||||||
|
return nullptr; //TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
Networking::Request *GoogleDriveStorage::streamFileById(Common::String id, Networking::NetworkReadStreamCallback callback, Networking::ErrorCallback errorCallback) {
|
||||||
|
return nullptr; //TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
Networking::Request *GoogleDriveStorage::download(Common::String remotePath, Common::String localPath, BoolCallback callback, Networking::ErrorCallback errorCallback) {
|
||||||
|
//TODO: resolve id
|
||||||
|
//TODO: then call downloadById()
|
||||||
return nullptr; //TODO
|
return nullptr; //TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -95,6 +95,10 @@ public:
|
||||||
|
|
||||||
/** Returns pointer to Networking::NetworkReadStream. */
|
/** Returns pointer to Networking::NetworkReadStream. */
|
||||||
virtual Networking::Request *streamFile(Common::String path, Networking::NetworkReadStreamCallback callback, Networking::ErrorCallback errorCallback);
|
virtual Networking::Request *streamFile(Common::String path, Networking::NetworkReadStreamCallback callback, Networking::ErrorCallback errorCallback);
|
||||||
|
virtual Networking::Request *streamFileById(Common::String id, Networking::NetworkReadStreamCallback callback, Networking::ErrorCallback errorCallback);
|
||||||
|
|
||||||
|
/** Calls the callback when finished. */
|
||||||
|
virtual Networking::Request *download(Common::String remotePath, Common::String localPath, BoolCallback callback, Networking::ErrorCallback errorCallback);
|
||||||
|
|
||||||
/** Calls the callback when finished. */
|
/** Calls the callback when finished. */
|
||||||
virtual Networking::Request *remove(Common::String path, BoolCallback callback, Networking::ErrorCallback errorCallback) { return nullptr; } //TODO
|
virtual Networking::Request *remove(Common::String path, BoolCallback callback, Networking::ErrorCallback errorCallback) { return nullptr; } //TODO
|
||||||
|
|
|
@ -204,7 +204,7 @@ Networking::Request *OneDriveStorage::upload(Common::String path, Common::Seekab
|
||||||
return addRequest(new OneDriveUploadRequest(this, path, contents, callback, errorCallback));
|
return addRequest(new OneDriveUploadRequest(this, path, contents, callback, errorCallback));
|
||||||
}
|
}
|
||||||
|
|
||||||
Networking::Request *OneDriveStorage::streamFile(Common::String path, Networking::NetworkReadStreamCallback outerCallback, Networking::ErrorCallback errorCallback) {
|
Networking::Request *OneDriveStorage::streamFileById(Common::String path, Networking::NetworkReadStreamCallback outerCallback, Networking::ErrorCallback errorCallback) {
|
||||||
Common::String url = "https://api.onedrive.com/v1.0/drive/special/approot:/" + path;
|
Common::String url = "https://api.onedrive.com/v1.0/drive/special/approot:/" + path;
|
||||||
Networking::JsonCallback innerCallback = new Common::CallbackBridge<OneDriveStorage, Networking::NetworkReadStreamResponse, Networking::JsonResponse>(this, &OneDriveStorage::fileInfoCallback, outerCallback);
|
Networking::JsonCallback innerCallback = new Common::CallbackBridge<OneDriveStorage, Networking::NetworkReadStreamResponse, Networking::JsonResponse>(this, &OneDriveStorage::fileInfoCallback, outerCallback);
|
||||||
Networking::CurlJsonRequest *request = new OneDriveTokenRefresher(this, innerCallback, errorCallback, url.c_str());
|
Networking::CurlJsonRequest *request = new OneDriveTokenRefresher(this, innerCallback, errorCallback, url.c_str());
|
||||||
|
|
|
@ -84,7 +84,7 @@ public:
|
||||||
virtual Networking::Request *upload(Common::String path, Common::SeekableReadStream *contents, UploadCallback callback, Networking::ErrorCallback errorCallback);
|
virtual Networking::Request *upload(Common::String path, Common::SeekableReadStream *contents, UploadCallback callback, Networking::ErrorCallback errorCallback);
|
||||||
|
|
||||||
/** Returns pointer to Networking::NetworkReadStream. */
|
/** Returns pointer to Networking::NetworkReadStream. */
|
||||||
virtual Networking::Request *streamFile(Common::String path, Networking::NetworkReadStreamCallback callback, Networking::ErrorCallback errorCallback);
|
virtual Networking::Request *streamFileById(Common::String path, Networking::NetworkReadStreamCallback callback, Networking::ErrorCallback errorCallback);
|
||||||
|
|
||||||
/** Calls the callback when finished. */
|
/** Calls the callback when finished. */
|
||||||
virtual Networking::Request *remove(Common::String path, BoolCallback callback, Networking::ErrorCallback errorCallback) { return nullptr; } //TODO
|
virtual Networking::Request *remove(Common::String path, BoolCallback callback, Networking::ErrorCallback errorCallback) { return nullptr; } //TODO
|
||||||
|
|
|
@ -76,7 +76,17 @@ Networking::Request *Storage::upload(Common::String remotePath, Common::String l
|
||||||
return upload(remotePath, f, callback, errorCallback);
|
return upload(remotePath, f, callback, errorCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Networking::Request *Storage::streamFile(Common::String path, Networking::NetworkReadStreamCallback callback, Networking::ErrorCallback errorCallback) {
|
||||||
|
//most Storages use paths instead of ids, so this should work
|
||||||
|
return streamFile(path, callback, errorCallback);
|
||||||
|
}
|
||||||
|
|
||||||
Networking::Request *Storage::download(Common::String remotePath, Common::String localPath, BoolCallback callback, Networking::ErrorCallback errorCallback) {
|
Networking::Request *Storage::download(Common::String remotePath, Common::String localPath, BoolCallback callback, Networking::ErrorCallback errorCallback) {
|
||||||
|
//most Storages use paths instead of ids, so this should work
|
||||||
|
return downloadById(remotePath, localPath, callback, errorCallback);
|
||||||
|
}
|
||||||
|
|
||||||
|
Networking::Request *Storage::downloadById(Common::String remoteId, Common::String localPath, BoolCallback callback, Networking::ErrorCallback errorCallback) {
|
||||||
if (!errorCallback) errorCallback = getErrorPrintingCallback();
|
if (!errorCallback) errorCallback = getErrorPrintingCallback();
|
||||||
|
|
||||||
Common::DumpFile *f = new Common::DumpFile();
|
Common::DumpFile *f = new Common::DumpFile();
|
||||||
|
@ -89,12 +99,7 @@ Networking::Request *Storage::download(Common::String remotePath, Common::String
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
return addRequest(new DownloadRequest(this, callback, errorCallback, remotePath, f));
|
return addRequest(new DownloadRequest(this, callback, errorCallback, remoteId, f));
|
||||||
}
|
|
||||||
|
|
||||||
Networking::Request *Storage::downloadById(Common::String remoteId, Common::String localPath, BoolCallback callback, Networking::ErrorCallback errorCallback) {
|
|
||||||
//most Storages use paths instead of ids, so this should work
|
|
||||||
return download(remoteId, localPath, callback, errorCallback);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Networking::Request *Storage::downloadFolder(Common::String remotePath, Common::String localPath, FileArrayCallback callback, Networking::ErrorCallback errorCallback, bool recursive) {
|
Networking::Request *Storage::downloadFolder(Common::String remotePath, Common::String localPath, FileArrayCallback callback, Networking::ErrorCallback errorCallback, bool recursive) {
|
||||||
|
|
|
@ -118,7 +118,8 @@ public:
|
||||||
virtual Networking::Request *upload(Common::String remotePath, Common::String localPath, UploadCallback callback, Networking::ErrorCallback errorCallback);
|
virtual Networking::Request *upload(Common::String remotePath, Common::String localPath, UploadCallback callback, Networking::ErrorCallback errorCallback);
|
||||||
|
|
||||||
/** Returns pointer to Networking::NetworkReadStream. */
|
/** Returns pointer to Networking::NetworkReadStream. */
|
||||||
virtual Networking::Request *streamFile(Common::String path, Networking::NetworkReadStreamCallback callback, Networking::ErrorCallback errorCallback) = 0;
|
virtual Networking::Request *streamFile(Common::String path, Networking::NetworkReadStreamCallback callback, Networking::ErrorCallback errorCallback);
|
||||||
|
virtual Networking::Request *streamFileById(Common::String id, Networking::NetworkReadStreamCallback callback, Networking::ErrorCallback errorCallback) = 0;
|
||||||
|
|
||||||
/** Calls the callback when finished. */
|
/** Calls the callback when finished. */
|
||||||
virtual Networking::Request *download(Common::String remotePath, Common::String localPath, BoolCallback callback, Networking::ErrorCallback errorCallback);
|
virtual Networking::Request *download(Common::String remotePath, Common::String localPath, BoolCallback callback, Networking::ErrorCallback errorCallback);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue