Fixed a bug in updateTime:
[MenuTunes.git] / AudioscrobblerController.m
index 3864a0c..270704b 100644 (file)
@@ -91,6 +91,10 @@ static AudioscrobblerController *_sharedController = nil;
        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];
                [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:15] delegate:self];
@@ -210,6 +214,9 @@ static AudioscrobblerController *_sharedController = nil;
        }
        
        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];
@@ -222,6 +229,11 @@ static AudioscrobblerController *_sharedController = nil;
        [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
 }
 
@@ -236,6 +248,7 @@ static AudioscrobblerController *_sharedController = nil;
 
 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
 {
+       [_responseData release];
        [_lastStatus release];
        _lastStatus = [[NSString stringWithFormat:NSLocalizedString(@"audioscrobbler_error", @"Error - %@"), [error localizedDescription]] retain];
        [[NSNotificationCenter defaultCenter] postNotificationName:@"AudioscrobblerStatusChanged" object:self userInfo:[NSDictionary dictionaryWithObject:_lastStatus forKey:@"StatusString"]];
@@ -290,10 +303,6 @@ static AudioscrobblerController *_sharedController = nil;
                        //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];
@@ -335,4 +344,10 @@ static AudioscrobblerController *_sharedController = nil;
        [_responseData release];
 }
 
+-(NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse
+{
+       //Don't cache any Audioscrobbler communication
+       return nil;
+}
+
 @end