From: <ste...@us...> - 2006-03-26 07:36:45
|
Revision: 372 Author: stevewpalmer Date: 2006-03-25 23:36:35 -0800 (Sat, 25 Mar 2006) ViewCVS: http://svn.sourceforge.net/vienna-rss/?rev=372&view=rev Log Message: ----------- Support HTTP 301 permanent redirect to update the original feed URL. Modified Paths: -------------- trunk/2.1.0/ArrayExtensions.m trunk/2.1.0/AsyncConnection.h trunk/2.1.0/AsyncConnection.m trunk/2.1.0/English.lproj/Localizable.strings trunk/2.1.0/French.lproj/Localizable.strings trunk/2.1.0/German.lproj/Localizable.strings trunk/2.1.0/Italian.lproj/Localizable.strings trunk/2.1.0/Japanese.lproj/Localizable.strings trunk/2.1.0/RefreshManager.m trunk/2.1.0/Spanish.lproj/Localizable.strings trunk/2.1.0/Swedish.lproj/Localizable.strings trunk/2.1.0/nl.lproj/Localizable.strings trunk/2.1.0/zh_TW.lproj/Localizable.strings Modified: trunk/2.1.0/ArrayExtensions.m =================================================================== --- trunk/2.1.0/ArrayExtensions.m 2006-03-26 04:42:52 UTC (rev 371) +++ trunk/2.1.0/ArrayExtensions.m 2006-03-26 07:36:35 UTC (rev 372) @@ -24,7 +24,7 @@ /* indexOfStringInArray * Returns the index of the specified string in the receiver. Or returns - * -1 if the string is not found. The string must match exactly with regard + * NSNotFound if the string is not found. The string must match exactly with regard * to case, character set and spaces. */ -(int)indexOfStringInArray:(NSString *)theString Modified: trunk/2.1.0/AsyncConnection.h =================================================================== --- trunk/2.1.0/AsyncConnection.h 2006-03-26 04:42:52 UTC (rev 371) +++ trunk/2.1.0/AsyncConnection.h 2006-03-26 07:36:35 UTC (rev 372) @@ -26,7 +26,8 @@ MA_Connect_Succeeded = 0, MA_Connect_Failed, MA_Connect_NeedCredentials, - MA_Connect_Stopped + MA_Connect_Stopped, + MA_Connect_PermanentRedirect } ConnectStatus; @interface AsyncConnection : NSObject { @@ -37,6 +38,7 @@ NSString * username; NSString * password; ActivityItem * aItem; + NSString * URLString; id contextData; ConnectStatus status; id delegate; @@ -57,6 +59,7 @@ -(ConnectStatus)status; -(id)contextData; -(ActivityItem *)aItem; +-(NSString *)URLString; -(void)setHttpHeaders:(NSDictionary *)headerFields; -(NSDictionary *)responseHeaders; Modified: trunk/2.1.0/AsyncConnection.m =================================================================== --- trunk/2.1.0/AsyncConnection.m 2006-03-26 04:42:52 UTC (rev 371) +++ trunk/2.1.0/AsyncConnection.m 2006-03-26 07:36:35 UTC (rev 372) @@ -47,6 +47,7 @@ contextData = nil; connector = nil; httpHeaders = nil; + URLString = nil; status = MA_Connect_Succeeded; } return self; @@ -77,6 +78,14 @@ return aItem; } +/* URLString + * Returns the URL of this connection. + */ +-(NSString *)URLString +{ + return URLString; +} + /* contextData * Returns the context data object that was originally passed when the connection * was created. @@ -104,6 +113,16 @@ httpHeaders = headerFields; } +/* setURLString + * Sets the current URL of this connection. + */ +-(void)setURLString:(NSString *)newURLString +{ + [newURLString retain]; + [URLString release]; + URLString = newURLString; +} + /* beginLoadDataFromURL * Begin an asynchronous connection using the specified URL, username, password and callback information. On completion of * the connection, whether or not the connection succeeded, the callback is invoked. The user will need to query the object @@ -129,7 +148,8 @@ delegate = theDelegate; handler = endSelector; - + [self setURLString:[theUrl absoluteString]]; + NSMutableURLRequest * theRequest = [NSMutableURLRequest requestWithURL:theUrl cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0]; if (theRequest == nil) return NO; @@ -346,7 +366,18 @@ */ -(NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse { - NSString * text = [NSString stringWithFormat:NSLocalizedString(@"Redirecting to %@", nil), [[request URL] absoluteString]]; + NSString * newURLString = [[request URL] absoluteString]; + NSString * text = [NSString stringWithFormat:NSLocalizedString(@"Redirecting to %@", nil), newURLString]; + [self setURLString:newURLString]; + if ([redirectResponse isKindOfClass:[NSHTTPURLResponse class]]) + { + NSHTTPURLResponse * httpResponse = (NSHTTPURLResponse *)redirectResponse; + if ([httpResponse statusCode] == 301) + { + status = MA_Connect_PermanentRedirect; + [delegate performSelector:handler withObject:self]; + } + } [aItem appendDetail:text]; return request; } @@ -369,6 +400,7 @@ [httpHeaders release]; [responseHeaders release]; [contextData release]; + [URLString release]; [receivedData release]; [username release]; [password release]; Modified: trunk/2.1.0/English.lproj/Localizable.strings =================================================================== --- trunk/2.1.0/English.lproj/Localizable.strings 2006-03-26 04:42:52 UTC (rev 371) +++ trunk/2.1.0/English.lproj/Localizable.strings 2006-03-26 07:36:35 UTC (rev 372) @@ -309,3 +309,4 @@ "Unread" = "Unread"; "Unread Articles" = "Unread Articles"; "Last Refresh" = "Last Refresh"; +"Feed URL updated to %@" = "Feed URL updated to %@"; Modified: trunk/2.1.0/French.lproj/Localizable.strings =================================================================== --- trunk/2.1.0/French.lproj/Localizable.strings 2006-03-26 04:42:52 UTC (rev 371) +++ trunk/2.1.0/French.lproj/Localizable.strings 2006-03-26 07:36:35 UTC (rev 372) @@ -309,3 +309,4 @@ "Unread" = "Unread"; "Unread Articles" = "Unread Articles"; "Last Refresh" = "Last Refresh"; +"Feed URL updated to %@" = "Feed URL updated to %@"; Modified: trunk/2.1.0/German.lproj/Localizable.strings =================================================================== (Binary files differ) Modified: trunk/2.1.0/Italian.lproj/Localizable.strings =================================================================== --- trunk/2.1.0/Italian.lproj/Localizable.strings 2006-03-26 04:42:52 UTC (rev 371) +++ trunk/2.1.0/Italian.lproj/Localizable.strings 2006-03-26 07:36:35 UTC (rev 372) @@ -310,3 +310,4 @@ |