Browse Source

Update DirectMessageController, dispatch deliver and delete actions to the job queue

Daniel Supernault 1 year ago
parent
commit
7f462a8055

+ 4 - 3
app/Http/Controllers/DirectMessageController.php

@@ -23,6 +23,8 @@ use App\Services\AccountService;
 use App\Services\StatusService;
 use App\Services\StatusService;
 use App\Services\WebfingerService;
 use App\Services\WebfingerService;
 use App\Models\Conversation;
 use App\Models\Conversation;
+use App\Jobs\DirectPipeline\DirectDeletePipeline;
+use App\Jobs\DirectPipeline\DirectDeliverPipeline;
 
 
 class DirectMessageController extends Controller
 class DirectMessageController extends Controller
 {
 {
@@ -829,7 +831,7 @@ class DirectMessageController extends Controller
 			]
 			]
 		];
 		];
 
 
-		Helpers::sendSignedObject($profile, $url, $body);
+		DirectDeliverPipeline::dispatch($profile, $url, $body)->onQueue('high');
 	}
 	}
 
 
 	public function remoteDelete($dm)
 	public function remoteDelete($dm)
@@ -852,7 +854,6 @@ class DirectMessageController extends Controller
 				'type' => 'Tombstone'
 				'type' => 'Tombstone'
 			]
 			]
 		];
 		];
-
-		Helpers::sendSignedObject($profile, $url, $body);
+		DirectDeletePipeline::dispatch($profile, $url, $body)->onQueue('high');
 	}
 	}
 }
 }

+ 42 - 0
app/Jobs/DirectPipeline/DirectDeletePipeline.php

@@ -0,0 +1,42 @@
+<?php
+
+namespace App\Jobs\DirectPipeline;
+
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldBeUnique;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+use App\Util\ActivityPub\Helpers;
+
+class DirectDeletePipeline implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    public $timeout = 900;
+    public $tries = 3;
+    public $maxExceptions = 1;
+
+    protected $profile;
+    protected $url;
+    protected $payload;
+
+    /**
+     * Create a new job instance.
+     */
+    public function __construct($profile, $url, $payload)
+    {
+        $this->profile = $profile;
+        $this->url = $url;
+        $this->payload = $payload;
+    }
+
+    /**
+     * Execute the job.
+     */
+    public function handle(): void
+    {
+        Helpers::sendSignedObject($this->profile, $this->url, $this->payload);
+    }
+}

+ 42 - 0
app/Jobs/DirectPipeline/DirectDeliverPipeline.php

@@ -0,0 +1,42 @@
+<?php
+
+namespace App\Jobs\DirectPipeline;
+
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldBeUnique;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+use App\Util\ActivityPub\Helpers;
+
+class DirectDeliverPipeline implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    public $timeout = 900;
+    public $tries = 3;
+    public $maxExceptions = 1;
+
+    protected $profile;
+    protected $url;
+    protected $payload;
+
+    /**
+     * Create a new job instance.
+     */
+    public function __construct($profile, $url, $payload)
+    {
+        $this->profile = $profile;
+        $this->url = $url;
+        $this->payload = $payload;
+    }
+
+    /**
+     * Execute the job.
+     */
+    public function handle(): void
+    {
+        Helpers::sendSignedObject($this->profile, $this->url, $this->payload);
+    }
+}