diff --git a/src/ios/CDVFile.m b/src/ios/CDVFile.m index 59e7d6407..e1e2d64f6 100644 --- a/src/ios/CDVFile.m +++ b/src/ios/CDVFile.m @@ -89,7 +89,12 @@ - (NSString *)filesystemNameForLocalURI:(NSURL *)uri if (pathComponents != nil && pathComponents.count > 1) { return [pathComponents objectAtIndex:1]; } - } else if ([[uri scheme] isEqualToString:kCDVAssetsLibraryScheme]) { + } + else if ([[uri scheme] isEqualToString:@"https"] && [uri pathComponents] != nil && + [uri pathComponents].count > 2 && [[[uri pathComponents] objectAtIndex:1] isEqualToString:@"cdvfile"]) { + return [[uri pathComponents] objectAtIndex:2]; + } + else if ([[uri scheme] isEqualToString:kCDVAssetsLibraryScheme]) { return @"assets-library"; } return nil; @@ -114,7 +119,20 @@ - (NSString *)fullPathForLocalURI:(NSURL *)uri return @""; } return [path substringFromIndex:slashRange.location]; - } else if ([[uri scheme] isEqualToString:kCDVAssetsLibraryScheme]) { + } + else if ([[uri scheme] isEqualToString:@"https"] && [uri pathComponents] != nil && + [uri pathComponents].count > 2 && [[[uri pathComponents] objectAtIndex:1] isEqualToString:@"cdvfile"]) { + NSString *path = [[uri path] substringFromIndex:(@"cdvfile".length + 1)]; + if ([uri query]) { + path = [NSString stringWithFormat:@"%@?%@", path, [uri query]]; + } + NSRange slashRange = [path rangeOfString:@"/" options:0 range:NSMakeRange(1, path.length-1)]; + if (slashRange.location == NSNotFound) { + return @""; + } + return [path substringFromIndex:slashRange.location]; + } + else if ([[uri scheme] isEqualToString:kCDVAssetsLibraryScheme]) { return [[uri absoluteString] substringFromIndex:[kCDVAssetsLibraryScheme length]+2]; } return nil; @@ -142,7 +160,9 @@ @implementation CDVFilesystemURLProtocol + (BOOL)canInitWithRequest:(NSURLRequest*)request { NSURL* url = [request URL]; - return [[url scheme] isEqualToString:kCDVFilesystemURLPrefix]; + return [[url scheme] isEqualToString:kCDVFilesystemURLPrefix] || + ([[url scheme] isEqualToString:@"https"] && [url pathComponents] != nil && + [url pathComponents].count > 2 && [[[url pathComponents] objectAtIndex:1] isEqualToString:@"cdvfile"]); } + (NSURLRequest*)canonicalRequestForRequest:(NSURLRequest*)request