You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by mm...@apache.org on 2013/02/12 17:21:17 UTC

js commit: ios: change exec to support multipart messages

Updated Branches:
  refs/heads/multipart_plugin_result [created] 1dfb20304


ios: change exec to support multipart messages

Adding a new CDVType: MultiPart message type, which has an array of
messages, each of which must be "massaged" the same way as single
messages are (e.g. deserialize ArrayBuffers).

Right now, multipart messages are delivered as a single array argument
to the callback, because exec callbacks do not support multiple js
arugments at the moment.  This would be a good thing to change in the
future.


Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/1dfb2030
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/1dfb2030
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/1dfb2030

Branch: refs/heads/multipart_plugin_result
Commit: 1dfb20304459f14fb77d1dcf131a631fdc5c5cb3
Parents: 5ec7041
Author: Michal Mocny <mm...@gmail.com>
Authored: Mon Feb 11 17:07:18 2013 -0500
Committer: Michal Mocny <mm...@gmail.com>
Committed: Tue Feb 12 10:41:29 2013 -0500

----------------------------------------------------------------------
 lib/ios/exec.js |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-js/blob/1dfb2030/lib/ios/exec.js
----------------------------------------------------------------------
diff --git a/lib/ios/exec.js b/lib/ios/exec.js
index 8ad37d1..80d1fe8 100644
--- a/lib/ios/exec.js
+++ b/lib/ios/exec.js
@@ -83,7 +83,10 @@ function massageArgsJsToNative(args) {
 }
 
 function massagePayloadNativeToJs(payload) {
-    if (payload && payload.hasOwnProperty('CDVType') && payload.CDVType == 'ArrayBuffer') {
+    if (!payload || !payload.hasOwnProperty('CDVType')) {
+        return payload;
+    }
+    if (payload.CDVType == 'ArrayBuffer') {
         var stringToArrayBuffer = function(str) {
             var ret = new Uint8Array(str.length);
             for (var i = 0; i < str.length; i++) {
@@ -95,6 +98,11 @@ function massagePayloadNativeToJs(payload) {
             return stringToArrayBuffer(atob(b64));
         };
         payload = base64ToArrayBuffer(payload.data);
+    } else if (payload.CDVType == 'MultiPart') {
+        payload = payload.messages;
+        payload.forEach(function(e,i) {
+            payload[i] = massagePayloadNativeToJs(e);
+        });
     }
     return payload;
 }