public async Task<bool> Scrobble (Track track)
{
if (!await Login ()) {
LoggingService.LogInfo ("Last.FM login failed... caching scrobble");
SaveToCache (track);
return false;
}
if (await ScrobbleFromCache ()) {
Files.Delete (ScrobbleCache);
} else {
LoggingService.LogInfo ("Could not flush existing cache, appending to cache instead of scrobbling");
SaveToCache (track);
return false;
}
if (!await Scrobble (new [] { track })) {
LoggingService.LogInfo ("Failed to scrobble: {0}. Caching it.", track);
SaveToCache (track);
return false;
}
LoggingService.LogInfo ("Successfully scrobbled: {0}", track);
return true;
}