mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-11-10 00:34:50 +00:00
Add AP Delivery Service
This commit is contained in:
parent
0b7c5d6d37
commit
764ab76e90
1 changed files with 61 additions and 0 deletions
61
app/Services/ActivityPubDeliveryService.php
Normal file
61
app/Services/ActivityPubDeliveryService.php
Normal file
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Profile;
|
||||
use App\Util\ActivityPub\Helpers;
|
||||
use App\Util\ActivityPub\HttpSignature;
|
||||
|
||||
class ActivityPubDeliveryService {
|
||||
|
||||
public $sender;
|
||||
public $to;
|
||||
public $payload;
|
||||
|
||||
public static function queue()
|
||||
{
|
||||
return new self;
|
||||
}
|
||||
|
||||
public function from($profile)
|
||||
{
|
||||
$this->sender = $profile;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function to(string $url)
|
||||
{
|
||||
$this->to = $url;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function payload($payload)
|
||||
{
|
||||
$this->payload = $payload;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function send()
|
||||
{
|
||||
return $this->queueDelivery();
|
||||
}
|
||||
|
||||
protected function queueDelivery()
|
||||
{
|
||||
abort_if(!$this->sender || !$this->to || !$this->payload, 400);
|
||||
abort_if(!Helpers::validateUrl($this->to), 400);
|
||||
abort_if($this->sender->domain != null || $this->sender->status != null, 400);
|
||||
|
||||
$body = $this->payload;
|
||||
$payload = json_encode($body);
|
||||
$headers = HttpSignature::sign($this->sender, $this->to, $body);
|
||||
|
||||
$ch = curl_init($this->to);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
|
||||
curl_setopt($ch, CURLOPT_HEADER, true);
|
||||
curl_exec($ch);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue