Add the possibility to specify request schema
[MAILPOET-4207]
This commit is contained in:
@@ -5,6 +5,7 @@ namespace MailPoet\Automation\Engine\API;
|
|||||||
use MailPoet\Automation\Engine\Exceptions\Exception;
|
use MailPoet\Automation\Engine\Exceptions\Exception;
|
||||||
use MailPoet\Automation\Engine\Hooks;
|
use MailPoet\Automation\Engine\Hooks;
|
||||||
use MailPoet\Automation\Engine\WordPress;
|
use MailPoet\Automation\Engine\WordPress;
|
||||||
|
use MailPoet\Validator\Schema;
|
||||||
use Throwable;
|
use Throwable;
|
||||||
use WP_REST_Request;
|
use WP_REST_Request;
|
||||||
|
|
||||||
@@ -53,6 +54,10 @@ class API {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function registerRoute(string $route, string $endpointClass, string $method): void {
|
private function registerRoute(string $route, string $endpointClass, string $method): void {
|
||||||
|
$schema = array_map(function (Schema $field) {
|
||||||
|
return $field->toArray();
|
||||||
|
}, $endpointClass::getRequestSchema());
|
||||||
|
|
||||||
$this->wordPress->registerRestRoute(self::PREFIX, $route, [
|
$this->wordPress->registerRestRoute(self::PREFIX, $route, [
|
||||||
'methods' => $method,
|
'methods' => $method,
|
||||||
'callback' => function (WP_REST_Request $wpRequest) use ($endpointClass) {
|
'callback' => function (WP_REST_Request $wpRequest) use ($endpointClass) {
|
||||||
@@ -68,6 +73,7 @@ class API {
|
|||||||
$endpoint = $this->endpointFactory->createEndpoint($endpointClass);
|
$endpoint = $this->endpointFactory->createEndpoint($endpointClass);
|
||||||
return $endpoint->checkPermissions();
|
return $endpoint->checkPermissions();
|
||||||
},
|
},
|
||||||
|
'args' => $schema,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
namespace MailPoet\Automation\Engine\API;
|
namespace MailPoet\Automation\Engine\API;
|
||||||
|
|
||||||
|
use MailPoet\Validator\Schema;
|
||||||
|
|
||||||
use function current_user_can;
|
use function current_user_can;
|
||||||
|
|
||||||
abstract class Endpoint {
|
abstract class Endpoint {
|
||||||
@@ -10,4 +12,9 @@ abstract class Endpoint {
|
|||||||
public function checkPermissions(): bool {
|
public function checkPermissions(): bool {
|
||||||
return current_user_can('administrator');
|
return current_user_can('administrator');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return array<string, Schema> */
|
||||||
|
public static function getRequestSchema(): array {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user