diff options
Diffstat (limited to 'iPhone/CordovaLib/Classes/CDVPluginResult.m')
-rwxr-xr-x | iPhone/CordovaLib/Classes/CDVPluginResult.m | 57 |
1 files changed, 50 insertions, 7 deletions
diff --git a/iPhone/CordovaLib/Classes/CDVPluginResult.m b/iPhone/CordovaLib/Classes/CDVPluginResult.m index d9ba08f..af7c528 100755 --- a/iPhone/CordovaLib/Classes/CDVPluginResult.m +++ b/iPhone/CordovaLib/Classes/CDVPluginResult.m @@ -29,10 +29,40 @@ @end @implementation CDVPluginResult -@synthesize status, message, keepCallback; +@synthesize status, message, keepCallback, associatedObject; static NSArray* org_apache_cordova_CommandStatusMsgs; +id messageFromArrayBuffer(NSData* data) +{ + return @{ + @"CDVType" : @"ArrayBuffer", + @"data" :[data base64EncodedString] + }; +} + +id massageMessage(id message) +{ + if ([message isKindOfClass:[NSData class]]) { + return messageFromArrayBuffer(message); + } + return message; +} + +id messageFromMultipart(NSArray* theMessages) +{ + NSMutableArray* messages = [NSMutableArray arrayWithArray:theMessages]; + + for (NSUInteger i = 0; i < messages.count; ++i) { + [messages replaceObjectAtIndex:i withObject:massageMessage([messages objectAtIndex:i])]; + } + + return @{ + @"CDVType" : @"MultiPart", + @"messages" : messages + }; +} + + (void)initialize { org_apache_cordova_CommandStatusMsgs = [[NSArray alloc] initWithObjects:@"No result", @@ -101,17 +131,17 @@ static NSArray* org_apache_cordova_CommandStatusMsgs; + (CDVPluginResult*)resultWithStatus:(CDVCommandStatus)statusOrdinal messageAsArrayBuffer:(NSData*)theMessage { - NSDictionary* arrDict = [NSDictionary dictionaryWithObjectsAndKeys: - @"ArrayBuffer", @"CDVType", - [theMessage base64EncodedString], @"data", - nil]; + return [[self alloc] initWithStatus:statusOrdinal message:messageFromArrayBuffer(theMessage)]; +} - return [[self alloc] initWithStatus:statusOrdinal message:arrDict]; ++ (CDVPluginResult*)resultWithStatus:(CDVCommandStatus)statusOrdinal messageAsMultipart:(NSArray*)theMessages +{ + return [[self alloc] initWithStatus:statusOrdinal message:messageFromMultipart(theMessages)]; } + (CDVPluginResult*)resultWithStatus:(CDVCommandStatus)statusOrdinal messageToErrorObject:(int)errorCode { - NSDictionary* errDict = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:errorCode] forKey:@"code"]; + NSDictionary* errDict = @{@"code" :[NSNumber numberWithInt:errorCode]}; return [[self alloc] initWithStatus:statusOrdinal message:errDict]; } @@ -121,6 +151,19 @@ static NSArray* org_apache_cordova_CommandStatusMsgs; [self setKeepCallback:[NSNumber numberWithBool:bKeepCallback]]; } +- (NSString*)argumentsAsJSON +{ + id arguments = (self.message == nil ? [NSNull null] : self.message); + NSArray* argumentsWrappedInArray = [NSArray arrayWithObject:arguments]; + + NSString* argumentsJSON = [argumentsWrappedInArray JSONString]; + + argumentsJSON = [argumentsJSON substringWithRange:NSMakeRange(1, [argumentsJSON length] - 2)]; + + return argumentsJSON; +} + +// These methods are used by the legacy plugin return result method - (NSString*)toJSONString { NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys: |