diff --git a/Classes/BITFeedbackManager.m b/Classes/BITFeedbackManager.m index 854ac8f1cd..2189b89141 100644 --- a/Classes/BITFeedbackManager.m +++ b/Classes/BITFeedbackManager.m @@ -748,7 +748,7 @@ NSError *error = NULL; - NSDictionary *feedDict = (NSDictionary *)bit_parseJSON(responseString, &error); + NSDictionary *feedDict = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:[responseString dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:&error]; // server returned empty response? if (error) { diff --git a/Classes/BITHockeyHelper.h b/Classes/BITHockeyHelper.h index 3e7ceec8b3..6121ea409b 100644 --- a/Classes/BITHockeyHelper.h +++ b/Classes/BITHockeyHelper.h @@ -33,7 +33,6 @@ NSString *bit_URLEncodedString(NSString *inputString); NSString *bit_URLDecodedString(NSString *inputString); NSComparisonResult bit_versionCompare(NSString *stringA, NSString *stringB); -id bit_parseJSON(NSString *inputString, NSError **error); NSString *bit_encodeAppIdentifier(NSString *inputString); /* UIImage helpers */ diff --git a/Classes/BITHockeyHelper.m b/Classes/BITHockeyHelper.m index 4e7dfeda4c..73193d0d6a 100644 --- a/Classes/BITHockeyHelper.m +++ b/Classes/BITHockeyHelper.m @@ -76,83 +76,6 @@ NSComparisonResult bit_versionCompare(NSString *stringA, NSString *stringB) { return result; } -// parse JSON depending on the available framework -id bit_parseJSON(NSString *inputString, NSError **error) { - error = nil; - - if (!inputString) - return nil; - - id feedResult = nil; - -#if BW_NATIVE_JSON_AVAILABLE - feedResult = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:&error]; -#else - id nsjsonClass = NSClassFromString(@"NSJSONSerialization"); - SEL nsjsonSelect = NSSelectorFromString(@"JSONObjectWithData:options:error:"); - SEL sbJSONSelector = NSSelectorFromString(@"JSONValue"); - SEL jsonKitSelector = NSSelectorFromString(@"objectFromJSONStringWithParseOptions:error:"); - SEL yajlSelector = NSSelectorFromString(@"yajl_JSONWithOptions:error:"); - - if (nsjsonClass && [nsjsonClass respondsToSelector:nsjsonSelect]) { - NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[nsjsonClass methodSignatureForSelector:nsjsonSelect]]; - invocation.target = nsjsonClass; - invocation.selector = nsjsonSelect; - NSData *jsonData = [inputString dataUsingEncoding:NSUTF8StringEncoding]; - - if (!jsonData) - return nil; - - [invocation setArgument:&jsonData atIndex:2]; // arguments 0 and 1 are self and _cmd respectively, automatically set by NSInvocation - NSUInteger readOptions = kNilOptions; - [invocation setArgument:&readOptions atIndex:3]; - [invocation setArgument:&error atIndex:4]; - [invocation invoke]; - [invocation getReturnValue:&feedResult]; - } else if (jsonKitSelector && [inputString respondsToSelector:jsonKitSelector]) { - // first try JSONkit - NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[inputString methodSignatureForSelector:jsonKitSelector]]; - invocation.target = inputString; - invocation.selector = jsonKitSelector; - int parseOptions = 0; - [invocation setArgument:&parseOptions atIndex:2]; // arguments 0 and 1 are self and _cmd respectively, automatically set by NSInvocation - [invocation setArgument:&error atIndex:3]; - [invocation invoke]; - [invocation getReturnValue:&feedResult]; - } else if (sbJSONSelector && [inputString respondsToSelector:sbJSONSelector]) { - // now try SBJson - NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[inputString methodSignatureForSelector:sbJSONSelector]]; - invocation.target = inputString; - invocation.selector = sbJSONSelector; - [invocation invoke]; - [invocation getReturnValue:&feedResult]; - } else if (yajlSelector && [inputString respondsToSelector:yajlSelector]) { - NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[inputString methodSignatureForSelector:yajlSelector]]; - invocation.target = inputString; - invocation.selector = yajlSelector; - - NSUInteger yajlParserOptions = 0; - [invocation setArgument:&yajlParserOptions atIndex:2]; // arguments 0 and 1 are self and _cmd respectively, automatically set by NSInvocation - [invocation setArgument:&error atIndex:3]; - - [invocation invoke]; - [invocation getReturnValue:&feedResult]; - } else { - if (error != NULL) - *error = [[NSError errorWithDomain:kBITHockeyErrorDomain - code:HockeyAPIClientMissingJSONLibrary - userInfo:[NSDictionary dictionaryWithObjectsAndKeys:@"You need a JSON Framework in your runtime for iOS4!", NSLocalizedDescriptionKey, nil]] retain]; - return nil; - } -#endif - - if (error != NULL) { - return nil; - } - - return feedResult; -} - NSString *bit_encodeAppIdentifier(NSString *inputString) { return (inputString ? bit_URLEncodedString(inputString) : bit_URLEncodedString([[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"])); } diff --git a/Classes/BITUpdateManager.m b/Classes/BITUpdateManager.m index 67bf42c14d..e2fbd9d397 100644 --- a/Classes/BITUpdateManager.m +++ b/Classes/BITUpdateManager.m @@ -559,8 +559,8 @@ if ([responseData length]) { NSString *responseString = [[[NSString alloc] initWithBytes:[responseData bytes] length:[responseData length] encoding: NSUTF8StringEncoding] autorelease]; - NSDictionary *feedDict = (NSDictionary *)bit_parseJSON(responseString, &error); - + NSDictionary *feedDict = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:[responseString dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:&error]; + // server returned empty response? if (![feedDict count]) { [self reportError:[NSError errorWithDomain:kBITUpdateErrorDomain @@ -816,7 +816,8 @@ BITHockeyLog(@"INFO: Received API response: %@", responseString); NSError *error = nil; - id json = bit_parseJSON(responseString, &error); + NSDictionary *json = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:[responseString dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:&error]; + self.trackerConfig = (([self checkForTracker] && [[json valueForKey:@"tracker"] isKindOfClass:[NSDictionary class]]) ? [json valueForKey:@"tracker"] : nil); if (![self isAppStoreEnvironment]) {