From 49efcd1f9734694021949bd8e310975c250657bf Mon Sep 17 00:00:00 2001 From: Vincent Cloutier Date: Sun, 8 May 2022 19:10:08 -0400 Subject: [PATCH] started working on RT --- src/BirdsiteLive.Domain/StatusService.cs | 8 ++------ .../Extractors/TweetExtractor.cs | 15 ++++++++++++++- src/BirdsiteLive.Twitter/Models/ExtractedTweet.cs | 1 + src/BirdsiteLive.Twitter/TwitterTweetsService.cs | 2 +- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/BirdsiteLive.Domain/StatusService.cs b/src/BirdsiteLive.Domain/StatusService.cs index 04cee27..b6a00dc 100644 --- a/src/BirdsiteLive.Domain/StatusService.cs +++ b/src/BirdsiteLive.Domain/StatusService.cs @@ -60,13 +60,9 @@ namespace BirdsiteLive.Domain // Replace RT by a link var content = extractedTags.content; - if (content.Contains("{RT}") && tweet.IsRetweet) + if (tweet.IsRetweet) { - if (!string.IsNullOrWhiteSpace(tweet.RetweetUrl)) - content = content.Replace("{RT}", - $@"RT"); - else - content = content.Replace("{RT}", "RT"); + content = "RT: " + content; } string inReplyTo = null; diff --git a/src/BirdsiteLive.Twitter/Extractors/TweetExtractor.cs b/src/BirdsiteLive.Twitter/Extractors/TweetExtractor.cs index 830adf4..4cea323 100644 --- a/src/BirdsiteLive.Twitter/Extractors/TweetExtractor.cs +++ b/src/BirdsiteLive.Twitter/Extractors/TweetExtractor.cs @@ -13,7 +13,15 @@ namespace BirdsiteLive.Twitter.Extractors } public class TweetExtractor : ITweetExtractor - { + { + + private readonly ITwitterTweetsService _twitterTweetsService; + + public TweetExtractor(ITwitterTweetsService twitterTweetsService) + { + _twitterTweetsService = twitterTweetsService; + } + public ExtractedTweet Extract(JsonElement tweet) { bool IsRetweet = false; @@ -33,6 +41,11 @@ namespace BirdsiteLive.Twitter.Extractors if (first.GetProperty("type").GetString() == "retweeted") { IsRetweet = true; + var statusId = Int64.Parse(first.GetProperty("id").GetString()); + var extracted = _twitterTweetsService.GetTweet(statusId); + extracted.IsRetweet = true; + return extracted; + } if (first.GetProperty("type").GetString() == "replied_to") { diff --git a/src/BirdsiteLive.Twitter/Models/ExtractedTweet.cs b/src/BirdsiteLive.Twitter/Models/ExtractedTweet.cs index f7f4e59..51e12f8 100644 --- a/src/BirdsiteLive.Twitter/Models/ExtractedTweet.cs +++ b/src/BirdsiteLive.Twitter/Models/ExtractedTweet.cs @@ -15,5 +15,6 @@ namespace BirdsiteLive.Twitter.Models public bool IsThread { get; set; } public bool IsRetweet { get; set; } public string RetweetUrl { get; set; } + public string OriginalAuthor { get; set; } } } \ No newline at end of file diff --git a/src/BirdsiteLive.Twitter/TwitterTweetsService.cs b/src/BirdsiteLive.Twitter/TwitterTweetsService.cs index 31d3965..a01306c 100644 --- a/src/BirdsiteLive.Twitter/TwitterTweetsService.cs +++ b/src/BirdsiteLive.Twitter/TwitterTweetsService.cs @@ -50,7 +50,7 @@ namespace BirdsiteLive.Twitter { await _twitterAuthenticationInitializer.EnsureAuthenticationIsInitialized(); JsonDocument tweet; - using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://api.twitter.com/2/tweets?ids=" + statusId)) + using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://api.twitter.com/2/tweets?ids=" + statusId + "&tweet.fields=id,created_at,text,author_id,in_reply_to_user_id,referenced_tweets,attachments,withheld,geo,entities,public_metrics,possibly_sensitive,source,lang,context_annotations,conversation_id,reply_settings&user.fields=name,username")) { request.Headers.TryAddWithoutValidation("Authorization", "Bearer " + _twitterAuthenticationInitializer.Token);