summaryrefslogtreecommitdiff
path: root/internal/federation/federatingdb/create.go
diff options
context:
space:
mode:
authorLibravatar Tobi Smethurst <31960611+tsmethurst@users.noreply.github.com>2021-07-11 16:22:21 +0200
committerLibravatar GitHub <noreply@github.com>2021-07-11 16:22:21 +0200
commit846057f0d696fded87d105dec1245e9ba32763ce (patch)
tree9a4914c07bcf189a3eea0a2c091567c56cdf4963 /internal/federation/federatingdb/create.go
parentfavourites GET implementation (#95) (diff)
downloadgotosocial-846057f0d696fded87d105dec1245e9ba32763ce.tar.xz
Block/unblock (#96)
* remote + local block logic, incl. federation * improve blocking stuff * fiddle with display of blocked profiles * go fmt
Diffstat (limited to 'internal/federation/federatingdb/create.go')
-rw-r--r--internal/federation/federatingdb/create.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/internal/federation/federatingdb/create.go b/internal/federation/federatingdb/create.go
index 02a5dfd72..3562e7f4c 100644
--- a/internal/federation/federatingdb/create.go
+++ b/internal/federation/federatingdb/create.go
@@ -129,6 +129,7 @@ func (f *federatingDB) Create(ctx context.Context, asType vocab.Type) error {
}
}
case gtsmodel.ActivityStreamsFollow:
+ // FOLLOW SOMETHING
follow, ok := asType.(vocab.ActivityStreamsFollow)
if !ok {
return errors.New("could not convert type to follow")
@@ -156,6 +157,7 @@ func (f *federatingDB) Create(ctx context.Context, asType vocab.Type) error {
ReceivingAccount: targetAcct,
}
case gtsmodel.ActivityStreamsLike:
+ // LIKE SOMETHING
like, ok := asType.(vocab.ActivityStreamsLike)
if !ok {
return errors.New("could not convert type to like")
@@ -182,6 +184,34 @@ func (f *federatingDB) Create(ctx context.Context, asType vocab.Type) error {
GTSModel: fave,
ReceivingAccount: targetAcct,
}
+ case gtsmodel.ActivityStreamsBlock:
+ // BLOCK SOMETHING
+ blockable, ok := asType.(vocab.ActivityStreamsBlock)
+ if !ok {
+ return errors.New("could not convert type to block")
+ }
+
+ block, err := f.typeConverter.ASBlockToBlock(blockable)
+ if err != nil {
+ return fmt.Errorf("could not convert Block to gts model block")
+ }
+
+ newID, err := id.NewULID()
+ if err != nil {
+ return err
+ }
+ block.ID = newID
+
+ if err := f.db.Put(block); err != nil {
+ return fmt.Errorf("database error inserting block: %s", err)
+ }
+
+ fromFederatorChan <- gtsmodel.FromFederator{
+ APObjectType: gtsmodel.ActivityStreamsBlock,
+ APActivityType: gtsmodel.ActivityStreamsCreate,
+ GTSModel: block,
+ ReceivingAccount: targetAcct,
+ }
}
return nil
}