|  |  | @ -40,6 +40,7 @@ import org.springframework.beans.factory.annotation.Autowired; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.springframework.stereotype.Service; |  |  |  | import org.springframework.stereotype.Service; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.io.IOException; |  |  |  | import java.io.IOException; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import java.net.URI; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.*; |  |  |  | import java.util.*; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.concurrent.LinkedBlockingQueue; |  |  |  | import java.util.concurrent.LinkedBlockingQueue; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -174,8 +175,15 @@ public class AudioScrobblerService { | 
			
		
	
		
		
			
				
					
					|  |  |  |         String clientVersion = "0.1"; |  |  |  |         String clientVersion = "0.1"; | 
			
		
	
		
		
			
				
					
					|  |  |  |         long timestamp = System.currentTimeMillis() / 1000L; |  |  |  |         long timestamp = System.currentTimeMillis() / 1000L; | 
			
		
	
		
		
			
				
					
					|  |  |  |         String authToken = calculateAuthenticationToken(registrationData.password, timestamp); |  |  |  |         String authToken = calculateAuthenticationToken(registrationData.password, timestamp); | 
			
		
	
		
		
			
				
					
					|  |  |  |         String[] lines = executeGetRequest("http://post.audioscrobbler.com/?hs=true&p=1.2.1&c=" + clientId + "&v=" + |  |  |  |         URI uri = new URI("https", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                                            clientVersion + "&u=" + registrationData.username + "&t=" + timestamp + "&a=" + authToken); |  |  |  |                 /* userInfo= */ null, "post.audioscrobbler.com", -1, | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 "/", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 String.format("hs=true&p=1.2.1&c=%s&v=%s&u=%s&t=%s&a=%s", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         clientId, clientVersion, registrationData.username, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         timestamp, authToken), | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 /* fragment= */ null); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         String[] lines = executeGetRequest(uri); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (lines[0].startsWith("BANNED")) { |  |  |  |         if (lines[0].startsWith("BANNED")) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             LOG.warn("Failed to scrobble song '" + registrationData.title + "' at Last.fm. Client version is banned."); |  |  |  |             LOG.warn("Failed to scrobble song '" + registrationData.title + "' at Last.fm. Client version is banned."); | 
			
		
	
	
		
		
			
				
					|  |  | @ -236,7 +244,7 @@ public class AudioScrobblerService { | 
			
		
	
		
		
			
				
					
					|  |  |  |         return DigestUtils.md5Hex(DigestUtils.md5Hex(password) + timestamp); |  |  |  |         return DigestUtils.md5Hex(DigestUtils.md5Hex(password) + timestamp); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     private String[] executeGetRequest(String url) throws IOException { |  |  |  |     private String[] executeGetRequest(URI url) throws IOException { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         HttpGet method = new HttpGet(url); |  |  |  |         HttpGet method = new HttpGet(url); | 
			
		
	
		
		
			
				
					
					|  |  |  |         method.setConfig(requestConfig); |  |  |  |         method.setConfig(requestConfig); | 
			
		
	
		
		
			
				
					
					|  |  |  |         return executeRequest(method); |  |  |  |         return executeRequest(method); | 
			
		
	
	
		
		
			
				
					|  |  | 
 |