package controllers; import java.io.IOException; import java.util.ArrayList; import java.util.List; import play.mvc.Controller; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.auth.PropertiesCredentials; import com.amazonaws.services.sns.AmazonSNS; import com.amazonaws.services.sns.AmazonSNSClient; import com.amazonaws.services.sns.model.CreateTopicRequest; import com.amazonaws.services.sns.model.CreateTopicResult; import com.amazonaws.services.sns.model.ListTopicsRequest; import com.amazonaws.services.sns.model.ListTopicsResult; import com.amazonaws.services.sns.model.PublishRequest; import com.amazonaws.services.sns.model.SubscribeRequest; import com.amazonaws.services.sns.model.SubscribeResult; import com.amazonaws.services.sns.model.Topic; public class Notifications extends Controller { static AmazonSNS snsService; public static void createSNSService(String emailId, String topicName) throws Exception{ try { snsService = new AmazonSNSClient( new PropertiesCredentials(Notifications.class.getResourceAsStream("AwsCredentials.properties"))); List<Topic> topics = listTopics(snsService); // Subscribe to the topic selected for (Topic topic : topics) { if (topic.getTopicArn().endsWith(topicName)) { SubscribeResult sr = snsService.subscribe(new SubscribeRequest(topic.getTopicArn(), "email", emailId)); } } } catch (Exception e){ e.printStackTrace(); } redirect("/chat/" + topicName); } public static void sendNotification(AmazonSNS snsService, String topicName) { System.out.println("In send"); List<Topic> topics = listTopics(snsService); // Subscribe to the topic selected for (Topic topic : topics) { if (topic.getTopicArn().endsWith(topicName)) { snsService.publish(new PublishRequest(topic.getTopicArn(), "New Notification! Message from " + topic.getTopicArn())); } } } public static void createTopic( String topicName) { System.out.println("In create"); if (snsService == null) System.out.println("AKSDAKJDKAJSDKAJSDKAJDKASSJDKASSJD"); // Create a topic CreateTopicRequest createReq = new CreateTopicRequest() .withName(topicName); CreateTopicResult createRes = snsService.createTopic(createReq); } public static List<Topic> listTopics(AmazonSNS snsService) { List<Topic> topics = new ArrayList<Topic>(); String nextToken = null; do { // create the request, with nextToken if not empty ListTopicsRequest request = new ListTopicsRequest(); if (nextToken != null) request = request.withNextToken(nextToken); // call the web service ListTopicsResult result = snsService.listTopics(request); nextToken = result.getNextToken(); // get that list of topics topics.addAll(result.getTopics()); // go on if there are more elements } while (nextToken != null); System.out.println("Topics: " + topics); // show the list of topics... return topics; } }