Return a Response from the activity event pipeline

This commit is contained in:
Jeremy Dormitzer 2019-01-28 09:25:09 -05:00
parent d5d882c9be
commit a36e44df58
2 changed files with 23 additions and 3 deletions

View File

@ -4,6 +4,7 @@ namespace ActivityPub\Activities;
use ActivityPub\Entities\ActivityPubObject; use ActivityPub\Entities\ActivityPubObject;
use Symfony\Component\EventDispatcher\Event; use Symfony\Component\EventDispatcher\Event;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class ActivityEvent extends Event class ActivityEvent extends Event
{ {
@ -28,6 +29,13 @@ class ActivityEvent extends Event
*/ */
protected $request; protected $request;
/**
* The response
*
* @var Response
*/
protected $response;
public function __construct( array $activity, ActivityPubObject $actor, public function __construct( array $activity, ActivityPubObject $actor,
Request $request ) Request $request )
{ {
@ -64,5 +72,18 @@ class ActivityEvent extends Event
{ {
return $this->request; return $this->request;
} }
/**
* @return Response The response
*/
public function getResponse()
{
return $this->response;
}
public function setResponse( Response $response )
{
$this->response = $response;
}
} }
?> ?>

View File

@ -68,7 +68,7 @@ class PostController
$actorWithInbox = $inboxField->getObject(); $actorWithInbox = $inboxField->getObject();
$event = new InboxActivityEvent( $activity, $actorWithInbox, $request ); $event = new InboxActivityEvent( $activity, $actorWithInbox, $request );
$this->eventDispatcher->dispatch( InboxActivityEvent::NAME, $event ); $this->eventDispatcher->dispatch( InboxActivityEvent::NAME, $event );
return; return $event->getResponse();
} }
$outboxField = $object->getReferencingField( 'outbox' ); $outboxField = $object->getReferencingField( 'outbox' );
if ( $outboxField ) { if ( $outboxField ) {
@ -84,14 +84,13 @@ class PostController
} }
$event = new OutboxActivityEvent( $activity, $actorWithOutbox, $request ); $event = new OutboxActivityEvent( $activity, $actorWithOutbox, $request );
$this->eventDispatcher->dispatch( OutboxActivityEvent::NAME, $event ); $this->eventDispatcher->dispatch( OutboxActivityEvent::NAME, $event );
return; return $event->getResponse();
} }
throw new MethodNotAllowedHttpException( array( Request::METHOD_GET ) ); throw new MethodNotAllowedHttpException( array( Request::METHOD_GET ) );
} }
private function getActivityActor( array $activity ) private function getActivityActor( array $activity )
{ {
xdebug_break();
$actor = $activity['actor']; $actor = $activity['actor'];
if ( is_array( $actor ) && array_key_exists( 'id', $actor ) ) { if ( is_array( $actor ) && array_key_exists( 'id', $actor ) ) {
return $this->objectsService->dereference( $actor['id'] ); return $this->objectsService->dereference( $actor['id'] );