[EVENTS] Rename event RouteInFormat to ControllerResponseInFormat

This commit is contained in:
Hugo Sales 2021-09-01 23:50:45 +01:00
parent f371443884
commit be27a10244
Signed by: someonewithpc
GPG Key ID: 7D0C7EAFC9D835A0
3 changed files with 116 additions and 105 deletions

View File

@ -24,7 +24,7 @@ class ActivityStreamsTwo extends Plugin
/** /**
* @param string $route * @param string $route
* @param array $accept * @param array $accept_header
* @param array $vars * @param array $vars
* @param null|TypeResponse $response * @param null|TypeResponse $response
* *
@ -32,9 +32,9 @@ class ActivityStreamsTwo extends Plugin
* *
* @return bool * @return bool
*/ */
public function onRouteInFormat(string $route, array $accept, array $vars, ?TypeResponse &$response = null): bool public function onControllerResponseInFormat(string $route, array $accept_header, array $vars, ?TypeResponse &$response = null): bool
{ {
if (empty(array_intersect($this->accept, $accept))) { if (empty(array_intersect($this->accept, $accept_header))) {
return Event::next; return Event::next;
} }
switch ($route) { switch ($route) {
@ -53,15 +53,14 @@ class ActivityStreamsTwo extends Plugin
* @param $r RouteLoader the router that was initialized. * @param $r RouteLoader the router that was initialized.
* *
* @return bool * @return bool
* */
* public function onAddRoute(RouteLoader $r): bool public function onAddRoute(RouteLoader $r): bool
* { {
* $r->connect( $r->connect('note_view_as2',
* 'note_view', '/note/{id<\d+>}',
* '/note/{id<\d+>}', [NoteResponse::class, 'handle'],
* [NoteResponse::class, 'handle'], options: ['accept' => $this->accept]
* options: ['accept' => $this->accept] );
* ); return Event::next;
* return Event::next; }
* }*/ }
}

View File

@ -147,31 +147,33 @@ abstract class ValidatorTools implements ValidatorInterface
*/ */
protected function getLinkOrNamedObjectValidator(): callable protected function getLinkOrNamedObjectValidator(): callable
{ {
return static function ($item): bool { return
if (is_string($item)) { /** The implementation lambda */
return Util::validateUrl($item); static function ($item): bool {
} if (is_string($item)) {
return Util::validateUrl($item);
if (is_array($item)) {
$item = Util::arrayToType($item);
}
if (is_object($item)) {
Util::hasProperties($item, ['type'], true);
// Validate Link type
if ($item->type === 'Link') {
return Util::validateLink($item);
} }
// Validate Object type if (is_array($item)) {
Util::hasProperties($item, ['name'], true); $item = Util::arrayToType($item);
}
return is_string($item->name); if (is_object($item)) {
} Util::hasProperties($item, ['type'], true);
return false; // Validate Link type
}; if ($item->type === 'Link') {
return Util::validateLink($item);
}
// Validate Object type
Util::hasProperties($item, ['name'], true);
return is_string($item->name);
}
return false;
};
} }
/** /**
@ -181,22 +183,24 @@ abstract class ValidatorTools implements ValidatorInterface
*/ */
protected function getLinkOrUrlObjectValidator(): callable protected function getLinkOrUrlObjectValidator(): callable
{ {
return static function ($item): bool { return
if (is_array($item)) { /** The implementation lambda */
$item = Util::arrayToType($item); static function ($item): bool {
} if (is_array($item)) {
$item = Util::arrayToType($item);
}
if (is_object($item) if (is_object($item)
&& Util::isLinkOrUrlObject($item)) { && Util::isLinkOrUrlObject($item)) {
return true; return true;
} }
if (Util::validateUrl($item)) { if (Util::validateUrl($item)) {
return true; return true;
} }
return false; return false;
}; };
} }
/** /**
@ -207,25 +211,27 @@ abstract class ValidatorTools implements ValidatorInterface
*/ */
protected function getAttachmentValidator(): callable protected function getAttachmentValidator(): callable
{ {
return static function ($item): bool { return
if (is_array($item)) { /** The implementation lambda */
$item = Util::arrayToType($item); static function ($item): bool {
} if (is_array($item)) {
$item = Util::arrayToType($item);
}
if (is_object($item)) { if (is_object($item)) {
if (Util::isLinkOrUrlObject($item)) { if (Util::isLinkOrUrlObject($item)) {
return true;
}
return $item instanceof ObjectType;
}
if (Util::validateUrl($item)) {
return true; return true;
} }
return $item instanceof ObjectType; return false;
} };
if (Util::validateUrl($item)) {
return true;
}
return false;
};
} }
/** /**
@ -233,20 +239,22 @@ abstract class ValidatorTools implements ValidatorInterface
*/ */
protected function getQuestionAnswerValidator(): callable protected function getQuestionAnswerValidator(): callable
{ {
return static function ($item): bool { return
if (is_array($item)) { /** The implementation lambda */
$item = Util::arrayToType($item); static function ($item): bool {
} if (is_array($item)) {
$item = Util::arrayToType($item);
}
if (!is_object($item)) { if (!is_object($item)) {
return false; return false;
} }
Util::hasProperties($item, ['type', 'name'], true); Util::hasProperties($item, ['type', 'name'], true);
return $item->type === 'Note' return $item->type === 'Note'
&& is_scalar($item->name); && is_scalar($item->name);
}; };
} }
/** /**
@ -254,21 +262,23 @@ abstract class ValidatorTools implements ValidatorInterface
*/ */
protected function getCollectionItemsValidator(): callable protected function getCollectionItemsValidator(): callable
{ {
return static function ($item): bool { return
if (is_string($item)) { /** The implementation lambda */
return Util::validateUrl($item); static function ($item): bool {
} if (is_string($item)) {
return Util::validateUrl($item);
}
if (is_array($item)) { if (is_array($item)) {
$item = Util::arrayToType($item); $item = Util::arrayToType($item);
} }
if (!is_object($item)) { if (!is_object($item)) {
return false; return false;
} }
return Util::hasProperties($item, ['type'], true); return Util::hasProperties($item, ['type'], true);
}; };
} }
/** /**
@ -276,24 +286,26 @@ abstract class ValidatorTools implements ValidatorInterface
*/ */
protected function getCollectionActorsValidator(): callable protected function getCollectionActorsValidator(): callable
{ {
return static function ($item): bool { return
if (is_string($item)) { /** The implementation lambda */
return Util::validateUrl($item); static function ($item): bool {
} if (is_string($item)) {
return Util::validateUrl($item);
}
if (is_array($item)) { if (is_array($item)) {
$item = Util::arrayToType($item); $item = Util::arrayToType($item);
} }
if (!is_object($item)) { if (!is_object($item)) {
return false; return false;
} }
// id must be filled // id must be filled
if ($item instanceof AbstractActor) { if ($item instanceof AbstractActor) {
return !is_null($item->id); return !is_null($item->id);
} }
return Util::validateLink($item); return Util::validateLink($item);
}; };
} }
} }

View File

@ -47,7 +47,7 @@ use Symfony\Component\HttpKernel\KernelEvents;
class Controller extends AbstractController implements EventSubscriberInterface class Controller extends AbstractController implements EventSubscriberInterface
{ {
private array $vars = []; private array $vars = [];
protected ?Request $request = null; protected ?Request $request = null;
public function __construct(RequestStack $requestStack) public function __construct(RequestStack $requestStack)
@ -117,9 +117,9 @@ class Controller extends AbstractController implements EventSubscriberInterface
break; break;
default: default:
$potential_response = null; $potential_response = null;
if (Event::handle('RouteInFormat', [ if (Event::handle('ControllerResponseInFormat', [
'route' => $this->vars['controller'][1], 'route' => $request->get('_route'),
'accept' => $accept, 'accept_header' => $accept,
'vars' => $this->vars, 'vars' => $this->vars,
'response' => &$potential_response, 'response' => &$potential_response,
])) { ])) {