Add basic request, response, and endpoint definitions for API

[MAILPOET-4135]
This commit is contained in:
Jan Jakes
2022-02-10 09:43:26 +01:00
committed by Veljko V
parent da951e77af
commit 18d722cd51
3 changed files with 84 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
<?php declare(strict_types = 1);
namespace MailPoet\Automation\API;
abstract class Endpoint {
public function get(Request $request): Response {
return $this->methodNotAllowed();
}
public function post(Request $request): Response {
return $this->methodNotAllowed();
}
public function put(Request $request): Response {
return $this->methodNotAllowed();
}
public function delete(Request $request): Response {
return $this->methodNotAllowed();
}
private function methodNotAllowed(): ErrorResponse {
return new ErrorResponse(405, 'Method not allowed', 'mailpoet_automation_method_not_allowed');
}
}

View File

@@ -0,0 +1,45 @@
<?php declare(strict_types = 1);
namespace MailPoet\Automation\API;
use MailPoet\Automation\Exceptions;
use WP_REST_Request;
class Request {
/** @var WP_REST_Request */
private $wpRequest;
public function __construct(
WP_REST_Request $wpRequest
) {
$this->wpRequest = $wpRequest;
}
public function getHeader(string $key): ?string {
return $this->wpRequest->get_header($key);
}
public function getUrlParams(): array {
return $this->wpRequest->get_url_params();
}
public function getUrlParam(string $name): ?string {
return $this->getUrlParams()[$name] ?? null;
}
public function getQueryParams(): array {
return $this->wpRequest->get_query_params();
}
public function getQueryParam(string $name): ?string {
return $this->getQueryParams()[$name] ?? null;
}
public function getBody(): array {
return $this->wpRequest->get_json_params() ?? [];
}
public function getRawBody(): string {
return $this->wpRequest->get_body();
}
}

View File

@@ -0,0 +1,14 @@
<?php declare(strict_types = 1);
namespace MailPoet\Automation\API;
use WP_REST_Response;
class Response extends WP_REST_Response {
public function __construct(
array $data = null,
int $status = 200
) {
parent::__construct(['data' => $data], $status);
}
}