Skip to content

Commit

Permalink
Updated SDNetTask.h/m to support new error types:
Browse files Browse the repository at this point in the history
- SDNetTaskErrorAuthenticationCanceled
- SDNetTaskErrorAuthenticationFailed
- SDNetTaskErrorNotConnectedToInternet

For reasons I don't get, when authentication fails, the NSError's error
code is SDNetTaskErrorAuthenticationCanceled whenever I use an incorrect
password
  • Loading branch information
catsby committed May 27, 2010
1 parent 965eff9 commit f35d408
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
3 changes: 3 additions & 0 deletions Source/SDNetTask.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ typedef enum _SDNetTaskError {
SDNetTaskErrorParserFailed,
SDNetTaskErrorParserDataIsNil,
SDNetTaskErrorServiceDefinedError,
SDNetTaskErrorAuthenticationCanceled,
SDNetTaskErrorAuthenticationFailed,
SDNetTaskErrorNotConnectedToInternet,

SDNetTaskErrorMAX // once again, don't touch.
} SDNetTaskError;
Expand Down
21 changes: 18 additions & 3 deletions Source/SDNetTask.m
Original file line number Diff line number Diff line change
Expand Up @@ -116,14 +116,25 @@ - (void) main {

if (connectionError) {
underlyingError = connectionError;

// commented out the next line because some APIs are using HTTP error codes as return values, which is super lame

// errorCode = SDNetTaskErrorConnectionFailed;
// [self _sendResultsToDelegate];
// return;
}

switch ([underlyingError code]) {
case NSURLErrorUserCancelledAuthentication:
errorCode = SDNetTaskErrorAuthenticationCanceled;
break;
case NSURLErrorUserAuthenticationRequired:
errorCode = SDNetTaskErrorAuthenticationFailed;
break;
case NSURLErrorNotConnectedToInternet:
errorCode = SDNetTaskErrorNotConnectedToInternet;
break;
}

if (data == nil) {
errorCode = SDNetTaskErrorConnectionDataIsNil;
[self _sendResultsToDelegate];
Expand Down Expand Up @@ -151,6 +162,7 @@ - (void) main {
errorCode = SDNetTaskErrorParserFailed;
underlyingError = errorFromParser;
}

else if (results == nil)
errorCode = SDNetTaskErrorParserDataIsNil;

Expand All @@ -167,8 +179,7 @@ - (void) _sendResultsToDelegateFromMainThread {

if (errorCode == SDNetTaskErrorNone) {
[self sendResultsToDelegate];
}
else {
} else {
// we'll create our error manually and let the delegate get all touchy-feely with it all they want

NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
Expand Down Expand Up @@ -347,6 +358,10 @@ - (NSString*) errorString {
errorStrings[SDNetTaskErrorConnectionFailed] = @"Connection failed with error";
errorStrings[SDNetTaskErrorParserFailed] = @"Parser failed with error";
errorStrings[SDNetTaskErrorParserDataIsNil] = @"Parser returned NULL data";
errorStrings[SDNetTaskErrorAuthenticationCanceled] = @"Authentication request cancelled";
errorStrings[SDNetTaskErrorAuthenticationFailed] = @"Authentication failed";
errorStrings[SDNetTaskErrorNotConnectedToInternet] = @"No internet connection established";

return errorStrings[errorCode];
}

Expand Down

0 comments on commit f35d408

Please sign in to comment.