tweaks Announce activities

This commit is contained in:
Vincent Cloutier 2023-02-13 20:51:43 -05:00
parent 2bf4266312
commit 9951645360
6 changed files with 56 additions and 10 deletions

View file

@ -44,8 +44,8 @@ namespace BirdsiteLive.Domain
if (tweet.IsRetweet) if (tweet.IsRetweet)
{ {
actorUrl = UrlFactory.GetActorUrl(_instanceSettings.Domain, tweet.OriginalAuthor.Acct); actorUrl = UrlFactory.GetActorUrl(_instanceSettings.Domain, tweet.OriginalAuthor.Acct);
noteUrl = UrlFactory.GetNoteUrl(_instanceSettings.Domain, tweet.OriginalAuthor.Acct, tweet.Id.ToString()); noteUrl = UrlFactory.GetNoteUrl(_instanceSettings.Domain, tweet.OriginalAuthor.Acct, tweet.RetweetId.ToString());
announceId = UrlFactory.GetNoteUrl(_instanceSettings.Domain, username, tweet.RetweetId.ToString()); announceId = UrlFactory.GetNoteUrl(_instanceSettings.Domain, username, tweet.Id.ToString());
} }
var to = $"{actorUrl}/followers"; var to = $"{actorUrl}/followers";

View file

@ -178,6 +178,7 @@ namespace BirdsiteLive.Twitter
JsonElement inReplyToUserElement; JsonElement inReplyToUserElement;
string inReplyToUser = null; string inReplyToUser = null;
long? inReplyToPostId = null; long? inReplyToPostId = null;
long retweetId = default;
string userName = tweet.GetProperty("content").GetProperty("itemContent") string userName = tweet.GetProperty("content").GetProperty("itemContent")
.GetProperty("tweet_results").GetProperty("result").GetProperty("core").GetProperty("user_results") .GetProperty("tweet_results").GetProperty("result").GetProperty("core").GetProperty("user_results")
@ -217,6 +218,10 @@ namespace BirdsiteLive.Twitter
.GetProperty("core").GetProperty("user_results").GetProperty("result") .GetProperty("core").GetProperty("user_results").GetProperty("result")
.GetProperty("legacy").GetProperty("screen_name").GetString(); .GetProperty("legacy").GetProperty("screen_name").GetString();
OriginalAuthor = await _twitterUserService.GetUserAsync(OriginalAuthorUsername); OriginalAuthor = await _twitterUserService.GetUserAsync(OriginalAuthorUsername);
retweetId = Int64.Parse(tweet.GetProperty("content").GetProperty("itemContent")
.GetProperty("tweet_results").GetProperty("result").GetProperty("legacy")
.GetProperty("retweeted_status_result").GetProperty("result")
.GetProperty("rest_id").GetString());
} }
string creationTime = tweet.GetProperty("content").GetProperty("itemContent") string creationTime = tweet.GetProperty("content").GetProperty("itemContent")
@ -291,7 +296,7 @@ namespace BirdsiteLive.Twitter
} }
var extractedTweet = new ExtractedTweet var extractedTweet = new ExtractedTweet
{ {
Id = Int64.Parse(tweet.GetProperty("sortIndex").GetString()), Id = Int64.Parse(tweet.GetProperty("entryId").GetString().Replace("tweet-", "")),
InReplyToStatusId = inReplyToPostId, InReplyToStatusId = inReplyToPostId,
InReplyToAccount = inReplyToUser, InReplyToAccount = inReplyToUser,
MessageContent = MessageContent.Trim(), MessageContent = MessageContent.Trim(),
@ -301,6 +306,7 @@ namespace BirdsiteLive.Twitter
IsRetweet = isRetweet, IsRetweet = isRetweet,
Media = Media.Count() == 0 ? null : Media.ToArray(), Media = Media.Count() == 0 ? null : Media.ToArray(),
RetweetUrl = "https://t.co/123", RetweetUrl = "https://t.co/123",
RetweetId = retweetId,
OriginalAuthor = OriginalAuthor, OriginalAuthor = OriginalAuthor,
}; };

View file

