You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ti...@apache.org on 2012/08/24 02:47:52 UTC
[2/8] js commit: Re-adding filetransfer back to the playbook
Re-adding filetransfer back to the playbook
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/commit/6147988a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/tree/6147988a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/diff/6147988a
Branch: refs/heads/master
Commit: 6147988ad1d4035916af64975792f8cf0a146a04
Parents: 560faa1
Author: Tim Kim <ti...@nitobi.com>
Authored: Thu Aug 23 17:47:17 2012 -0700
Committer: Tim Kim <ti...@nitobi.com>
Committed: Thu Aug 23 17:47:17 2012 -0700
----------------------------------------------------------------------
lib/playbook/plugin/playbook/FileTransfer.js | 140 ---------------------
lib/webworks/air/plugin/air/FileTransfer.js | 140 +++++++++++++++++++++
lib/webworks/air/plugin/manager.js | 3 +-
3 files changed, 142 insertions(+), 141 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/6147988a/lib/playbook/plugin/playbook/FileTransfer.js
----------------------------------------------------------------------
diff --git a/lib/playbook/plugin/playbook/FileTransfer.js b/lib/playbook/plugin/playbook/FileTransfer.js
deleted file mode 100644
index 4465621..0000000
--- a/lib/playbook/plugin/playbook/FileTransfer.js
+++ /dev/null
@@ -1,140 +0,0 @@
-var cordova = require('cordova'),
-resolveLocalFileSystemURI = require('cordova/plugin/playbook/resolveLocalFileSystemURI'),
-FileTransferError = require('cordova/plugin/FileTransferError'),
-FileUploadResult = require('cordova/plugin/FileUploadResult'),
-FileEntry = require('cordova/plugin/FileEntry');
-
-var validURLProtocol = new RegExp('^(https?|ftp):\/\/');
-
-function getParentPath(filePath) {
- var pos = filePath.lastIndexOf('/');
- return filePath.substring(0, pos + 1);
-}
-
-function getFileName(filePath) {
- var pos = filePath.lastIndexOf('/');
- return filePath.substring(pos + 1);
-}
-
-module.exports = {
- upload: function (args, win, fail) {
- var filePath = args[0],
- server = args[1],
- fileKey = args[2],
- fileName = args[3],
- mimeType = args[4],
- params = args[5],
- trustAllHosts = args[6],
- chunkedMode = args[7],
- headers = args[8];
-
- if(!validURLProtocol.exec(server)){
- return { "status" : cordova.callbackStatus.ERROR, "message" : new FileTransferError(FileTransferError.INVALID_URL_ERR) };
- }
-
- resolveLocalFileSystemURI(filePath, fileWin, fail);
-
- function fileWin(entryObject){
- blackberry.io.file.readFile(filePath, readWin, false);
- }
-
- function readWin(filePath, blobFile){
- var fd = new FormData();
-
- fd.append(fileKey, blobFile, fileName);
- for (var prop in params) {
- if(params.hasOwnProperty(prop)) {
- fd.append(prop, params[prop]);
- }
- }
-
- var xhr = new XMLHttpRequest();
- xhr.open("POST", server);
- xhr.onload = function(evt) {
- if (xhr.status == 200) {
- var result = new FileUploadResult();
- result.bytesSent = xhr.response.length;
- result.responseCode = xhr.status;
- result.response = xhr.response;
- win(result);
- } else if (xhr.status == 404) {
- fail(new FileTransferError(FileTransferError.INVALID_URL_ERR, null, null, xhr.status));
- } else if (xhr.status == 403) {
- fail(new FileTransferError(FileTransferError.INVALID_URL_ERR, null, null, xhr.status));
- } else {
- fail(new FileTransferError(FileTransferError.CONNECTION_ERR, null, null, xhr.status));
- }
- };
- xhr.ontimeout = function(evt) {
- fail(new FileTransferError(FileTransferError.CONNECTION_ERR, null, null, xhr.status));
- };
-
- if(headers){
- for(var i in headers){
- xhr.setRequestHeader(i, headers[i]);
- }
- }
- xhr.send(fd);
- }
-
- return { "status" : cordova.callbackStatus.NO_RESULT, "message" : "WebWorks Is On It" };
- },
-
- download: function(args, win, fail){
- var url = args[0],
- filePath = args[1];
-
- if(!validURLProtocol.exec(url)){
- return { "status" : cordova.callbackStatus.ERROR, "message" : new FileTransferError(FileTransferError.INVALID_URL_ERR) };
- }
-
- var xhr = new XMLHttpRequest();
-
- function writeFile(fileEntry) {
- fileEntry.createWriter(function(writer) {
- writer.onwriteend = function(evt) {
- if (!evt.target.error) {
- win(new FileEntry(fileEntry.name, fileEntry.toURL()));
- } else {
- fail(new FileTransferError(FileTransferError.FILE_NOT_FOUND_ERR));
- }
- };
-
- writer.onerror = function(evt) {
- fail(new FileTransferError(FileTransferError.FILE_NOT_FOUND_ERR));
- };
-
- var blob = blackberry.utils.stringToBlob(xhr.response);
- writer.write(blob);
-
- },
- function(error) {
- fail(new FileTransferError(FileTransferError.FILE_NOT_FOUND_ERR));
- });
- }
-
- xhr.onreadystatechange = function () {
- if (xhr.readyState == xhr.DONE) {
- if (xhr.status == 200 && xhr.response) {
- resolveLocalFileSystemURI(getParentPath(filePath), function(dir) {
- dir.getFile(getFileName(filePath), {create: true}, writeFile, function(error) {
- fail(new FileTransferError(FileTransferError.FILE_NOT_FOUND_ERR));
- });
- }, function(error) {
- fail(new FileTransferError(FileTransferError.FILE_NOT_FOUND_ERR));
- });
- } else if (xhr.status == 404) {
- fail(new FileTransferError(FileTransferError.INVALID_URL_ERR, null, null, xhr.status));
- } else {
- fail(new FileTransferError(FileTransferError.CONNECTION_ERR, null, null, xhr.status));
- }
- }
- };
-
- xhr.open("GET", url, true);
- xhr.responseType = "arraybuffer";
- xhr.send();
-
- return { "status" : cordova.callbackStatus.NO_RESULT, "message" : "WebWorks Is On It" };
- }
-};
http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/6147988a/lib/webworks/air/plugin/air/FileTransfer.js
----------------------------------------------------------------------
diff --git a/lib/webworks/air/plugin/air/FileTransfer.js b/lib/webworks/air/plugin/air/FileTransfer.js
new file mode 100644
index 0000000..4465621
--- /dev/null
+++ b/lib/webworks/air/plugin/air/FileTransfer.js
@@ -0,0 +1,140 @@
+var cordova = require('cordova'),
+resolveLocalFileSystemURI = require('cordova/plugin/playbook/resolveLocalFileSystemURI'),
+FileTransferError = require('cordova/plugin/FileTransferError'),
+FileUploadResult = require('cordova/plugin/FileUploadResult'),
+FileEntry = require('cordova/plugin/FileEntry');
+
+var validURLProtocol = new RegExp('^(https?|ftp):\/\/');
+
+function getParentPath(filePath) {
+ var pos = filePath.lastIndexOf('/');
+ return filePath.substring(0, pos + 1);
+}
+
+function getFileName(filePath) {
+ var pos = filePath.lastIndexOf('/');
+ return filePath.substring(pos + 1);
+}
+
+module.exports = {
+ upload: function (args, win, fail) {
+ var filePath = args[0],
+ server = args[1],
+ fileKey = args[2],
+ fileName = args[3],
+ mimeType = args[4],
+ params = args[5],
+ trustAllHosts = args[6],
+ chunkedMode = args[7],
+ headers = args[8];
+
+ if(!validURLProtocol.exec(server)){
+ return { "status" : cordova.callbackStatus.ERROR, "message" : new FileTransferError(FileTransferError.INVALID_URL_ERR) };
+ }
+
+ resolveLocalFileSystemURI(filePath, fileWin, fail);
+
+ function fileWin(entryObject){
+ blackberry.io.file.readFile(filePath, readWin, false);
+ }
+
+ function readWin(filePath, blobFile){
+ var fd = new FormData();
+
+ fd.append(fileKey, blobFile, fileName);
+ for (var prop in params) {
+ if(params.hasOwnProperty(prop)) {
+ fd.append(prop, params[prop]);
+ }
+ }
+
+ var xhr = new XMLHttpRequest();
+ xhr.open("POST", server);
+ xhr.onload = function(evt) {
+ if (xhr.status == 200) {
+ var result = new FileUploadResult();
+ result.bytesSent = xhr.response.length;
+ result.responseCode = xhr.status;
+ result.response = xhr.response;
+ win(result);
+ } else if (xhr.status == 404) {
+ fail(new FileTransferError(FileTransferError.INVALID_URL_ERR, null, null, xhr.status));
+ } else if (xhr.status == 403) {
+ fail(new FileTransferError(FileTransferError.INVALID_URL_ERR, null, null, xhr.status));
+ } else {
+ fail(new FileTransferError(FileTransferError.CONNECTION_ERR, null, null, xhr.status));
+ }
+ };
+ xhr.ontimeout = function(evt) {
+ fail(new FileTransferError(FileTransferError.CONNECTION_ERR, null, null, xhr.status));
+ };
+
+ if(headers){
+ for(var i in headers){
+ xhr.setRequestHeader(i, headers[i]);
+ }
+ }
+ xhr.send(fd);
+ }
+
+ return { "status" : cordova.callbackStatus.NO_RESULT, "message" : "WebWorks Is On It" };
+ },
+
+ download: function(args, win, fail){
+ var url = args[0],
+ filePath = args[1];
+
+ if(!validURLProtocol.exec(url)){
+ return { "status" : cordova.callbackStatus.ERROR, "message" : new FileTransferError(FileTransferError.INVALID_URL_ERR) };
+ }
+
+ var xhr = new XMLHttpRequest();
+
+ function writeFile(fileEntry) {
+ fileEntry.createWriter(function(writer) {
+ writer.onwriteend = function(evt) {
+ if (!evt.target.error) {
+ win(new FileEntry(fileEntry.name, fileEntry.toURL()));
+ } else {
+ fail(new FileTransferError(FileTransferError.FILE_NOT_FOUND_ERR));
+ }
+ };
+
+ writer.onerror = function(evt) {
+ fail(new FileTransferError(FileTransferError.FILE_NOT_FOUND_ERR));
+ };
+
+ var blob = blackberry.utils.stringToBlob(xhr.response);
+ writer.write(blob);
+
+ },
+ function(error) {
+ fail(new FileTransferError(FileTransferError.FILE_NOT_FOUND_ERR));
+ });
+ }
+
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState == xhr.DONE) {
+ if (xhr.status == 200 && xhr.response) {
+ resolveLocalFileSystemURI(getParentPath(filePath), function(dir) {
+ dir.getFile(getFileName(filePath), {create: true}, writeFile, function(error) {
+ fail(new FileTransferError(FileTransferError.FILE_NOT_FOUND_ERR));
+ });
+ }, function(error) {
+ fail(new FileTransferError(FileTransferError.FILE_NOT_FOUND_ERR));
+ });
+ } else if (xhr.status == 404) {
+ fail(new FileTransferError(FileTransferError.INVALID_URL_ERR, null, null, xhr.status));
+ } else {
+ fail(new FileTransferError(FileTransferError.CONNECTION_ERR, null, null, xhr.status));
+ }
+ }
+ };
+
+ xhr.open("GET", url, true);
+ xhr.responseType = "arraybuffer";
+ xhr.send();
+
+ return { "status" : cordova.callbackStatus.NO_RESULT, "message" : "WebWorks Is On It" };
+ }
+};
http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/6147988a/lib/webworks/air/plugin/manager.js
----------------------------------------------------------------------
diff --git a/lib/webworks/air/plugin/manager.js b/lib/webworks/air/plugin/manager.js
index e6c98f7..fe54298 100644
--- a/lib/webworks/air/plugin/manager.js
+++ b/lib/webworks/air/plugin/manager.js
@@ -8,7 +8,8 @@ var cordova = require('cordova'),
'Capture' : require('cordova/plugin/air/capture'),
'Accelerometer' : require('cordova/plugin/webworks/accelerometer'),
'NetworkStatus' : require('cordova/plugin/air/network'),
- 'Notification' : require('cordova/plugin/webworks/notification')
+ 'Notification' : require('cordova/plugin/webworks/notification'),
+ 'FileTransfer' : require('cordova/plugin/air/FileTransfer')
};
module.exports = {