diff --git a/pom.xml b/pom.xml index d55c91b2..b0386784 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.redouane59.twitter twittered - 1.23 + 1.24 twittered java client for twitter API diff --git a/src/main/java/com/github/redouane59/twitter/ITwitterClientV2.java b/src/main/java/com/github/redouane59/twitter/ITwitterClientV2.java index 86139c24..6fa30f36 100644 --- a/src/main/java/com/github/redouane59/twitter/ITwitterClientV2.java +++ b/src/main/java/com/github/redouane59/twitter/ITwitterClientV2.java @@ -5,6 +5,7 @@ import com.github.redouane59.twitter.dto.stream.StreamRules.StreamRule; import com.github.redouane59.twitter.dto.tweet.LikeResponse; import com.github.redouane59.twitter.dto.tweet.Tweet; +import com.github.redouane59.twitter.dto.tweet.TweetListV2; import com.github.redouane59.twitter.dto.tweet.TweetSearchResponse; import com.github.redouane59.twitter.dto.user.FollowResponse; import com.github.redouane59.twitter.dto.user.User; @@ -291,6 +292,11 @@ public interface ITwitterClientV2 { */ UserListV2 getLikingUsers(String tweetId); - + /** + * Allows you to get information about a user’s liked Tweets calling https://api.twitter.com/2/users/:id/liked_tweets + * + * @param userId ID of the user to request liked Tweets for. + */ + TweetListV2 getLikedTweets(String userId); } diff --git a/src/main/java/com/github/redouane59/twitter/TwitterClient.java b/src/main/java/com/github/redouane59/twitter/TwitterClient.java index 3ba0aca5..b97cf1be 100644 --- a/src/main/java/com/github/redouane59/twitter/TwitterClient.java +++ b/src/main/java/com/github/redouane59/twitter/TwitterClient.java @@ -21,6 +21,7 @@ import com.github.redouane59.twitter.dto.tweet.LikeResponse; import com.github.redouane59.twitter.dto.tweet.MediaCategory; import com.github.redouane59.twitter.dto.tweet.Tweet; +import com.github.redouane59.twitter.dto.tweet.TweetListV2; import com.github.redouane59.twitter.dto.tweet.TweetSearchResponse; import com.github.redouane59.twitter.dto.tweet.TweetSearchResponseV1; import com.github.redouane59.twitter.dto.tweet.TweetSearchResponseV2; @@ -303,6 +304,12 @@ public UserListV2 getLikingUsers(final String tweetId) { return getRequestHelper().getRequest(url, UserListV2.class).orElseThrow(NoSuchElementException::new); } + @Override + public TweetListV2 getLikedTweets(final String userId) { + String url = this.getUrlHelper().getLikedTweetsUrl(userId); + return getRequestHelper().getRequest(url, TweetListV2.class).orElseThrow(NoSuchElementException::new); + } + @Override public Tweet retweetTweet(String tweetId) { String url = this.getUrlHelper().getRetweetTweetUrl(tweetId); diff --git a/src/main/java/com/github/redouane59/twitter/dto/tweet/TweetListV2.java b/src/main/java/com/github/redouane59/twitter/dto/tweet/TweetListV2.java new file mode 100644 index 00000000..600290fc --- /dev/null +++ b/src/main/java/com/github/redouane59/twitter/dto/tweet/TweetListV2.java @@ -0,0 +1,17 @@ +package com.github.redouane59.twitter.dto.tweet; + +import com.github.redouane59.twitter.dto.tweet.TweetV2.TweetData; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Getter +public class TweetListV2 { + + List data; +} 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 0f9b0164..fb017759 100644 --- a/src/main/java/com/github/redouane59/twitter/helpers/URLHelper.java +++ b/src/main/java/com/github/redouane59/twitter/helpers/URLHelper.java @@ -404,4 +404,9 @@ public String getLikingUsersUrl(final String tweetId) { return ROOT_URL_V2 + TWEETS + "/" + tweetId + "/liking_users" + "?" + USER_FIELDS + ALL_USER_FIELDS; } + + public String getLikedTweetsUrl(final String userId) { + return ROOT_URL_V2 + USERS + "/" + userId + "/liked_tweets" + + "?" + TWEET_FIELDS + ALL_TWEET_FIELDS; + } } diff --git a/src/test/java/com/github/redouane59/twitter/nrt/ITwitterClientV2Test.java b/src/test/java/com/github/redouane59/twitter/nrt/ITwitterClientV2Test.java index 1e2efb01..50f70db7 100644 --- a/src/test/java/com/github/redouane59/twitter/nrt/ITwitterClientV2Test.java +++ b/src/test/java/com/github/redouane59/twitter/nrt/ITwitterClientV2Test.java @@ -13,6 +13,7 @@ import com.github.redouane59.twitter.dto.stream.StreamRules.StreamRule; import com.github.redouane59.twitter.dto.tweet.LikeResponse; import com.github.redouane59.twitter.dto.tweet.Tweet; +import com.github.redouane59.twitter.dto.tweet.TweetListV2; import com.github.redouane59.twitter.dto.tweet.TweetSearchResponse; import com.github.redouane59.twitter.dto.tweet.TweetType; import com.github.redouane59.twitter.dto.tweet.TweetV2; @@ -344,6 +345,15 @@ public void testGetLikingUsers() { assertNotNull(result.getData().get(0).getCreatedAt()); } + @Test + public void testGetLikedTweets() { + TweetListV2 result = twitterClient.getLikedTweets("1120050519182016513"); + assertTrue(result.getData().size() > 0); + assertNotNull(result.getData().get(0).getId()); + assertNotNull(result.getData().get(0).getText()); + assertNotNull(result.getData().get(0).getCreatedAt()); + } + @Test public void testGetUserIdFromAccessToken() { assertEquals(this.userId, twitterClient.getUserIdFromAccessToken()); 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 e173ad2c..6b3aa4e1 100644 --- a/src/test/java/com/github/redouane59/twitter/unit/UrlHelperTest.java +++ b/src/test/java/com/github/redouane59/twitter/unit/UrlHelperTest.java @@ -300,4 +300,11 @@ public void testLikingUsers() { "https://api.twitter.com/2/tweets/1354143047324299264/liking_users?user.fields=id,created_at,entities,username,name,location,url,verified,profile_image_url,public_metrics,pinned_tweet_id,description,protected", urlHelper.getLikingUsersUrl("1354143047324299264")); } + + @Test + public void testLikedTweetsUrl() { + String userId = "12345"; + assertEquals("https://api.twitter.com/2/users/" + userId + "/liked_tweets?" + URLHelper.TWEET_FIELDS + URLHelper.ALL_TWEET_FIELDS, + urlHelper.getLikedTweetsUrl(userId)); + } }