@@ -62,27 +62,34 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response
62
62
data: data
63
63
error: error];
64
64
if (!*error && [responseObject isKindOfClass: [NSDictionary class ]]) {
65
- NSString *errorTypeString = [[response allHeaderFields ] objectForKey: @" x-amzn-ErrorType" ];
65
+ if (!error) {
66
+ return responseObject;
67
+ }
68
+
69
+ NSString *errorTypeString = [[response allHeaderFields ] objectForKey: @" x-amzn-ErrorType" ];
66
70
NSString *errorTypeHeader = [[errorTypeString componentsSeparatedByString: @" :" ] firstObject ];
67
71
68
72
if ([errorTypeString length ] > 0 && errorTypeHeader) {
69
- if (errorCodeDictionary[errorTypeHeader]) {
70
- if (error) {
71
- NSDictionary *userInfo = @{NSLocalizedDescriptionKey : [responseObject objectForKey: @" message" ]?[responseObject objectForKey: @" message" ]:[NSNull null ], NSLocalizedFailureReasonErrorKey : errorTypeString};
72
- *error = [NSError errorWithDomain: AWSLocationErrorDomain
73
- code: [[errorCodeDictionary objectForKey: errorTypeHeader] integerValue ]
74
- userInfo: userInfo];
75
- }
76
- return responseObject;
77
- } else if (errorTypeHeader) {
78
- if (error) {
79
- NSDictionary *userInfo = @{NSLocalizedDescriptionKey : [responseObject objectForKey: @" message" ]?[responseObject objectForKey: @" message" ]:[NSNull null ], NSLocalizedFailureReasonErrorKey : errorTypeString};
80
- *error = [NSError errorWithDomain: AWSLocationErrorDomain
81
- code: AWSLocationErrorUnknown
82
- userInfo: userInfo];
83
- }
84
- return responseObject;
73
+ NSString *errorDomain = nil ;
74
+ NSNumber *errorCode = nil ;
75
+
76
+ if (errorCodeDictionary[errorTypeHeader]) { // First, check if it's a Location error
77
+ errorDomain = AWSLocationErrorDomain;
78
+ errorCode = errorCodeDictionary[errorTypeHeader];
79
+ } else if ([[AWSService errorCodeDictionary ] objectForKey: errorTypeHeader]) { // Then, check if it's a Service error
80
+ errorDomain = AWSServiceErrorDomain;
81
+ errorCode = [[AWSService errorCodeDictionary ] objectForKey: errorTypeHeader];
82
+ } else { // Finally, fallback to an unknown location error
83
+ errorDomain = AWSLocationErrorDomain;
84
+ errorCode = [[NSNumber alloc ] initWithInt: AWSLocationErrorUnknown];
85
85
}
86
+
87
+ NSDictionary *userInfo = @{NSLocalizedDescriptionKey : [responseObject objectForKey: @" message" ]?[responseObject objectForKey: @" message" ]:[NSNull null ], NSLocalizedFailureReasonErrorKey : errorTypeString};
88
+ *error = [NSError errorWithDomain: errorDomain
89
+ code: [errorCode integerValue ]
90
+ userInfo: userInfo];
91
+
92
+ return responseObject;
86
93
}
87
94
}
88
95
0 commit comments