@ -45,9 +45,41 @@ Photo by Tim Tronckoe | @timtronckoe
var statusExtractor = new StatusExtractor(_settings, logger1.Object); var statusExtractor = new StatusExtractor(_settings, logger1.Object);
var stats = new Mock<IExtractionStatisticsHandler>(); var stats = new Mock<IExtractionStatisticsHandler>();
var service = new StatusService(_settings, statusExtractor, stats.Object); var service = new StatusService(_settings, statusExtractor, stats.Object);
var result = service.GetActivity(username, extractedTweet); var activity = service.GetActivity(username, extractedTweet);
#region Validations #region Validations
Assert.AreEqual(activity.type, "Create");
#endregion
}
[TestMethod]
public void RetweetTest()
{
#region Stubs
var username = "MyUserName";
var extractedTweet = new ExtractedTweet
{
Id = 124,
IsRetweet = true,
OriginalAuthor = new TwitterUser { Acct = "hello" },
CreatedAt = DateTime.UtcNow,
MessageContent = @"Getting ready for the weekend...have a great one everyone!",
RetweetId = 543,
};
#endregion
var logger1 = new Mock<ILogger<StatusExtractor>>();
var statusExtractor = new StatusExtractor(_settings, logger1.Object);
var stats = new Mock<IExtractionStatisticsHandler>();
var service = new StatusService(_settings, statusExtractor, stats.Object);
var activity = service.GetActivity(username, extractedTweet);
#region Validations
Assert.AreEqual(activity.type, "Announce");
Assert.AreEqual(activity.apObject.attributedTo, "https://domain.name/users/hello");
Assert.AreEqual(activity.apObject.announceId, "https://domain.name/users/myusername/statuses/124");
Assert.AreEqual(activity.apObject.id, "https://domain.name/users/hello/statuses/543");
#endregion #endregion
} }

View file

@ -234,7 +234,7 @@ namespace BirdsiteLive.Pipeline.Tests.Processors.SubTasks
} }
[TestMethod] [TestMethod]
public async Task ExecuteAsync_SingleTweet_PublishReply_Test() public async Task ExecuteAsync_SingleRetweet_Test()
{ {
#region Stubs #region Stubs
var tweetId = 10; var tweetId = 10;
@ -243,7 +243,9 @@ namespace BirdsiteLive.Pipeline.Tests.Processors.SubTasks
new ExtractedTweet new ExtractedTweet
{ {
Id = tweetId, Id = tweetId,
IsReply = true, IsReply = false,
IsRetweet = true,
OriginalAuthor = new TwitterUser { Acct = "hello" },
IsThread = false IsThread = false
} }
}; };
@ -293,10 +295,7 @@ namespace BirdsiteLive.Pipeline.Tests.Processors.SubTasks
} }
}; };
var settings = new InstanceSettings var settings = new InstanceSettings { };
{
PublishReplies = true
};
#endregion #endregion
#region Mocks #region Mocks

View file

@ -57,6 +57,12 @@ namespace BirdsiteLive.ActivityPub.Tests
var tweets = await _tweetService.GetTimelineAsync("grantimahara", default); var tweets = await _tweetService.GetTimelineAsync("grantimahara", default);
Assert.IsTrue(tweets[0].IsReply); Assert.IsTrue(tweets[0].IsReply);
Assert.IsTrue(tweets.Length > 30); Assert.IsTrue(tweets.Length > 30);
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.IsTrue(tweets[2].IsRetweet);
} }
} }

View file

@ -40,6 +40,9 @@ namespace BirdsiteLive.ActivityPub.Tests
{ {
var tweet = await _tweetService.GetTweetAsync(1600905296892891149); var tweet = await _tweetService.GetTweetAsync(1600905296892891149);
Assert.AreEqual(tweet.MessageContent, "Were strengthening American manufacturing by creating 750,000 manufacturing jobs since I became president."); Assert.AreEqual(tweet.MessageContent, "Were strengthening American manufacturing by creating 750,000 manufacturing jobs since I became president.");
Assert.AreEqual(tweet.Id, 1600905296892891149);
Assert.IsFalse(tweet.IsRetweet);
Assert.IsFalse(tweet.IsReply);
} }
[TestMethod] [TestMethod]