Add feature flags API

[MAILPOET-2008]
This commit is contained in:
Jan Jakeš
2019-05-13 14:34:47 +02:00
committed by M. Shull
parent 1b091f144b
commit ab683b47de
6 changed files with 111 additions and 0 deletions

View File

@ -0,0 +1,45 @@
<?php
namespace MailPoet\API\JSON\v1;
use MailPoet\API\JSON\Endpoint as APIEndpoint;
use MailPoet\API\JSON\Error as APIError;
use MailPoet\Config\AccessControl;
use MailPoet\Features\FeatureFlagsController;
use MailPoet\Features\FeaturesController;
if (!defined('ABSPATH')) exit;
class FeatureFlags extends APIEndpoint {
/** @var FeatureFlagsController */
private $feature_flags_controller;
public $permissions = [
'global' => AccessControl::PERMISSION_MANAGE_FEATURES,
];
function __construct(FeatureFlagsController $feature_flags) {
$this->feature_flags_controller = $feature_flags;
}
function getAll() {
$feature_flags = $this->feature_flags_controller->getAll();
return $this->successResponse($feature_flags);
}
function set(array $flags) {
foreach ($flags as $name => $value) {
if (!isset(FeaturesController::$defaults[$name])) {
return $this->badRequest([
APIError::BAD_REQUEST => "Feature '$name' does not exist'",
]);
}
}
foreach ($flags as $name => $value) {
$this->feature_flags_controller->set($name, (bool)$value);
}
return $this->successResponse([]);
}
}