No Description

Endpoint.php 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace MailPoet\API\JSON;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\Config\AccessControl;
  5. use MailPoet\WP\Functions as WPFunctions;
  6. abstract class Endpoint {
  7. const TYPE_POST = 'POST';
  8. const TYPE_GET = 'GET';
  9. public $permissions = [
  10. 'global' => AccessControl::PERMISSION_MANAGE_SETTINGS,
  11. 'methods' => [],
  12. ];
  13. protected static $getMethods = [];
  14. public function successResponse(
  15. $data = [], $meta = [], $status = Response::STATUS_OK
  16. ) {
  17. return new SuccessResponse($data, $meta, $status);
  18. }
  19. public function errorResponse(
  20. $errors = [], $meta = [], $status = Response::STATUS_NOT_FOUND
  21. ) {
  22. if (empty($errors)) {
  23. $errors = [
  24. Error::UNKNOWN => WPFunctions::get()->__('An unknown error occurred.', 'mailpoet'),
  25. ];
  26. }
  27. return new ErrorResponse($errors, $meta, $status);
  28. }
  29. public function badRequest($errors = [], $meta = []) {
  30. if (empty($errors)) {
  31. $errors = [
  32. Error::BAD_REQUEST => WPFunctions::get()->__('Invalid request parameters', 'mailpoet'),
  33. ];
  34. }
  35. return new ErrorResponse($errors, $meta, Response::STATUS_BAD_REQUEST);
  36. }
  37. public function isMethodAllowed($name, $type) {
  38. // Block GET requests on POST endpoints, but allow POST requests on GET endpoints (some plugins
  39. // change REQUEST_METHOD to POST on GET requests, which caused them to be blocked)
  40. if ($type === self::TYPE_GET && !in_array($name, static::$getMethods)) {
  41. return false;
  42. }
  43. return true;
  44. }
  45. }