@@ -62,27 +62,34 @@ - (id)responseObjectForResponse:(NSHTTPURLResponse *)response
6262 data: data
6363 error: error];
6464 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" ];
6670 NSString *errorTypeHeader = [[errorTypeString componentsSeparatedByString: @" :" ] firstObject ];
6771
6872 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];
8585 }
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;
8693 }
8794 }
8895
0 commit comments