123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- /*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
- */
-
- #import "CDVInvokedUrlCommand.h"
- #import "CDVJSON_private.h"
-
- @implementation CDVInvokedUrlCommand
-
- @synthesize arguments = _arguments;
- @synthesize callbackId = _callbackId;
- @synthesize className = _className;
- @synthesize methodName = _methodName;
-
- + (CDVInvokedUrlCommand*)commandFromJson:(NSArray*)jsonEntry
- {
- return [[CDVInvokedUrlCommand alloc] initFromJson:jsonEntry];
- }
-
- - (id)initFromJson:(NSArray*)jsonEntry
- {
- id tmp = [jsonEntry objectAtIndex:0];
- NSString* callbackId = tmp == [NSNull null] ? nil : tmp;
- NSString* className = [jsonEntry objectAtIndex:1];
- NSString* methodName = [jsonEntry objectAtIndex:2];
- NSMutableArray* arguments = [jsonEntry objectAtIndex:3];
-
- return [self initWithArguments:arguments
- callbackId:callbackId
- className:className
- methodName:methodName];
- }
-
- - (id)initWithArguments:(NSArray*)arguments
- callbackId:(NSString*)callbackId
- className:(NSString*)className
- methodName:(NSString*)methodName
- {
- self = [super init];
- if (self != nil) {
- _arguments = arguments;
- _callbackId = callbackId;
- _className = className;
- _methodName = methodName;
- }
- [self massageArguments];
- return self;
- }
-
- - (void)massageArguments
- {
- NSMutableArray* newArgs = nil;
-
- for (NSUInteger i = 0, count = [_arguments count]; i < count; ++i) {
- id arg = [_arguments objectAtIndex:i];
- if (![arg isKindOfClass:[NSDictionary class]]) {
- continue;
- }
- NSDictionary* dict = arg;
- NSString* type = [dict objectForKey:@"CDVType"];
- if (!type || ![type isEqualToString:@"ArrayBuffer"]) {
- continue;
- }
- NSString* data = [dict objectForKey:@"data"];
- if (!data) {
- continue;
- }
- if (newArgs == nil) {
- newArgs = [NSMutableArray arrayWithArray:_arguments];
- _arguments = newArgs;
- }
- [newArgs replaceObjectAtIndex:i withObject:[[NSData alloc] initWithBase64EncodedString:data options:0]];
- }
- }
-
- - (id)argumentAtIndex:(NSUInteger)index
- {
- return [self argumentAtIndex:index withDefault:nil];
- }
-
- - (id)argumentAtIndex:(NSUInteger)index withDefault:(id)defaultValue
- {
- return [self argumentAtIndex:index withDefault:defaultValue andClass:nil];
- }
-
- - (id)argumentAtIndex:(NSUInteger)index withDefault:(id)defaultValue andClass:(Class)aClass
- {
- if (index >= [_arguments count]) {
- return defaultValue;
- }
- id ret = [_arguments objectAtIndex:index];
- if (ret == [NSNull null]) {
- ret = defaultValue;
- }
- if ((aClass != nil) && ![ret isKindOfClass:aClass]) {
- ret = defaultValue;
- }
- return ret;
- }
-
- @end
|