I am trying to create an application that will display all existing tweets of a particular user as well as new tweets. I am using StreamingOperations
API of twitter to get the live tweets. Please see the code of my Spring Controller class below.
@Controller
@RequestMapping("/")
public class Controller {
private Twitter twitter;
private ConnectionRepository connectionRepository;
private DisplayUser displayUser;
@Inject
public TweetsFetcherController(Twitter twitter, ConnectionRepository connectionRepository,
DisplayUser displayUser) {
this.twitter = twitter;
this.connectionRepository = connectionRepository;
this.displayUser = displayUser;
}
@RequestMapping(method= RequestMethod.GET)
public String home(Model model) {
try {
TwitterProfile twitterProfile = twitter.userOperations().getUserProfile("shaunthomas999");
List<Tweet> tweets= twitter.timelineOperations().getUserTimeline(twitterProfile.getId(),30);
displayUser.setTweets(tweets);
model.addAttribute("displayUser", displayUser);
FilterStreamParameters filterStreamParameters = new FilterStreamParameters();
filterStreamParameters.follow(twitterProfile.getId());
StreamListener streamListener2 = new StreamListener() {
@Override
public void onTweet(Tweet tweet) {
List<Tweet> displayUserTweets = displayUser.getTweets();
displayUserTweets.add(tweet);
displayUser.setTweets(displayUserTweets);
}
@Override
public void onDelete(StreamDeleteEvent streamDeleteEvent) {
}
@Override
public void onLimit(int i) {
}
@Override
public void onWarning(StreamWarningEvent streamWarningEvent) {
}
};
twitter.streamingOperations().filter(filterStreamParameters, Arrays.asList(streamListener2));
Thread.sleep(1000);
} catch (InterruptedException interruptedException) {
LOGGER.error(interruptedException.getMessage());
}
return "home";
}
}
Here DisplayUser
is my modal which contains List<Tweet> tweets
as one of the property. I want to know how can I show the change in tweets
list of displayUser when a new tweet is made (handled by onTweet
method).
I am using spring-boot-starter-social-twitter
for my implementation.