|
@@ -242,23 +242,28 @@ static id AFJSONObjectByRemovingKeysWithNullValues(id JSONObject, NSJSONReadingO
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- id responseObject = nil;
|
|
|
- NSError *serializationError = nil;
|
|
|
// Workaround for behavior of Rails to return a single space for `head :ok` (a workaround for a bug in Safari), which is not interpreted as valid input by NSJSONSerialization.
|
|
|
// See https://github.com/rails/rails/issues/1742
|
|
|
BOOL isSpace = [data isEqualToData:[NSData dataWithBytes:" " length:1]];
|
|
|
- if (data.length > 0 && !isSpace) {
|
|
|
- responseObject = [NSJSONSerialization JSONObjectWithData:data options:self.readingOptions error:&serializationError];
|
|
|
- } else {
|
|
|
+
|
|
|
+ if (data.length == 0 || isSpace) {
|
|
|
return nil;
|
|
|
}
|
|
|
+
|
|
|
+ NSError *serializationError = nil;
|
|
|
+
|
|
|
+ id responseObject = [NSJSONSerialization JSONObjectWithData:data options:self.readingOptions error:&serializationError];
|
|
|
|
|
|
- if (self.removesKeysWithNullValues && responseObject) {
|
|
|
- responseObject = AFJSONObjectByRemovingKeysWithNullValues(responseObject, self.readingOptions);
|
|
|
+ if (!responseObject)
|
|
|
+ {
|
|
|
+ if (error) {
|
|
|
+ *error = AFErrorWithUnderlyingError(serializationError, *error);
|
|
|
+ }
|
|
|
+ return nil;
|
|
|
}
|
|
|
-
|
|
|
- if (error && !responseObject) {
|
|
|
- *error = AFErrorWithUnderlyingError(serializationError, *error);
|
|
|
+
|
|
|
+ if (self.removesKeysWithNullValues) {
|
|
|
+ return AFJSONObjectByRemovingKeysWithNullValues(responseObject, self.readingOptions);
|
|
|
}
|
|
|
|
|
|
return responseObject;
|
|
@@ -378,10 +383,14 @@ static id AFJSONObjectByRemovingKeysWithNullValues(id JSONObject, NSJSONReadingO
|
|
|
NSError *serializationError = nil;
|
|
|
NSXMLDocument *document = [[NSXMLDocument alloc] initWithData:data options:self.options error:&serializationError];
|
|
|
|
|
|
- if (error && !document) {
|
|
|
- *error = AFErrorWithUnderlyingError(serializationError, *error);
|
|
|
+ if (!document)
|
|
|
+ {
|
|
|
+ if (error) {
|
|
|
+ *error = AFErrorWithUnderlyingError(serializationError, *error);
|
|
|
+ }
|
|
|
+ return nil;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return document;
|
|
|
}
|
|
|
|
|
@@ -458,15 +467,20 @@ static id AFJSONObjectByRemovingKeysWithNullValues(id JSONObject, NSJSONReadingO
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- id responseObject;
|
|
|
- NSError *serializationError = nil;
|
|
|
-
|
|
|
- if (data) {
|
|
|
- responseObject = [NSPropertyListSerialization propertyListWithData:data options:self.readOptions format:NULL error:&serializationError];
|
|
|
+ if (!data) {
|
|
|
+ return nil;
|
|
|
}
|
|
|
-
|
|
|
- if (error && !responseObject) {
|
|
|
- *error = AFErrorWithUnderlyingError(serializationError, *error);
|
|
|
+
|
|
|
+ NSError *serializationError = nil;
|
|
|
+
|
|
|
+ id responseObject = [NSPropertyListSerialization propertyListWithData:data options:self.readOptions format:NULL error:&serializationError];
|
|
|
+
|
|
|
+ if (!responseObject)
|
|
|
+ {
|
|
|
+ if (error) {
|
|
|
+ *error = AFErrorWithUnderlyingError(serializationError, *error);
|
|
|
+ }
|
|
|
+ return nil;
|
|
|
}
|
|
|
|
|
|
return responseObject;
|