]> git.somenet.org - pub/jan/aic18.git/blob - service-twitter/src/main/java/at/aic18/g6t4/servicetwitter/service/TwitterService.java
Exclude retweets via query string
[pub/jan/aic18.git] / service-twitter / src / main / java / at / aic18 / g6t4 / servicetwitter / service / TwitterService.java
1 package at.aic18.g6t4.servicetwitter.service;
2
3 import at.aic18.g6t4.servicetwitter.model.Tweet;
4 import at.aic18.g6t4.servicetwitter.model.User;
5 import org.springframework.stereotype.Service;
6 import twitter4j.*;
7
8 import java.util.List;
9 import java.util.stream.Collectors;
10
11 @Service
12 public class TwitterService {
13
14     private final Twitter twitter;
15
16     public TwitterService(Twitter twitter) {
17         this.twitter = twitter;
18     }
19
20     public List<Tweet> searchTweets(String queryString) throws TwitterException {
21         String excludeRetweets = " exclude:retweets";
22         Query query = new Query(queryString + excludeRetweets);
23         query.count(10);
24         QueryResult queryResult = twitter.search(query);
25         List<Status> statusList = queryResult.getTweets();
26         return parseTweets(statusList);
27     }
28
29     private List<Tweet> parseTweets(List<Status> statusList) {
30         return statusList.stream()
31                 .map(this::parseTweet)
32                 .collect(Collectors.toList());
33     }
34
35     private Tweet parseTweet(Status status) {
36         return Tweet.builder()
37                 .id(status.getId())
38                 .createdAt(status.getCreatedAt())
39                 .text(status.getText())
40                 .user(parseUser(status.getUser()))
41                 .build();
42     }
43
44     private User parseUser(twitter4j.User twitterUser) {
45         return User.builder()
46                 .id(twitterUser.getId())
47                 .name(twitterUser.getName())
48                 .build();
49     }
50
51 }