1 package at.aic18.g6t4.servicetwitter.service;
3 import at.aic18.g6t4.servicetwitter.model.Tweet;
4 import at.aic18.g6t4.servicetwitter.model.User;
5 import org.springframework.stereotype.Service;
9 import java.util.stream.Collectors;
11 import static java.util.function.Predicate.not;
14 public class TwitterService {
16 private final Twitter twitter;
18 public TwitterService(Twitter twitter) {
19 this.twitter = twitter;
22 public List<Tweet> searchTweets(String queryString) throws TwitterException {
23 Query query = new Query(queryString);
25 QueryResult queryResult = twitter.search(query);
26 List<Status> statusList = queryResult.getTweets();
27 return parseTweets(statusList);
30 private List<Tweet> parseTweets(List<Status> statusList) {
31 return statusList.stream()
32 .filter(not(Status::isRetweet))
33 .map(this::parseTweet)
34 .collect(Collectors.toList());
37 private Tweet parseTweet(Status status) {
38 return Tweet.builder()
40 .createdAt(status.getCreatedAt())
41 .text(status.getText())
42 .user(parseUser(status.getUser()))
46 private User parseUser(twitter4j.User twitterUser) {
48 .id(twitterUser.getId())
49 .name(twitterUser.getName())