You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by sh...@apache.org on 2012/06/21 00:06:25 UTC
ios commit: Fixes CB-942 - iOS failing FileTransfer malformed URL
tests
Updated Branches:
refs/heads/master ec1aa0602 -> 2d9bcb6ec
Fixes CB-942 - iOS failing FileTransfer malformed URL tests
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/commit/2d9bcb6e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/tree/2d9bcb6e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/diff/2d9bcb6e
Branch: refs/heads/master
Commit: 2d9bcb6ec74da8937f507ce91a4dde5e22ea4857
Parents: ec1aa06
Author: Shazron Abdullah <sh...@apache.org>
Authored: Wed Jun 20 15:06:16 2012 -0700
Committer: Shazron Abdullah <sh...@apache.org>
Committed: Wed Jun 20 15:06:16 2012 -0700
----------------------------------------------------------------------
CordovaLib/Classes/CDVFileTransfer.h | 1 +
CordovaLib/Classes/CDVFileTransfer.m | 27 +++++++++++++++++++++++++--
2 files changed, 26 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/2d9bcb6e/CordovaLib/Classes/CDVFileTransfer.h
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVFileTransfer.h b/CordovaLib/Classes/CDVFileTransfer.h
index f779f7b..b9a96c9 100644
--- a/CordovaLib/Classes/CDVFileTransfer.h
+++ b/CordovaLib/Classes/CDVFileTransfer.h
@@ -40,6 +40,7 @@ typedef int CDVFileTransferDirection;
- (void) upload:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
- (void) download:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
+- (NSString*) escapePathComponentForUrlString:(NSString*)urlString;
-(NSMutableDictionary*) createFileTransferError:(int)code AndSource:(NSString*)source AndTarget:(NSString*)target;
http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/2d9bcb6e/CordovaLib/Classes/CDVFileTransfer.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVFileTransfer.m b/CordovaLib/Classes/CDVFileTransfer.m
index 9a3ab53..3ed09ab 100644
--- a/CordovaLib/Classes/CDVFileTransfer.m
+++ b/CordovaLib/Classes/CDVFileTransfer.m
@@ -21,6 +21,29 @@
@implementation CDVFileTransfer
+- (NSString*) escapePathComponentForUrlString:(NSString*)urlString
+{
+ // separate the scheme and location components
+ NSArray* schemeAndLocationComponents = [urlString componentsSeparatedByString:@"://"];
+ if ([schemeAndLocationComponents count] < 2) {
+ return urlString;
+ }
+
+ // separate the domain and path components
+ NSArray* pathComponents = [[schemeAndLocationComponents lastObject] componentsSeparatedByString:@"/"];
+ if ([pathComponents count] < 2) {
+ return urlString;
+ }
+
+ NSString* pathComponent = [pathComponents lastObject];
+ NSRange rangeOfSubstring = [urlString rangeOfString:pathComponent];
+ urlString = [urlString substringToIndex:rangeOfSubstring.location];
+
+ pathComponent = [pathComponent stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+
+ return [urlString stringByAppendingString:pathComponent];
+}
+
- (void) upload:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options {
NSString* callbackId = [arguments objectAtIndex:0];
@@ -51,7 +74,7 @@
file = [NSURL URLWithString:filePath];
}
- NSURL *url = [NSURL URLWithString:[server stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
+ NSURL *url = [NSURL URLWithString:[self escapePathComponentForUrlString:server]];
if (!url) {
@@ -176,7 +199,7 @@
file = [NSURL URLWithString:filePath];
}
- NSURL *url = [NSURL URLWithString:[sourceUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
+ NSURL *url = [NSURL URLWithString:[self escapePathComponentForUrlString:sourceUrl]];
if (!url) {
errorCode = INVALID_URL_ERR;