Explorar el Código

Update ActivityPub Inbox

Daniel Supernault hace 6 años
padre
commit
2078bb10c9
Se han modificado 1 ficheros con 46 adiciones y 6 borrados
  1. 46 6
      app/Util/ActivityPub/Inbox.php

+ 46 - 6
app/Util/ActivityPub/Inbox.php

@@ -248,7 +248,28 @@ class Inbox
 
     public function handleAcceptActivity()
     {
-
+        $actor = $this->payload['actor'];
+        $obj = $this->payload['object'];
+        switch ($obj['type']) {
+            case 'Follow':
+                $accept = [
+                    '@context' => 'https://www.w3.org/ns/activitystreams',
+                    'id'       => $target->permalink().'#accepts/follows/' . $follower->id,
+                    'type'     => 'Accept',
+                    'actor'    => $target->permalink(),
+                    'object'   => [
+                        'id' => $actor->permalink('#follows/'.$target->id),
+                        'type'  => 'Follow',
+                        'actor' => $actor->permalink(),
+                        'object' => $target->permalink()
+                    ]
+                ];
+                break;
+            
+            default:
+                # code...
+                break;
+        }
     }
 
     public function handleDeleteActivity()
@@ -298,11 +319,7 @@ class Inbox
         $obj = $this->payload['object'];
 
         switch ($obj['type']) {
-            case 'Like':
-                $status = Helpers::statusFirstOrFetch($obj['object']);
-                Like::whereProfileId($profile->id)
-                    ->whereStatusId($status->id)
-                    ->forceDelete();
+            case 'Accept':
                 break;
                 
             case 'Announce':
@@ -318,6 +335,29 @@ class Inbox
                     ->forceDelete();
                 $status->forceDelete();
                 break;
+
+            case 'Block':
+                break;
+
+            case 'Follow':
+                $following = self::actorFirstOrCreate($obj['object']);
+                Follower::whereProfileId($profile->id)
+                    ->whereFollowingId($following->id)
+                    ->delete();
+                break;
+                
+            case 'Like':
+                $status = Helpers::statusFirstOrFetch($obj['object']);
+                Like::whereProfileId($profile->id)
+                    ->whereStatusId($status->id)
+                    ->forceDelete();
+                Notification::whereProfileId($status->profile->id)
+                    ->whereActorId($profile->id)
+                    ->whereAction('like')
+                    ->whereItemId($status->id)
+                    ->whereItemType('App\Status')
+                    ->forceDelete();
+                break;
         }
 
     }