diff --git a/src/BirdsiteLive.Domain/ActivityPubService.cs b/src/BirdsiteLive.Domain/ActivityPubService.cs index fa3bf70..37fe0b5 100644 --- a/src/BirdsiteLive.Domain/ActivityPubService.cs +++ b/src/BirdsiteLive.Domain/ActivityPubService.cs @@ -46,7 +46,10 @@ namespace BirdsiteLive.Domain httpClient.DefaultRequestHeaders.Add("Accept", "application/activity+json"); var result = await httpClient.GetAsync(objectId); var content = await result.Content.ReadAsStringAsync(); - return JsonConvert.DeserializeObject(content); + + var actor = JsonConvert.DeserializeObject(content); + if (string.IsNullOrWhiteSpace(actor.url)) actor.url = objectId; + return actor; } public async Task PostNewNoteActivity(Note note, string username, string noteId, string targetHost, string targetInbox) diff --git a/src/BirdsiteLive.Pipeline/Tools/MaxUsersNumberProvider.cs b/src/BirdsiteLive.Pipeline/Tools/MaxUsersNumberProvider.cs index c84b7b1..1c7e7c4 100644 --- a/src/BirdsiteLive.Pipeline/Tools/MaxUsersNumberProvider.cs +++ b/src/BirdsiteLive.Pipeline/Tools/MaxUsersNumberProvider.cs @@ -16,6 +16,7 @@ namespace BirdsiteLive.Pipeline.Tools private int _totalUsersCount = -1; private int _warmUpIterations; + private const int WarmUpMaxCapacity = 200; #region Ctor public MaxUsersNumberProvider(InstanceSettings instanceSettings, ITwitterUserDal twitterUserDal) @@ -31,8 +32,7 @@ namespace BirdsiteLive.Pipeline.Tools if (_totalUsersCount == -1) { _totalUsersCount = await _twitterUserDal.GetTwitterUsersCountAsync(); - var warmUpMaxCapacity = _instanceSettings.MaxUsersCapacity / 4; - _warmUpIterations = warmUpMaxCapacity == 0 ? 0 : (int)(_totalUsersCount / (float)warmUpMaxCapacity); + _warmUpIterations = (int)(_totalUsersCount / (float)WarmUpMaxCapacity); } // Return if warm up ended @@ -40,7 +40,7 @@ namespace BirdsiteLive.Pipeline.Tools // Calculate warm up value var maxUsers = _warmUpIterations > 0 - ? _instanceSettings.MaxUsersCapacity / 4 + ? WarmUpMaxCapacity : _instanceSettings.MaxUsersCapacity; _warmUpIterations--; return maxUsers; diff --git a/src/BirdsiteLive/BirdsiteLive.csproj b/src/BirdsiteLive/BirdsiteLive.csproj index 9daebca..dd17829 100644 --- a/src/BirdsiteLive/BirdsiteLive.csproj +++ b/src/BirdsiteLive/BirdsiteLive.csproj @@ -4,7 +4,7 @@ netcoreapp3.1 d21486de-a812-47eb-a419-05682bb68856 Linux - 0.16.1 + 0.16.2 diff --git a/src/BirdsiteLive/Controllers/InboxController.cs b/src/BirdsiteLive/Controllers/InboxController.cs index a0d8748..db055cf 100644 --- a/src/BirdsiteLive/Controllers/InboxController.cs +++ b/src/BirdsiteLive/Controllers/InboxController.cs @@ -5,12 +5,22 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; namespace BirdsiteLive.Controllers { [ApiController] public class InboxController : ControllerBase { + private readonly ILogger _logger; + + #region Ctor + public InboxController(ILogger logger) + { + _logger = logger; + } + #endregion + [Route("/inbox")] [HttpPost] public async Task Inbox() @@ -19,6 +29,8 @@ namespace BirdsiteLive.Controllers using (var reader = new StreamReader(Request.Body)) { var body = await reader.ReadToEndAsync(); + + _logger.LogTrace("Inbox: {Body}", body); //System.IO.File.WriteAllText($@"C:\apdebug\inbox\{Guid.NewGuid()}.json", body); } diff --git a/src/BirdsiteLive/Controllers/UsersController.cs b/src/BirdsiteLive/Controllers/UsersController.cs index a06b1e9..8240d7b 100644 --- a/src/BirdsiteLive/Controllers/UsersController.cs +++ b/src/BirdsiteLive/Controllers/UsersController.cs @@ -17,6 +17,7 @@ using BirdsiteLive.Twitter; using BirdsiteLive.Twitter.Models; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Primitives; using Newtonsoft.Json; @@ -29,15 +30,17 @@ namespace BirdsiteLive.Controllers private readonly IUserService _userService; private readonly IStatusService _statusService; private readonly InstanceSettings _instanceSettings; + private readonly ILogger _logger; #region Ctor - public UsersController(ITwitterUserService twitterUserService, IUserService userService, IStatusService statusService, InstanceSettings instanceSettings, ITwitterTweetsService twitterTweetService) + public UsersController(ITwitterUserService twitterUserService, IUserService userService, IStatusService statusService, InstanceSettings instanceSettings, ITwitterTweetsService twitterTweetService, ILogger logger) { _twitterUserService = twitterUserService; _userService = userService; _statusService = statusService; _instanceSettings = instanceSettings; _twitterTweetService = twitterTweetService; + _logger = logger; } #endregion @@ -57,6 +60,8 @@ namespace BirdsiteLive.Controllers [Route("/users/{id}")] public IActionResult Index(string id) { + _logger.LogTrace("User Index: {Id}", id); + id = id.Trim(new[] { ' ', '@' }).ToLowerInvariant(); // Ensure valid username @@ -131,6 +136,8 @@ namespace BirdsiteLive.Controllers using (var reader = new StreamReader(Request.Body)) { var body = await reader.ReadToEndAsync(); + + _logger.LogTrace("User Inbox: {Body}", body); //System.IO.File.WriteAllText($@"C:\apdebug\{Guid.NewGuid()}.json", body); var activity = ApDeserializer.ProcessActivity(body); diff --git a/src/BirdsiteLive/appsettings.json b/src/BirdsiteLive/appsettings.json index e25c7ca..8b12018 100644 --- a/src/BirdsiteLive/appsettings.json +++ b/src/BirdsiteLive/appsettings.json @@ -20,7 +20,7 @@ "AdminEmail": "me@domain.name", "ResolveMentionsInProfiles": true, "PublishReplies": false, - "MaxUsersCapacity": 800, + "MaxUsersCapacity": 1500, "UnlistedTwitterAccounts": null }, "Db": { diff --git a/src/Tests/BirdsiteLive.Pipeline.Tests/Tools/MaxUsersNumberProviderTests.cs b/src/Tests/BirdsiteLive.Pipeline.Tests/Tools/MaxUsersNumberProviderTests.cs index d48beb8..c2f52d0 100644 --- a/src/Tests/BirdsiteLive.Pipeline.Tests/Tools/MaxUsersNumberProviderTests.cs +++ b/src/Tests/BirdsiteLive.Pipeline.Tests/Tools/MaxUsersNumberProviderTests.cs @@ -30,17 +30,20 @@ namespace BirdsiteLive.Pipeline.Tests.Tools var provider = new MaxUsersNumberProvider(settings, twitterUserDalMock.Object); var result = await provider.GetMaxUsersNumberAsync(); - Assert.AreEqual(250, result); + Assert.AreEqual(200, result); result = await provider.GetMaxUsersNumberAsync(); - Assert.AreEqual(250, result); + Assert.AreEqual(200, result); result = await provider.GetMaxUsersNumberAsync(); - Assert.AreEqual(250, result); + Assert.AreEqual(200, result); result = await provider.GetMaxUsersNumberAsync(); - Assert.AreEqual(250, result); - + Assert.AreEqual(200, result); + + result = await provider.GetMaxUsersNumberAsync(); + Assert.AreEqual(200, result); + result = await provider.GetMaxUsersNumberAsync(); Assert.AreEqual(1000, result); @@ -63,7 +66,7 @@ namespace BirdsiteLive.Pipeline.Tests.Tools var twitterUserDalMock = new Mock(MockBehavior.Strict); twitterUserDalMock .Setup(x => x.GetTwitterUsersCountAsync()) - .ReturnsAsync(249); + .ReturnsAsync(199); #endregion var provider = new MaxUsersNumberProvider(settings, twitterUserDalMock.Object);