🐛 Fix web finger parsing

This commit is contained in:
2025-12-28 23:45:09 +08:00
parent 2e8a1d05a1
commit ceadb5ad9b
4 changed files with 71 additions and 70 deletions

View File

@@ -12,7 +12,7 @@ namespace DysonNetwork.Sphere.ActivityPub;
public class ActivityPubFollowController(
AppDatabase db,
ActivityPubDeliveryService deliveryService,
ActivityPubDiscoveryService discoveryService,
ActivityPubDiscoveryService discSrv,
IConfiguration configuration,
ILogger<ActivityPubFollowController> logger
) : ControllerBase
@@ -34,7 +34,7 @@ public class ActivityPubFollowController(
if (publisher == null)
return BadRequest(new { error = "User doesn't have a publisher" });
logger.LogInformation("User {UserId} wants to follow {TargetActor}",
logger.LogInformation("User {UserId} wants to follow {TargetActor}",
currentUser, request.TargetActorUri);
var success = await deliveryService.SendFollowActivityAsync(
@@ -107,8 +107,8 @@ public class ActivityPubFollowController(
var actors = await db.FediverseRelationships
.Include(r => r.TargetActor)
.Where(r =>
r.IsLocalActor &&
.Where(r =>
r.IsLocalActor &&
r.LocalPublisherId == publisher.Id &&
r.IsFollowing &&
r.State == RelationshipState.Accepted)
@@ -139,8 +139,8 @@ public class ActivityPubFollowController(
var actors = await db.FediverseRelationships
.Include(r => r.Actor)
.Where(r =>
!r.IsLocalActor &&
.Where(r =>
!r.IsLocalActor &&
r.LocalPublisherId == publisher.Id &&
r.IsFollowedBy &&
r.State == RelationshipState.Accepted)
@@ -161,7 +161,7 @@ public class ActivityPubFollowController(
if (string.IsNullOrWhiteSpace(query))
return BadRequest(new { error = "Query is required" });
var actors = await discoveryService.SearchActorsAsync(query, limit, includeRemoteDiscovery: true);
var actors = await discSrv.SearchActorsAsync(query, limit, includeRemoteDiscovery: true);
return Ok(actors);
}
@@ -184,22 +184,22 @@ public class ActivityPubFollowController(
var actorUrl = $"https://{Domain}/activitypub/actors/{publisher.Name}";
var followingCount = await db.FediverseRelationships
.CountAsync(r =>
r.IsLocalActor &&
.CountAsync(r =>
r.IsLocalActor &&
r.LocalPublisherId == publisher.Id &&
r.IsFollowing &&
r.State == RelationshipState.Accepted);
var followersCount = await db.FediverseRelationships
.CountAsync(r =>
!r.IsLocalActor &&
.CountAsync(r =>
!r.IsLocalActor &&
r.LocalPublisherId == publisher.Id &&
r.IsFollowedBy &&
r.State == RelationshipState.Accepted);
var pendingCount = await db.FediverseRelationships
.CountAsync(r =>
r.IsLocalActor &&
.CountAsync(r =>
r.IsLocalActor &&
r.LocalPublisherId == publisher.Id &&
r.State == RelationshipState.Pending);
@@ -408,4 +408,4 @@ public class ActorCheckResult
public bool IsDiscoverable { get; set; }
public Instant? LastActivityAt { get; set; }
public string? Error { get; set; }
}
}