summaryrefslogtreecommitdiff
path: root/internal/transport/dereference.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2024-07-26 12:04:28 +0200
committerLibravatar GitHub <noreply@github.com>2024-07-26 12:04:28 +0200
commit8ab2b19a946251f258446d22f420d401f61d22f6 (patch)
tree39fb674f135fd1cfcf4de5b319913f0d0c17d11a /internal/transport/dereference.go
parent[docs] Add separate migration section + instructions for moving to GtS and no... (diff)
downloadgotosocial-8ab2b19a946251f258446d22f420d401f61d22f6.tar.xz
[feature] Federate interaction policies + Accepts; enforce policies (#3138)
* [feature] Federate interaction policies + Accepts; enforce policies * use Acceptable type * fix index * remove appendIRIStrs * add GetAccept federatingdb function * lock on object IRI
Diffstat (limited to 'internal/transport/dereference.go')
-rw-r--r--internal/transport/dereference.go23
1 files changed, 16 insertions, 7 deletions
diff --git a/internal/transport/dereference.go b/internal/transport/dereference.go
index 952791f70..8cc1f2103 100644
--- a/internal/transport/dereference.go
+++ b/internal/transport/dereference.go
@@ -29,17 +29,26 @@ import (
)
func (t *transport) Dereference(ctx context.Context, iri *url.URL) (*http.Response, error) {
- // if the request is to us, we can shortcut for certain URIs rather than going through
- // the normal request flow, thereby saving time and energy
+ // If the request is to us, we can shortcut for
+ // certain URIs rather than going through the normal
+ // request flow, thereby saving time and energy.
if iri.Host == config.GetHost() {
- if uris.IsFollowersPath(iri) {
- // the request is for followers of one of our accounts, which we can shortcut
+ switch {
+
+ case uris.IsFollowersPath(iri):
+ // The request is for followers of one of
+ // our accounts, which we can shortcut.
return t.controller.dereferenceLocalFollowers(ctx, iri)
- }
- if uris.IsUserPath(iri) {
- // the request is for one of our accounts, which we can shortcut
+ case uris.IsUserPath(iri):
+ // The request is for one of our
+ // accounts, which we can shortcut.
return t.controller.dereferenceLocalUser(ctx, iri)
+
+ case uris.IsAcceptsPath(iri):
+ // The request is for an Accept on
+ // our instance, which we can shortcut.
+ return t.controller.dereferenceLocalAccept(ctx, iri)
}
}