diff options
Diffstat (limited to 'juick-notifications/src/main/java/com/juick/components/CleanUp.java')
-rw-r--r-- | juick-notifications/src/main/java/com/juick/components/CleanUp.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/juick-notifications/src/main/java/com/juick/components/CleanUp.java b/juick-notifications/src/main/java/com/juick/components/CleanUp.java new file mode 100644 index 00000000..06d96471 --- /dev/null +++ b/juick-notifications/src/main/java/com/juick/components/CleanUp.java @@ -0,0 +1,52 @@ +package com.juick.components; + +import com.juick.server.helpers.TokensList; +import com.notnoop.apns.ApnsService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +import javax.inject.Inject; +import java.util.ArrayList; +import java.util.Collection; + +/** + * Created by vitalyster on 22.11.2016. + */ +@Component +public class CleanUp { + + private static Logger logger = LoggerFactory.getLogger(CleanUp.class); + + @Inject + ApnsService apns; + @Inject + RestTemplate rest; + + @Scheduled(fixedRate = 600000) + public void cleanupTokens() { + logger.info("initializing apns tokens cleanup"); + Collection<String> devices = apns.getInactiveDevices().keySet(); + int count = devices.size(); + if (count > 0) { + logger.info(String.format("%d tokens to delete", count)); + TokensList list = new TokensList(); + list.setType("apns"); + list.setTokens(new ArrayList<>(devices)); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON_UTF8); + rest.exchange("http://api.juick.com/notifications", + HttpMethod.DELETE, new HttpEntity<>(list, headers), new ParameterizedTypeReference<Void>() { + }); + } else { + logger.info("No APNS tokens to delete"); + } + } +} |