]> git.somenet.org - pub/jan/aic18.git/blob - service-twitter/src/main/java/at/aic18/g6t4/servicetwitter/service/TwitterService.java
Merge remote-tracking branch 'origin/master' into service-twitter
[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         Query query = new Query(queryString);
22         query.count(10);
23         QueryResult queryResult = twitter.search(query);
24         List<Status> statusList = queryResult.getTweets();
25         return parseTweets(statusList);
26     }
27
28     private List<Tweet> parseTweets(List<Status> statusList) {
29         return statusList.stream()
30                 .map(this::parseTweet)
31                 .collect(Collectors.toList());
32     }
33
34     private Tweet parseTweet(Status status) {
35         return Tweet.builder()
36                 .id(status.getId())
37                 .createdAt(status.getCreatedAt())
38                 .text(status.getText())
39                 .user(parseUser(status.getUser()))
40                 .build();
41     }
42
43     private User parseUser(twitter4j.User twitterUser) {
44         return User.builder()
45                 .id(twitterUser.getId())
46                 .name(twitterUser.getName())
47                 .build();
48     }
49
50 }