diff --git a/src/BirdsiteLive.ActivityPub/ApDeserializer.cs b/src/BirdsiteLive.ActivityPub/ApDeserializer.cs
index 17fa3a0..df385ef 100644
--- a/src/BirdsiteLive.ActivityPub/ApDeserializer.cs
+++ b/src/BirdsiteLive.ActivityPub/ApDeserializer.cs
@@ -34,12 +34,13 @@ namespace BirdsiteLive.ActivityPub
id = accept.id,
actor = accept.actor,
context = accept.context,
- apObject = new NestedActivity()
+ apObject = new ActivityFollow()
{
+
id = accept.apObject.id,
type = accept.apObject.type,
actor = accept.apObject.actor,
- context = accept.apObject.context,
+ context = accept.apObject.context?.ToString(),
apObject = accept.apObject.apObject,
}
};
diff --git a/src/BirdsiteLive.ActivityPub/Models/ActivityAcceptFollow.cs b/src/BirdsiteLive.ActivityPub/Models/ActivityAcceptFollow.cs
index 91ec40e..8cba0cc 100644
--- a/src/BirdsiteLive.ActivityPub/Models/ActivityAcceptFollow.cs
+++ b/src/BirdsiteLive.ActivityPub/Models/ActivityAcceptFollow.cs
@@ -5,6 +5,6 @@ namespace BirdsiteLive.ActivityPub
public class ActivityAcceptFollow : Activity
{
[JsonPropertyName("object")]
- public NestedActivity apObject { get; set; }
+ public ActivityFollow apObject { get; set; }
}
}
\ No newline at end of file
diff --git a/src/BirdsiteLive.Domain/ActivityPubService.cs b/src/BirdsiteLive.Domain/ActivityPubService.cs
index 3a3137c..470be70 100644
--- a/src/BirdsiteLive.Domain/ActivityPubService.cs
+++ b/src/BirdsiteLive.Domain/ActivityPubService.cs
@@ -83,7 +83,7 @@ namespace BirdsiteLive.Domain
id = $"{activity.apObject}#accepts/follows/{Guid.NewGuid()}",
type = "Accept",
actor = activity.apObject,
- apObject = new NestedActivity()
+ apObject = new ActivityFollow()
{
id = activity.id,
type = activity.type,
@@ -100,8 +100,7 @@ namespace BirdsiteLive.Domain
if (!string.IsNullOrWhiteSpace(inbox))
usedInbox = inbox;
- var json = JsonSerializer.Serialize(data,
- new JsonSerializerOptions() { DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull });
+ var json = JsonSerializer.Serialize(data);
var date = DateTime.UtcNow.ToUniversalTime();
var httpDate = date.ToString("r");
diff --git a/src/BirdsiteLive.Domain/UserService.cs b/src/BirdsiteLive.Domain/UserService.cs
index 2b38d90..ffd0b81 100644
--- a/src/BirdsiteLive.Domain/UserService.cs
+++ b/src/BirdsiteLive.Domain/UserService.cs
@@ -243,10 +243,11 @@ namespace BirdsiteLive.Domain
actor = activity.apObject.apObject,
apObject = new ActivityUndoFollow()
{
- id = activity.id,
- type = activity.type,
- actor = activity.actor,
- apObject = activity.apObject
+ id = (activity.apObject as dynamic).id?.ToString(),
+ type = (activity.apObject as dynamic).type?.ToString(),
+ actor = (activity.apObject as dynamic).actor?.ToString(),
+ context = (activity.apObject as dynamic).context?.ToString(),
+ apObject = (activity.apObject as dynamic).@object?.ToString()
}
};
var result = await _activityPubService.PostDataAsync(acceptFollow, followerHost, activity.apObject.apObject);
diff --git a/src/BirdsiteLive.Twitter/TwitterTweetsService.cs b/src/BirdsiteLive.Twitter/TwitterTweetsService.cs
index e450dfa..5811c74 100644
--- a/src/BirdsiteLive.Twitter/TwitterTweetsService.cs
+++ b/src/BirdsiteLive.Twitter/TwitterTweetsService.cs
@@ -55,16 +55,14 @@ namespace BirdsiteLive.Twitter
"https://api.twitter.com/graphql/XjlydVWHFIDaAUny86oh2g/TweetDetail?variables=%7B%22focalTweetId%22%3A%22"
+ statusId +
"%22,%22with_rux_injections%22%3Atrue,%22includePromotedContent%22%3Afalse,%22withCommunity%22%3Afalse,%22withQuickPromoteEligibilityTweetFields%22%3Afalse,%22withBirdwatchNotes%22%3Afalse,%22withSuperFollowsUserFields%22%3Afalse,%22withDownvotePerspective%22%3Afalse,%22withReactionsMetadata%22%3Afalse,%22withReactionsPerspective%22%3Afalse,%22withSuperFollowsTweetFields%22%3Afalse,%22withVoice%22%3Atrue,%22withV2Timeline%22%3Atrue%7D&features=%7B%22responsive_web_twitter_blue_verified_badge_is_enabled%22%3Atrue,%22responsive_web_graphql_exclude_directive_enabled%22%3Atrue,%22verified_phone_label_enabled%22%3Afalse,%22responsive_web_graphql_timeline_navigation_enabled%22%3Atrue,%22responsive_web_graphql_skip_user_profile_image_extensions_enabled%22%3Afalse,%22tweetypie_unmention_optimization_enabled%22%3Atrue,%22vibe_api_enabled%22%3Atrue,%22responsive_web_edit_tweet_api_enabled%22%3Atrue,%22graphql_is_translatable_rweb_tweet_is_translatable_enabled%22%3Afalse,%22view_counts_everywhere_api_enabled%22%3Atrue,%22longform_notetweets_consumption_enabled%22%3Atrue,%22tweet_awards_web_tipping_enabled%22%3Afalse,%22freedom_of_speech_not_reach_fetch_enabled%22%3Afalse,%22standardized_nudges_misinfo%22%3Atrue,%22tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled%22%3Afalse,%22interactive_text_enabled%22%3Atrue,%22responsive_web_text_conversations_enabled%22%3Afalse,%22longform_notetweets_richtext_consumption_enabled%22%3Afalse,%22responsive_web_enhance_cards_enabled%22%3Atrue%7D";
+ using var request = _twitterAuthenticationInitializer.MakeHttpRequest(new HttpMethod("GET"), reqURL);
try
{
JsonDocument tweet;
- using (var request = _twitterAuthenticationInitializer.MakeHttpRequest(new HttpMethod("GET"), reqURL))
- {
- var httpResponse = await client.SendAsync(request);
- httpResponse.EnsureSuccessStatusCode();
- var c = await httpResponse.Content.ReadAsStringAsync();
- tweet = JsonDocument.Parse(c);
- }
+ var httpResponse = await client.SendAsync(request);
+ httpResponse.EnsureSuccessStatusCode();
+ var c = await httpResponse.Content.ReadAsStringAsync();
+ tweet = JsonDocument.Parse(c);
var timeline = tweet.RootElement.GetProperty("data").GetProperty("threaded_conversation_with_injections_v2")
@@ -77,6 +75,7 @@ namespace BirdsiteLive.Twitter
catch (Exception e)
{
_logger.LogError(e, "Error retrieving tweet {TweetId}", statusId);
+ await _twitterAuthenticationInitializer.RefreshClient(request);
return null;
}
}
diff --git a/src/Tests/BirdsiteLive.Domain.Tests/ActivityServiceTests.cs b/src/Tests/BirdsiteLive.Domain.Tests/ActivityServiceTests.cs
index 20525f6..5fed8b0 100644
--- a/src/Tests/BirdsiteLive.Domain.Tests/ActivityServiceTests.cs
+++ b/src/Tests/BirdsiteLive.Domain.Tests/ActivityServiceTests.cs
@@ -6,6 +6,7 @@ using BirdsiteLive.Domain.Factories;
using Microsoft.Extensions.Logging;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
+using System.Text.Json;
namespace BirdsiteLive.Domain.Tests
@@ -38,8 +39,21 @@ namespace BirdsiteLive.Domain.Tests
var activity = new ActivityAcceptFollow()
{
id = "awef",
+ context = "https://www.w3.org/ns/activitystreams",
+ type = "Accept",
+ actor = "https://mastodon.technology/users/testtest",
+ apObject = new ActivityFollow()
+ {
+ context = "https://www.w3.org/ns/activitystreams",
+ id = "abc",
+ type = "Follow",
+ actor = "https://mastodon.technology/users/testtest2",
+ apObject = "https://mastodon.technology/users/testtest3",
+ }
+
};
- var json = "{\"id\":\"awef\"}";
+ var json =
+ """{"object":{"object":"https://mastodon.technology/users/testtest3","@context":"https://www.w3.org/ns/activitystreams","id":"abc","type":"Follow","actor":"https://mastodon.technology/users/testtest2"},"@context":"https://www.w3.org/ns/activitystreams","id":"awef","type":"Accept","actor":"https://mastodon.technology/users/testtest"}""";
#region Validations
var req = service.BuildRequest(activity, "google.com", "tata", "awef");
@@ -70,6 +84,8 @@ namespace BirdsiteLive.Domain.Tests
var req = service.BuildAcceptFollow(activity);
+ string s = JsonSerializer.Serialize(req);
+
Assert.AreEqual(req.actor, activityRes.actor);
Assert.AreEqual(req.context, activityRes.context);
diff --git a/src/Tests/BirdsiteLive.Domain.Tests/BirdsiteLive.Domain.Tests.csproj b/src/Tests/BirdsiteLive.Domain.Tests/BirdsiteLive.Domain.Tests.csproj
index e00e2f6..fd8c60d 100644
--- a/src/Tests/BirdsiteLive.Domain.Tests/BirdsiteLive.Domain.Tests.csproj
+++ b/src/Tests/BirdsiteLive.Domain.Tests/BirdsiteLive.Domain.Tests.csproj
@@ -2,7 +2,7 @@
net6
-
+ 11
false
diff --git a/src/Tests/BirdsiteLive.Twitter.Tests/TimelineTests.cs b/src/Tests/BirdsiteLive.Twitter.Tests/TimelineTests.cs
index ddaac8a..ef26e2e 100644
--- a/src/Tests/BirdsiteLive.Twitter.Tests/TimelineTests.cs
+++ b/src/Tests/BirdsiteLive.Twitter.Tests/TimelineTests.cs
@@ -41,6 +41,11 @@ namespace BirdsiteLive.ActivityPub.Tests
ITwitterUserService user = new TwitterUserService(auth, stats.Object, logger2.Object);
ICachedTwitterUserService user2 = new CachedTwitterUserService(user, settings);
_tweetService = new TwitterTweetsService(auth, stats.Object, user2, twitterDal.Object, settings, logger3.Object);
+
+ await Task.Delay(1000);
+ await auth.MakeHttpClient();
+ await Task.Delay(1000);
+ await auth.MakeHttpClient();
}
[TestMethod]
@@ -48,7 +53,7 @@ namespace BirdsiteLive.ActivityPub.Tests
{
var tweets = await _tweetService.GetTimelineAsync("kobebryant", 1218020971346444288);
Assert.AreEqual(tweets[0].MessageContent, "Continuing to move the game forward @KingJames. Much respect my brother 💪🏾 #33644");
- Assert.AreEqual(tweets.Length, 8);
+ Assert.IsTrue(tweets.Length > 5);
}
[TestMethod]
diff --git a/src/Tests/BirdsiteLive.Twitter.Tests/TweetTests.cs b/src/Tests/BirdsiteLive.Twitter.Tests/TweetTests.cs
index 480ee41..ed245bc 100644
--- a/src/Tests/BirdsiteLive.Twitter.Tests/TweetTests.cs
+++ b/src/Tests/BirdsiteLive.Twitter.Tests/TweetTests.cs
@@ -1,4 +1,6 @@
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System;
+using System.IO;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Extensions.Logging;
using System.Threading.Tasks;
using BirdsiteLive.Twitter;
@@ -18,6 +20,7 @@ namespace BirdsiteLive.ActivityPub.Tests
[TestInitialize]
public async Task TestInit()
{
+
var logger1 = new Mock>(MockBehavior.Strict);
var logger2 = new Mock>(MockBehavior.Strict);
var logger3 = new Mock>();
@@ -33,6 +36,7 @@ namespace BirdsiteLive.ActivityPub.Tests
ITwitterUserService user = new TwitterUserService(auth, stats.Object, logger2.Object);
ICachedTwitterUserService user2 = new CachedTwitterUserService(user, settings);
_tweetService = new TwitterTweetsService(auth, stats.Object, user2, twitterDal.Object, settings, logger3.Object);
+
}
[TestMethod]