From df2fd904b3401b57b54bfc0cc0a8e4f40e19a496 Mon Sep 17 00:00:00 2001 From: Michael Jerger Date: Fri, 26 Apr 2024 16:37:16 +0200 Subject: [PATCH] drop some words on normalized uri as id --- .../federation-architecture.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/unsure-where-to-put/federation-architecture.md b/docs/unsure-where-to-put/federation-architecture.md index 0d5f2388fa..8bacf88a6c 100644 --- a/docs/unsure-where-to-put/federation-architecture.md +++ b/docs/unsure-where-to-put/federation-architecture.md @@ -9,6 +9,8 @@ While implementing federation in forgejo we introduced some conncepts from Domai Objects in forgefed package reflect Objects from ap or f3 lib but add some Forgejo specific enhancements like more specific validation. +## Federation Model + ```mermaid classDiagram @@ -126,3 +128,20 @@ classDiagram Repository "1" *-- "n" FollowingRepository: FollowingRepository.RepositoryID FollowingRepository -- FederationHost ``` + +## Normalized URI used as ID + +In order to use URIs as ID we've to normalize URIs. + +A normalized user URI looks like: `https://federated-repo.prod.meissa.de/api/v1/activitypub/user-id/1` + +In order to normalize URIs we care: + +1. Case (all to lower case): `https://federated-REPO.prod.meissa.de/api/v1/activitypub/user-id/1` +2. No relative path: `https://federated-repo.prod.meissa.de/api/v1/activitypub/user-id/../user-id/1` +3. No parameters: `https://federated-repo.prod.meissa.de/api/v1/activitypub/user-id/1?some-parameters=1` +4. No Webfinger: `https://user1@federated-repo.prod.meissa.de` (with following redirects) +5. No default api: `https://federated-repo.prod.meissa.de/api/activitypub/user-id/1` +6. No autorization: `https://user:password@federated-repo.prod.meissa.de/api/v1/activitypub/user-id/1` +7. No default ports: `https://federated-repo.prod.meissa.de:443/api/v1/activitypub/user-id/1` +8. Accept non default ports: `http://localhost:3000/api/v1/activitypub/user-id/1`