You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ag...@apache.org on 2013/02/28 19:11:38 UTC
android commit: [CB-861] Header support for FileTransfer download
Updated Branches:
refs/heads/master 5d79d6e13 -> aa4820c3b
[CB-861] Header support for FileTransfer download
Added support for an optional options object as the final arg. Currently only handles the options.headers object (as per the issue).
`FileTransfer.download(source, target, successCallback, errorCallback, trustAllHosts, options)`
This is needed for using FileTransfer.download with Basic Authentication, etc. Sadly since Android 2.x doesn't support XHR2, this is needed in FileTransfer.
I have only added support to Android and iOS (see other PR's).
Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/aa4820c3
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/aa4820c3
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/aa4820c3
Branch: refs/heads/master
Commit: aa4820c3b79543120639f2fe37c1f200fc820d98
Parents: 5d79d6e
Author: Tommy-Carlos Williams <to...@devgeeks.org>
Authored: Sun Feb 24 14:52:52 2013 +1100
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Thu Feb 28 13:10:59 2013 -0500
----------------------------------------------------------------------
framework/src/org/apache/cordova/FileTransfer.java | 42 +++++++++------
1 files changed, 26 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/aa4820c3/framework/src/org/apache/cordova/FileTransfer.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/FileTransfer.java b/framework/src/org/apache/cordova/FileTransfer.java
index edb1b6d..5b97463 100644
--- a/framework/src/org/apache/cordova/FileTransfer.java
+++ b/framework/src/org/apache/cordova/FileTransfer.java
@@ -158,6 +158,25 @@ public class FileTransfer extends CordovaPlugin {
return false;
}
+ private static void addHeadersToRequest(URLConnection connection, JSONObject headers) {
+ try {
+ for (Iterator<?> iter = headers.keys(); iter.hasNext(); ) {
+ String headerKey = iter.next().toString();
+ JSONArray headerValues = headers.optJSONArray(headerKey);
+ if (headerValues == null) {
+ headerValues = new JSONArray();
+ headerValues.put(headers.getString(headerKey));
+ }
+ connection.setRequestProperty(headerKey, headerValues.getString(0));
+ for (int i = 1; i < headerValues.length(); ++i) {
+ connection.addRequestProperty(headerKey, headerValues.getString(i));
+ }
+ }
+ } catch (JSONException e1) {
+ // No headers to be manipulated!
+ }
+ }
+
/**
* Uploads the specified file to the server URL provided using an HTTP multipart request.
* @param source Full path of the file on the file system
@@ -272,22 +291,7 @@ public class FileTransfer extends CordovaPlugin {
// Handle the other headers
if (headers != null) {
- try {
- for (Iterator<?> iter = headers.keys(); iter.hasNext(); ) {
- String headerKey = iter.next().toString();
- JSONArray headerValues = headers.optJSONArray(headerKey);
- if (headerValues == null) {
- headerValues = new JSONArray();
- headerValues.put(headers.getString(headerKey));
- }
- conn.setRequestProperty(headerKey, headerValues.getString(0));
- for (int i = 1; i < headerValues.length(); ++i) {
- conn.addRequestProperty(headerKey, headerValues.getString(i));
- }
- }
- } catch (JSONException e1) {
- // No headers to be manipulated!
- }
+ addHeadersToRequest(conn, headers);
}
/*
@@ -616,6 +620,7 @@ public class FileTransfer extends CordovaPlugin {
final boolean trustEveryone = args.optBoolean(2);
final String objectId = args.getString(3);
+ final JSONObject headers = args.optJSONObject(4);
final URL url;
try {
@@ -693,6 +698,11 @@ public class FileTransfer extends CordovaPlugin {
{
connection.setRequestProperty("cookie", cookie);
}
+
+ // Handle the other headers
+ if (headers != null) {
+ addHeadersToRequest(connection, headers);
+ }
connection.connect();