diff --git a/src/main/java/com/github/redouane59/twitter/ITwitterClientV1.java b/src/main/java/com/github/redouane59/twitter/ITwitterClientV1.java index e571f029..fbd80cc6 100644 --- a/src/main/java/com/github/redouane59/twitter/ITwitterClientV1.java +++ b/src/main/java/com/github/redouane59/twitter/ITwitterClientV1.java @@ -197,5 +197,24 @@ public interface ITwitterClientV1 { */ List getMentionsTimeline(int count, String maxId); + /** + * Get the 200 most recent Tweets posted by the user calling https://api.twitter.com/1.1/statuses/user_timeline.json + * + * @param userId the id of the user + * @return a list of the 200 most recent Tweets posted by the user + */ + List getUserTimeline(String userId); + + /** + * Get the most recent Tweets posted by the user calling https://api.twitter.com/1.1/statuses/user_timeline.json + * + * @param userId the id of the user + * @param count Specifies the number of Tweets to try and retrieve, up to a maximum of 200 per distinct request + * @param maxId Returns results with an ID less than (that is, older than) or equal to the specified ID. + * @return a list of the most recent Tweets posted by the user + */ + List getUserTimeline(String userId, int count, String maxId); + + } diff --git a/src/main/java/com/github/redouane59/twitter/TwitterClient.java b/src/main/java/com/github/redouane59/twitter/TwitterClient.java index 9af2605f..76a6f146 100644 --- a/src/main/java/com/github/redouane59/twitter/TwitterClient.java +++ b/src/main/java/com/github/redouane59/twitter/TwitterClient.java @@ -518,13 +518,26 @@ public void startSampledStream(Consumer consumer) { @Override public List getMentionsTimeline() { int maxCount = 200; - String url = this.urlHelper.getMentionsTimelinerl(maxCount); + String url = this.urlHelper.getMentionsTimelineUrl(maxCount); return List.of(this.requestHelper.getRequest(url, TweetV1[].class).orElseThrow(NoSuchElementException::new)); } @Override public List getMentionsTimeline(int count, String maxId) { - String url = this.urlHelper.getMentionsTimelinerl(count, maxId); + String url = this.urlHelper.getMentionsTimelineUrl(count, maxId); + return List.of(this.requestHelper.getRequest(url, TweetV1[].class).orElseThrow(NoSuchElementException::new)); + } + + @Override + public List getUserTimeline(final String userId) { + int maxCount = 200; + String url = this.urlHelper.getUserTimelineUrl(userId, maxCount); + return List.of(this.requestHelper.getRequest(url, TweetV1[].class).orElseThrow(NoSuchElementException::new)); + } + + @Override + public List getUserTimeline(final String userId, final int count, final String maxId) { + String url = this.urlHelper.getUserTimelineUrl(userId, count, maxId); return List.of(this.requestHelper.getRequest(url, TweetV1[].class).orElseThrow(NoSuchElementException::new)); } diff --git a/src/main/java/com/github/redouane59/twitter/helpers/URLHelper.java b/src/main/java/com/github/redouane59/twitter/helpers/URLHelper.java index aebf17e7..01051d6c 100644 --- a/src/main/java/com/github/redouane59/twitter/helpers/URLHelper.java +++ b/src/main/java/com/github/redouane59/twitter/helpers/URLHelper.java @@ -302,13 +302,21 @@ public String getSampledStreamUrl() { return ROOT_URL_V2 + TWEETS + SAMPLE + STREAM; } - public String getMentionsTimelinerl(int count) { + public String getMentionsTimelineUrl(int count) { return ROOT_URL_V1 + STATUSES + "/mentions_timeline.json?include_entities=true&" + COUNT + "=" + count; } - public String getMentionsTimelinerl(int count, String maxId) { + public String getMentionsTimelineUrl(int count, String maxId) { return ROOT_URL_V1 + STATUSES + "/mentions_timeline.json?include_entities=true&" + COUNT + "=" + count + "&max_id=" + maxId; } + + public String getUserTimelineUrl(final String userId, final int count) { + return ROOT_URL_V1 + STATUSES + "/user_timeline.json?user_id=" + userId + "&" + COUNT + "=" + count; + } + + public String getUserTimelineUrl(final String userId, final int count, final String maxId) { + return ROOT_URL_V1 + STATUSES + "/user_timeline.json?user_id=" + userId + "&" + COUNT + "=" + count + "&max_id=" + maxId; + } } diff --git a/src/test/java/com/github/redouane59/twitter/nrt/ITwitterClientV1Test.java b/src/test/java/com/github/redouane59/twitter/nrt/ITwitterClientV1Test.java index fa97c345..17a12a87 100644 --- a/src/test/java/com/github/redouane59/twitter/nrt/ITwitterClientV1Test.java +++ b/src/test/java/com/github/redouane59/twitter/nrt/ITwitterClientV1Test.java @@ -194,7 +194,21 @@ public void testGetMentionsTimelineWithMaxId() { List result = twitterClient.getMentionsTimeline(10, "1302072684629590016"); assertTrue(result.size() > 0); } - /* + + @Test + public void testGetUserTimeline() { + List result = twitterClient.getUserTimeline("1120050519182016513"); + assertTrue(result.size() > 0); + } + + @Test + public void testGetUserTimelineWithMaxId() { + List result = twitterClient.getUserTimeline("1120050519182016513", 10, "1300007914674040832"); + assertTrue(result.size() > 0); + } + + + /* @Test public void testSearchTweetsArchive(){ diff --git a/src/test/java/com/github/redouane59/twitter/unit/UrlHelperTest.java b/src/test/java/com/github/redouane59/twitter/unit/UrlHelperTest.java index 8314f0fe..3d080b13 100644 --- a/src/test/java/com/github/redouane59/twitter/unit/UrlHelperTest.java +++ b/src/test/java/com/github/redouane59/twitter/unit/UrlHelperTest.java @@ -227,13 +227,25 @@ public void testLiveEventUrl() { @Test public void testGetMentionsTimelineUrl() { assertEquals("https://api.twitter.com/1.1/statuses/mentions_timeline.json?include_entities=true&count=200", - urlHelper.getMentionsTimelinerl(200)); + urlHelper.getMentionsTimelineUrl(200)); } @Test public void testGetMentionsTimelineUrlWithMaxId() { assertEquals("https://api.twitter.com/1.1/statuses/mentions_timeline.json?include_entities=true&count=10&max_id=12345", - urlHelper.getMentionsTimelinerl(10, "12345")); + urlHelper.getMentionsTimelineUrl(10, "12345")); + } + + @Test + public void testGetUserTimelineUrl() { + assertEquals("https://api.twitter.com/1.1/statuses/user_timeline.json?user_id=99999&count=200", + urlHelper.getUserTimelineUrl("99999", 200)); + } + + @Test + public void testGetUserTimelineUrlWithMaxId() { + assertEquals("https://api.twitter.com/1.1/statuses/user_timeline.json?user_id=99999&count=10&max_id=12345", + urlHelper.getUserTimelineUrl("99999", 10, "12345")); } }