From 38aa9f2c622ff44267c43ab3f24c531cc5d0cc7e Mon Sep 17 00:00:00 2001 From: Vincent Cloutier Date: Sun, 18 Jun 2023 16:55:11 -0400 Subject: [PATCH] added tweet author --- src/BirdsiteLive.Twitter/Models/ExtractedTweet.cs | 1 + src/BirdsiteLive.Twitter/TwitterTweetsService.cs | 10 ++++++++++ src/Tests/BirdsiteLive.Twitter.Tests/TimelineTests.cs | 3 ++- src/Tests/BirdsiteLive.Twitter.Tests/TweetTests.cs | 1 + 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/BirdsiteLive.Twitter/Models/ExtractedTweet.cs b/src/BirdsiteLive.Twitter/Models/ExtractedTweet.cs index 79d4b7c..192f74c 100644 --- a/src/BirdsiteLive.Twitter/Models/ExtractedTweet.cs +++ b/src/BirdsiteLive.Twitter/Models/ExtractedTweet.cs @@ -17,5 +17,6 @@ namespace BirdsiteLive.Twitter.Models public string RetweetUrl { get; set; } public long RetweetId { get; set; } public TwitterUser OriginalAuthor { get; set; } + public TwitterUser Author { get; set; } } } \ No newline at end of file diff --git a/src/BirdsiteLive.Twitter/TwitterTweetsService.cs b/src/BirdsiteLive.Twitter/TwitterTweetsService.cs index 7db3001..ebda7ba 100644 --- a/src/BirdsiteLive.Twitter/TwitterTweetsService.cs +++ b/src/BirdsiteLive.Twitter/TwitterTweetsService.cs @@ -179,6 +179,7 @@ namespace BirdsiteLive.Twitter JsonElement retweet; TwitterUser OriginalAuthor; + TwitterUser author = null; JsonElement inReplyToPostIdElement; JsonElement inReplyToUserElement; string inReplyToUser = null; @@ -189,6 +190,12 @@ namespace BirdsiteLive.Twitter .GetProperty("tweet_results").GetProperty("result").GetProperty("core").GetProperty("user_results") .GetProperty("result").GetProperty("legacy").GetProperty("screen_name").GetString(); + JsonElement userDoc = tweet.GetProperty("content").GetProperty("itemContent") + .GetProperty("tweet_results").GetProperty("result").GetProperty("core") + .GetProperty("user_results").GetProperty("result"); + + author = _twitterUserService.Extract(userDoc); + bool isReply = tweet.GetProperty("content").GetProperty("itemContent") .GetProperty("tweet_results").GetProperty("result").GetProperty("legacy") .TryGetProperty("in_reply_to_status_id_str", out inReplyToPostIdElement); @@ -218,6 +225,7 @@ namespace BirdsiteLive.Twitter .GetProperty("text").GetString(); } OriginalAuthor = null; + } else { @@ -323,6 +331,7 @@ namespace BirdsiteLive.Twitter quoteTweetLink = quoteTweetLink.Replace("/status/", "/statuses/"); MessageContent = MessageContent + "\n\n" + quoteTweetLink; } + var extractedTweet = new ExtractedTweet { Id = Int64.Parse(tweet.GetProperty("entryId").GetString().Replace("tweet-", "")), @@ -337,6 +346,7 @@ namespace BirdsiteLive.Twitter RetweetUrl = "https://t.co/123", RetweetId = retweetId, OriginalAuthor = OriginalAuthor, + Author = author, }; return extractedTweet; diff --git a/src/Tests/BirdsiteLive.Twitter.Tests/TimelineTests.cs b/src/Tests/BirdsiteLive.Twitter.Tests/TimelineTests.cs index 80b69b1..55b7bf1 100644 --- a/src/Tests/BirdsiteLive.Twitter.Tests/TimelineTests.cs +++ b/src/Tests/BirdsiteLive.Twitter.Tests/TimelineTests.cs @@ -57,12 +57,13 @@ namespace BirdsiteLive.ActivityPub.Tests { var tweets = await _tweetService.GetTimelineAsync("grantimahara", default); Assert.IsTrue(tweets[0].IsReply); - Assert.IsTrue(tweets.Length > 30); + Assert.IsTrue(tweets.Length > 10); Assert.AreEqual(tweets[2].MessageContent, "Liftoff!"); Assert.AreEqual(tweets[2].RetweetId, 1266812530833240064); Assert.AreEqual(tweets[2].Id, 1266813644626489345); Assert.AreEqual(tweets[2].OriginalAuthor.Acct, "SpaceX"); + Assert.AreEqual(tweets[2].Author.Acct, "grantimahara"); Assert.IsTrue(tweets[2].IsRetweet); } diff --git a/src/Tests/BirdsiteLive.Twitter.Tests/TweetTests.cs b/src/Tests/BirdsiteLive.Twitter.Tests/TweetTests.cs index 575233a..b8725ef 100644 --- a/src/Tests/BirdsiteLive.Twitter.Tests/TweetTests.cs +++ b/src/Tests/BirdsiteLive.Twitter.Tests/TweetTests.cs @@ -107,6 +107,7 @@ namespace BirdsiteLive.ActivityPub.Tests var tweet = await _tweetService.GetTweetAsync(1610807139089383427); Assert.AreEqual(tweet.MessageContent, "When you gave them your keys you gave them your coins.\n\nhttps://domain.name/users/kadhim/statuses/1610706613207285773"); + Assert.AreEqual(tweet.Author.Acct, "RyanSAdams"); } [TestMethod]