summaryrefslogtreecommitdiff
path: root/internal/federation/federatingdb/create.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2023-01-25 11:12:27 +0100
committerLibravatar GitHub <noreply@github.com>2023-01-25 11:12:27 +0100
commit993aae5e48a5a3b47a7c7bb3cb66e2d8abda17b2 (patch)
treea64ad3edaf2a29f457bd050b24609fe4f1abdf02 /internal/federation/federatingdb/create.go
parent[feature] Implement reports admin API so admins can view + close reports (#1378) (diff)
downloadgotosocial-993aae5e48a5a3b47a7c7bb3cb66e2d8abda17b2.tar.xz
[feature] Accept incoming federated Flag activity (#1382)
* start working on handling incoming Flag activity * interim commit * federate Flag in successfully
Diffstat (limited to 'internal/federation/federatingdb/create.go')
-rw-r--r--internal/federation/federatingdb/create.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/internal/federation/federatingdb/create.go b/internal/federation/federatingdb/create.go
index 05321bd6c..fbe3d3ad6 100644
--- a/internal/federation/federatingdb/create.go
+++ b/internal/federation/federatingdb/create.go
@@ -78,6 +78,9 @@ func (f *federatingDB) Create(ctx context.Context, asType vocab.Type) error {
case ap.ActivityLike:
// LIKE SOMETHING
return f.activityLike(ctx, asType, receivingAccount, requestingAccount)
+ case ap.ActivityFlag:
+ // FLAG / REPORT SOMETHING
+ return f.activityFlag(ctx, asType, receivingAccount, requestingAccount)
}
return nil
}
@@ -314,3 +317,38 @@ func (f *federatingDB) activityLike(ctx context.Context, asType vocab.Type, rece
return nil
}
+
+/*
+ FLAG HANDLERS
+*/
+
+func (f *federatingDB) activityFlag(ctx context.Context, asType vocab.Type, receivingAccount *gtsmodel.Account, requestingAccount *gtsmodel.Account) error {
+ flag, ok := asType.(vocab.ActivityStreamsFlag)
+ if !ok {
+ return errors.New("activityFlag: could not convert type to flag")
+ }
+
+ report, err := f.typeConverter.ASFlagToReport(ctx, flag)
+ if err != nil {
+ return fmt.Errorf("activityFlag: could not convert Flag to report: %w", err)
+ }
+
+ newID, err := id.NewULID()
+ if err != nil {
+ return err
+ }
+ report.ID = newID
+
+ if err := f.db.PutReport(ctx, report); err != nil {
+ return fmt.Errorf("activityFlag: database error inserting report: %w", err)
+ }
+
+ f.fedWorker.Queue(messages.FromFederator{
+ APObjectType: ap.ActivityFlag,
+ APActivityType: ap.ActivityCreate,
+ GTSModel: report,
+ ReceivingAccount: receivingAccount,
+ })
+
+ return nil
+}