[gnome-documents/rhel-7.4: 5/16] documents: Implement the downloadImpl vfunc for SkydriveDocument
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-documents/rhel-7.4: 5/16] documents: Implement the downloadImpl vfunc for SkydriveDocument
- Date: Fri, 9 Jun 2017 14:16:37 +0000 (UTC)
commit 630fc1a93bbd3a93ee242231a6a1129aef924127
Author: Debarshi Ray <debarshir gnome org>
Date: Thu Mar 30 18:23:27 2017 +0200
documents: Implement the downloadImpl vfunc for SkydriveDocument
https://bugzilla.gnome.org/show_bug.cgi?id=774937
src/documents.js | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 56 insertions(+), 0 deletions(-)
---
diff --git a/src/documents.js b/src/documents.js
index 9028e9b..7810190 100644
--- a/src/documents.js
+++ b/src/documents.js
@@ -1161,6 +1161,62 @@ const SkydriveDocument = new Lang.Class({
}));
},
+ downloadImpl: function(localFile, cancellable, callback) {
+ this._createZpjEntry(cancellable, Lang.bind(this,
+ function(entry, service, error) {
+ if (error) {
+ callback(false, error);
+ return;
+ }
+
+ service.download_file_to_stream_async(entry, cancellable, Lang.bind(this,
+ function(object, res) {
+ let inputStream;
+
+ try {
+ inputStream = object.download_file_to_stream_finish(res);
+ } catch (e) {
+ callback(false, e);
+ return;
+ }
+
+ localFile.replace_async(null,
+ false,
+ Gio.FileCreateFlags.PRIVATE,
+ GLib.PRIORITY_DEFAULT,
+ cancellable,
+ Lang.bind(this,
+ function(object, res) {
+ let outputStream;
+
+ try {
+ outputStream = object.replace_finish(res);
+ } catch (e) {
+ callback(false, e);
+ return;
+ }
+
+ outputStream.splice_async(inputStream,
+ Gio.OutputStreamSpliceFlags.CLOSE_SOURCE |
+ Gio.OutputStreamSpliceFlags.CLOSE_TARGET,
+ GLib.PRIORITY_DEFAULT,
+ cancellable,
+ Lang.bind(this,
+ function(object, res) {
+ try {
+ object.splice_finish(res);
+ } catch (e) {
+ callback(false, e);
+ return;
+ }
+
+ callback(false, null);
+ }));
+ }));
+ }));
+ }));
+ },
+
load: function(passwd, cancellable, callback) {
this._createZpjEntry(cancellable, Lang.bind(this,
function(entry, service, exception) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]