_postURL = [NSURL URLWithString:@"http://audioscrobbler.com/"];*/
_delayDate = [[NSDate date] retain];
- _responseData = nil;
+ _responseData = [[NSMutableData alloc] init];
_tracks = [[NSMutableArray alloc] init];
_submitTracks = [[NSMutableArray alloc] init];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleAudioscrobblerNotification:) name:@"AudioscrobblerHandshakeComplete" object:self];
if (!_handshakeCompleted && user) {
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://post.audioscrobbler.com/?hs=true&p=1.1&c=%@&v=%@&u=%@", AUDIOSCROBBLER_ID, AUDIOSCROBBLER_VERSION, user]];
+ [_lastStatus release];
+ _lastStatus = [NSLocalizedString(@"audioscrobbler_handshaking", @"Attempting to handshake with server") retain];
+ [[NSNotificationCenter defaultCenter] postNotificationName:@"AudioscrobblerStatusChanged" object:nil userInfo:[NSDictionary dictionaryWithObject:_lastStatus forKey:@"StatusString"]];
+
_currentStatus = AudioscrobblerRequestingHandshakeStatus;
- _responseData = [[NSMutableData alloc] init];
+ //_responseData = [[NSMutableData alloc] init];
[NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:15] delegate:self];
}
}
}
ITDebugLog(@"Audioscrobbler: Sending track submission request");
+ [_lastStatus release];
+ _lastStatus = [NSLocalizedString(@"audioscrobbler_submitting", @"Submitting tracks to server") retain];
+ [[NSNotificationCenter defaultCenter] postNotificationName:@"AudioscrobblerStatusChanged" object:nil userInfo:[NSDictionary dictionaryWithObject:_lastStatus forKey:@"StatusString"]];
//Create and send the request
NSMutableURLRequest *request = [[NSURLRequest requestWithURL:_postURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:15] mutableCopy];
- NSLog(@"Posting Audioscrobbler URL request: %@", requestString);
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[requestString dataUsingEncoding:NSUTF8StringEncoding]];
_currentStatus = AudioscrobblerSubmittingTracksStatus;
- _responseData = [[NSMutableData alloc] init];
+ //_responseData = [[NSMutableData alloc] init];
+ [_responseData setData:nil];
[NSURLConnection connectionWithRequest:request delegate:self];
[requestString release];
[request release];
+ //For now we're not going to cache results, as it is less of a headache
+ //[_tracks removeObjectsInArray:_submitTracks];
+ [_tracks removeAllObjects];
+ [_submitTracks removeAllObjects];
+
//If we have tracks left, submit again after the interval seconds
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
+ [_responseData setData:nil];
[_lastStatus release];
_lastStatus = [[NSString stringWithFormat:NSLocalizedString(@"audioscrobbler_error", @"Error - %@"), [error localizedDescription]] retain];
[[NSNotificationCenter defaultCenter] postNotificationName:@"AudioscrobblerStatusChanged" object:self userInfo:[NSDictionary dictionaryWithObject:_lastStatus forKey:@"StatusString"]];
responseAction = [lines objectAtIndex:0];
}
ITDebugLog(@"Audioscrobbler: Response %@", string);
- NSLog(@"Audioscrobbler: Response %@", string);
if (_currentStatus == AudioscrobblerRequestingHandshakeStatus) {
if ([lines count] < 2) {
//We have a protocol error
//We have a protocol error
}
} else if (_currentStatus == AudioscrobblerSubmittingTracksStatus) {
- //For now we're not going to cache results, as it is less of a headache
- [_tracks removeObjectsInArray:_submitTracks];
- [_submitTracks removeAllObjects];
-
if ([responseAction isEqualToString:@"OK"]) {
ITDebugLog(@"Audioscrobbler: Submission successful, clearing queue.");
/*[_tracks removeObjectsInArray:_submitTracks];
//Bad auth
} else if (([responseAction length] > 5) && [[responseAction substringToIndex:5] isEqualToString:@"FAILED"]) {
ITDebugLog(@"Audioscrobbler: Submission failed (%@)", [responseAction substringFromIndex:6]);
- NSLog(@"Audioscrobbler: Submission failed (%@)", [responseAction substringFromIndex:6]);
key = @"audioscrobbler_submission_failed";
comment = @"Last track submission failed - see console for error";
//Failed
_lastStatus = [NSLocalizedString(key, comment) retain];
[[NSNotificationCenter defaultCenter] postNotificationName:@"AudioscrobblerStatusChanged" object:nil userInfo:[NSDictionary dictionaryWithObject:_lastStatus forKey:@"StatusString"]];
[string release];
- [_responseData release];
+ [_responseData setData:nil];
+}
+
+-(NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse
+{
+ //Don't cache any Audioscrobbler communication
+ return nil;
}
@end