commit
75b9dd1030
6 changed files with 51 additions and 6 deletions
|
@ -16,11 +16,11 @@ You can find an official (and temporary) instance here: [beta.birdsite.live](htt
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
Please follow [those instructions](https://github.com/NicolasConstant/BirdsiteLive/blob/master/INSTALLATION.md)
|
I'm providing a [Docker build](https://hub.docker.com/r/nicolasconstant/birdsitelive), to install it on your own server, please follow [those instructions](https://github.com/NicolasConstant/BirdsiteLive/blob/master/INSTALLATION.md).
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
This project is licensed under the AGPLv3 License - see [LICENSE](https://github.com/NicolasConstant/BirdsiteLive/blob/master/LICENSE) for details
|
This project is licensed under the AGPLv3 License - see [LICENSE](https://github.com/NicolasConstant/BirdsiteLive/blob/master/LICENSE) for details.
|
||||||
|
|
||||||
## Contact
|
## Contact
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -10,6 +10,7 @@ using BirdsiteLive.ActivityPub.Converters;
|
||||||
using BirdsiteLive.Common.Settings;
|
using BirdsiteLive.Common.Settings;
|
||||||
using BirdsiteLive.Cryptography;
|
using BirdsiteLive.Cryptography;
|
||||||
using BirdsiteLive.Domain.BusinessUseCases;
|
using BirdsiteLive.Domain.BusinessUseCases;
|
||||||
|
using BirdsiteLive.Domain.Tools;
|
||||||
using BirdsiteLive.Twitter.Models;
|
using BirdsiteLive.Twitter.Models;
|
||||||
using Tweetinvi.Core.Exceptions;
|
using Tweetinvi.Core.Exceptions;
|
||||||
using Tweetinvi.Models;
|
using Tweetinvi.Models;
|
||||||
|
@ -31,15 +32,17 @@ namespace BirdsiteLive.Domain
|
||||||
private readonly InstanceSettings _instanceSettings;
|
private readonly InstanceSettings _instanceSettings;
|
||||||
private readonly ICryptoService _cryptoService;
|
private readonly ICryptoService _cryptoService;
|
||||||
private readonly IActivityPubService _activityPubService;
|
private readonly IActivityPubService _activityPubService;
|
||||||
|
private readonly IStatusExtractor _statusExtractor;
|
||||||
|
|
||||||
#region Ctor
|
#region Ctor
|
||||||
public UserService(InstanceSettings instanceSettings, ICryptoService cryptoService, IActivityPubService activityPubService, IProcessFollowUser processFollowUser, IProcessUndoFollowUser processUndoFollowUser)
|
public UserService(InstanceSettings instanceSettings, ICryptoService cryptoService, IActivityPubService activityPubService, IProcessFollowUser processFollowUser, IProcessUndoFollowUser processUndoFollowUser, IStatusExtractor statusExtractor)
|
||||||
{
|
{
|
||||||
_instanceSettings = instanceSettings;
|
_instanceSettings = instanceSettings;
|
||||||
_cryptoService = cryptoService;
|
_cryptoService = cryptoService;
|
||||||
_activityPubService = activityPubService;
|
_activityPubService = activityPubService;
|
||||||
_processFollowUser = processFollowUser;
|
_processFollowUser = processFollowUser;
|
||||||
_processUndoFollowUser = processUndoFollowUser;
|
_processUndoFollowUser = processUndoFollowUser;
|
||||||
|
_statusExtractor = statusExtractor;
|
||||||
//_host = $"https://{instanceSettings.Domain.Replace("https://",string.Empty).Replace("http://", string.Empty).TrimEnd('/')}";
|
//_host = $"https://{instanceSettings.Domain.Replace("https://",string.Empty).Replace("http://", string.Empty).TrimEnd('/')}";
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -49,6 +52,14 @@ namespace BirdsiteLive.Domain
|
||||||
var actorUrl = UrlFactory.GetActorUrl(_instanceSettings.Domain, twitterUser.Acct);
|
var actorUrl = UrlFactory.GetActorUrl(_instanceSettings.Domain, twitterUser.Acct);
|
||||||
var acct = twitterUser.Acct.ToLowerInvariant();
|
var acct = twitterUser.Acct.ToLowerInvariant();
|
||||||
|
|
||||||
|
// Extract links, mentions, etc
|
||||||
|
var description = twitterUser.Description;
|
||||||
|
if (!string.IsNullOrWhiteSpace(description))
|
||||||
|
{
|
||||||
|
var extracted = _statusExtractor.ExtractTags(description);
|
||||||
|
description = extracted.content;
|
||||||
|
}
|
||||||
|
|
||||||
var user = new Actor
|
var user = new Actor
|
||||||
{
|
{
|
||||||
id = actorUrl,
|
id = actorUrl,
|
||||||
|
@ -57,7 +68,7 @@ namespace BirdsiteLive.Domain
|
||||||
preferredUsername = acct,
|
preferredUsername = acct,
|
||||||
name = twitterUser.Name,
|
name = twitterUser.Name,
|
||||||
inbox = $"{actorUrl}/inbox",
|
inbox = $"{actorUrl}/inbox",
|
||||||
summary = twitterUser.Description,
|
summary = description,
|
||||||
url = actorUrl,
|
url = actorUrl,
|
||||||
publicKey = new PublicKey()
|
publicKey = new PublicKey()
|
||||||
{
|
{
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||||
<UserSecretsId>d21486de-a812-47eb-a419-05682bb68856</UserSecretsId>
|
<UserSecretsId>d21486de-a812-47eb-a419-05682bb68856</UserSecretsId>
|
||||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||||
<Version>0.4.0</Version>
|
<Version>0.5.0</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -109,7 +109,7 @@ namespace BirdsiteLive.Controllers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return View("Tweet", statusId);
|
return Redirect($"https://twitter.com/{id}/status/{statusId}");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Route("/users/{id}/inbox")]
|
[Route("/users/{id}/inbox")]
|
||||||
|
|
|
@ -314,5 +314,26 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
Assert.IsTrue(result.content.Contains(@"<a href=""https://domain.name/tags/dada"" class=""mention hashtag"" rel=""tag"">#<span>dada</span></a>"));
|
Assert.IsTrue(result.content.Contains(@"<a href=""https://domain.name/tags/dada"" class=""mention hashtag"" rel=""tag"">#<span>dada</span></a>"));
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void Extract_Emoji_Test()
|
||||||
|
{
|
||||||
|
#region Stubs
|
||||||
|
var message = $"😤@mynickname 😎😍🤗🤩😘";
|
||||||
|
//var message = $"tests@mynickname";
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
var service = new StatusExtractor(_settings);
|
||||||
|
var result = service.ExtractTags(message);
|
||||||
|
|
||||||
|
#region Validations
|
||||||
|
Assert.AreEqual(1, result.tags.Length);
|
||||||
|
Assert.IsTrue(result.content.Contains(
|
||||||
|
@"😤 <span class=""h-card""><a href=""https://domain.name/@mynickname"" class=""u-url mention"">@<span>mynickname</span></a></span>"));
|
||||||
|
|
||||||
|
Assert.IsTrue(result.content.Contains(@"😎 😍 🤗 🤩 😘"));
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue