Skip to content

Commit fe009e8

Browse files
committed
fix(AWSLocation): Fixing clock skew retries
1 parent e00fa50 commit fe009e8

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

AWSLocation/AWSLocationService.m

+24-17
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)