Move the federation code under Federation/, namespaces only
Build / Build (push) Successful in 16s

Services/Federation and Controllers/ServerToServer become
Federation/{Actors,Signing,Inbox,Outbox,Rendering,Controllers}, the first step
of the roadmap's layout. No type, route or behaviour changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
This commit is contained in:
thepraandClaude Opus 5.5 committed 2026-10-01 10:39:41 +02:00
1 parent 31f6015591
commit 034b792801
14 files changed
+40 -20

No files matched your search

+8 -5
View File
@@ -73,13 +73,16 @@ PrivaPub/ ASP.NET Core Web API, net10.0
Middleware/SocialPubConfigurations.cs every DI registration (auth, federation, services, swagger, CORS)
Controllers/ClientToServer/ /clientapi/*: RootUser (signup/login/invitations/recovery), PrivateAvatar,
Group, Post (posts + DMs), Admin, Data
Controllers/ServerToServer/ PeasantsController (actor, outbox, followers, following, posts, inboxes),
Federation/
Controllers/ PeasantsController (actor, outbox, followers, following, posts, inboxes),
WellKnownController (webfinger, nodeinfo), UsersController (redirect)
Actors/ LocalActorService (LocalActor, Keys), RemoteActorService (signed fetch,
WebFinger, ForeignAvatar cache)
Signing/ HttpSignatures (draft-cavage sign/verify)
Inbox/ InboxService (Follow/Undo/Create/Delete/Update)
Outbox/ DeliveryService + DeliveryWorker
Rendering/ ActivityPubRenderer (JsonObject builders)
Services/ RootUsersService, GroupUsersService, PostsService, AppConfigurationService, …
Services/Federation/ LocalActorService (LocalActor, Keys), HttpSignatures (draft-cavage),
RemoteActorService (signed fetch, WebFinger, ForeignAvatar cache),
ActivityPubRenderer (JsonObject builders), DeliveryService + DeliveryWorker,
InboxService (Follow/Undo/Create/Delete/Update)
Models/ Mongo entities: User/, Group/, Post/, Federation/, AppConfiguration
StaticServices/ DbEntities (Find<T> accessors), AuthTokenManager (JWT), PasswordHasher
Data/InitDb.cs first-run seeding (languages)
@@ -11,7 +11,7 @@ using System.Security.Cryptography;
using GroupEntity = PrivaPub.Models.Group.Group;
namespace PrivaPub.Services.Federation
namespace PrivaPub.Federation.Actors
{
public class LocalActor
{
@@ -5,8 +5,9 @@ using PrivaPub.StaticServices;
using System.Net.Http.Headers;
using System.Text.Json;
using PrivaPub.Federation.Signing;
namespace PrivaPub.Services.Federation
namespace PrivaPub.Federation.Actors
{
public interface IRemoteActorService
{
@@ -3,14 +3,16 @@ using Microsoft.AspNetCore.Mvc;
using MongoDB.Entities;
using PrivaPub.Models.Federation;
using PrivaPub.Services.Federation;
using PrivaPub.StaticServices;
using System.Text.Json.Nodes;
using PostEntity = PrivaPub.Models.Post.Post;
using PrivaPub.Federation.Actors;
using PrivaPub.Federation.Rendering;
using PrivaPub.Federation.Inbox;
namespace PrivaPub.Controllers.ServerToServer
namespace PrivaPub.Federation.Controllers
{
[ApiController, Route("peasants")]
public class PeasantsController : ControllerBase
@@ -1,6 +1,6 @@
using Microsoft.AspNetCore.Mvc;
namespace PrivaPub.Controllers.ServerToServer
namespace PrivaPub.Federation.Controllers
{
[ApiController, Route("users")]
public class UsersController : ControllerBase
@@ -4,14 +4,14 @@ using MongoDB.Entities;
using PrivaPub.Models.Federation;
using PrivaPub.Models.User;
using PrivaPub.Services.Federation;
using PrivaPub.StaticServices;
using System.Text.Json.Nodes;
using PostEntity = PrivaPub.Models.Post.Post;
using PrivaPub.Federation.Actors;
namespace PrivaPub.Controllers.ServerToServer
namespace PrivaPub.Federation.Controllers
{
[ApiController]
public class WellKnownController : ControllerBase
@@ -11,8 +11,12 @@ using System.Text.Json.Nodes;
using DmPostEntity = PrivaPub.Models.Post.DmPost;
using GroupEntity = PrivaPub.Models.Group.Group;
using PostEntity = PrivaPub.Models.Post.Post;
using PrivaPub.Federation.Actors;
using PrivaPub.Federation.Signing;
using PrivaPub.Federation.Rendering;
using PrivaPub.Federation.Outbox;
namespace PrivaPub.Services.Federation
namespace PrivaPub.Federation.Inbox
{
public sealed record InboxResult(int StatusCode, string Error = default);
@@ -7,8 +7,10 @@ using System.Net;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json.Nodes;
using PrivaPub.Federation.Actors;
using PrivaPub.Federation.Signing;
namespace PrivaPub.Services.Federation
namespace PrivaPub.Federation.Outbox
{
public interface IDeliveryService
{
@@ -7,8 +7,9 @@ using System.Text.Json.Nodes;
using PostEntity = PrivaPub.Models.Post.Post;
using DmPostEntity = PrivaPub.Models.Post.DmPost;
using PrivaPub.Federation.Actors;
namespace PrivaPub.Services.Federation
namespace PrivaPub.Federation.Rendering
{
public static class ActivityPubRenderer
{
@@ -1,8 +1,9 @@
using System.Globalization;
using System.Security.Cryptography;
using System.Text;
using PrivaPub.Federation.Actors;
namespace PrivaPub.Services.Federation
namespace PrivaPub.Federation.Signing
{
public sealed record SignatureParameters(string KeyId, string Algorithm, string[] Headers, byte[] Signature,
string Created, string Expires);
@@ -11,7 +11,9 @@ using System.Text.Json.Serialization;
using Microsoft.OpenApi;
using PrivaPub.Services.ClientToServer.Private;
using PrivaPub.Services.ClientToServer.Public;
using PrivaPub.Services.Federation;
using PrivaPub.Federation.Actors;
using PrivaPub.Federation.Outbox;
using PrivaPub.Federation.Inbox;
namespace PrivaPub.Middleware
{
@@ -7,8 +7,8 @@ using PrivaPub.ClientModels.User;
using PrivaPub.ClientModels.User.Avatar;
using PrivaPub.Models.User;
using PrivaPub.Resources;
using PrivaPub.Services.Federation;
using PrivaPub.StaticServices;
using PrivaPub.Federation.Actors;
namespace PrivaPub.Services.ClientToServer.Private
{
+3 -1
View File
@@ -7,10 +7,12 @@ using PrivaPub.ClientModels.Group;
using PrivaPub.Models.Federation;
using PrivaPub.Models.Group;
using PrivaPub.Resources;
using PrivaPub.Services.Federation;
using PrivaPub.StaticServices;
using GroupEntity = PrivaPub.Models.Group.Group;
using PrivaPub.Federation.Actors;
using PrivaPub.Federation.Rendering;
using PrivaPub.Federation.Outbox;
namespace PrivaPub.Services
{
+3 -1
View File
@@ -7,13 +7,15 @@ using PrivaPub.ClientModels.Post;
using PrivaPub.Models.Federation;
using PrivaPub.Models.Group;
using PrivaPub.Resources;
using PrivaPub.Services.Federation;
using PrivaPub.StaticServices;
using System.Text.Json.Nodes;
using DmPostEntity = PrivaPub.Models.Post.DmPost;
using PostEntity = PrivaPub.Models.Post.Post;
using PrivaPub.Federation.Actors;
using PrivaPub.Federation.Rendering;
using PrivaPub.Federation.Outbox;
namespace PrivaPub.Services
{