XylotrechusZ
<?php
/**
* Created by PhpStorm.
* User: alex
* Date: 2/7/19
* Time: 10:13 AM
*/
class Brizy_Editor_Accounts_Api extends Brizy_Admin_AbstractApi {
const nonce = 'brizy-api';
const BRIZY_GET_ACCOUNT = '_get_account';
const BRIZY_GET_ACCOUNTS = '_get_accounts';
const BRIZY_ADD_ACCOUNT = '_add_account';
const BRIZY_UPDATE_ACCOUNT = '_update_account';
const BRIZY_DELETE_ACCOUNT = '_delete_account';
/**
* @var Brizy_Editor_Accounts_ServiceAccountManager
*/
private $manager;
/**
* Brizy_Admin_Rules_Api constructor.
*
* @param Brizy_Editor_Accounts_ServiceAccountManager $manager
*/
public function __construct( $manager ) {
$this->manager = $manager;
parent::__construct();
}
/**
* @return Brizy_Editor_Accounts_Api
* @throws Exception
*/
public static function _init() {
static $instance;
if ( ! $instance ) {
$instance = new self( new Brizy_Editor_Accounts_ServiceAccountManager( Brizy_Editor_Project::get() ) );
}
return $instance;
}
/***
* @return null
*/
protected function getRequestNonce() {
return $this->param( 'hash' );
}
/**
* Register all api actions
*/
protected function initializeApiActions() {
$pref = 'wp_ajax_' . Brizy_Editor::prefix();
add_action( $pref . self::BRIZY_GET_ACCOUNT, array( $this, 'actionGetAccount' ) );
add_action( $pref . self::BRIZY_GET_ACCOUNTS, array( $this, 'actionGetAccounts' ) );
add_action( $pref . self::BRIZY_ADD_ACCOUNT, array( $this, 'actionAddAccount' ) );
add_action( $pref . self::BRIZY_UPDATE_ACCOUNT, array( $this, 'actionUpdateAccount' ) );
add_action( $pref . self::BRIZY_DELETE_ACCOUNT, array( $this, 'actionDeleteAccount' ) );
}
public function actionGetAccount() {
$this->verifyNonce( self::nonce );
if ( ! $this->param( 'id' ) ) {
$this->error( 400, 'Invalid account id' );
}
try {
$manager = new Brizy_Editor_Accounts_ServiceAccountManager( Brizy_Editor_Project::get() );
$account = $manager->getAccount( $this->param( 'id' ) );
if ( ! $account ) {
$this->error( 404, 'Account not found' );
}
$this->success( $account );
} catch ( Exception $e ) {
Brizy_Logger::instance()->critical( $e->getMessage(), array( $e ) );
$this->error( 500, $e->getMessage() );
}
}
public function actionGetAccounts() {
$this->verifyNonce( self::nonce );
$filter = array();
if ( $this->param( 'group' ) ) {
$filter['group'] = $this->param( 'group' );
}
if ( $this->param( 'service' ) ) {
$filter['service'] = $this->param( 'service' );
}
try {
$manager = new Brizy_Editor_Accounts_ServiceAccountManager( Brizy_Editor_Project::get() );
$accounts = $manager->getFilteredAccounts( $filter );
$this->success( $accounts );
} catch ( Exception $e ) {
Brizy_Logger::instance()->critical( $e->getMessage(), array( $e ) );
$this->error( 500, $e->getMessage() );
}
}
public function actionAddAccount() {
$this->verifyNonce( self::nonce );
try {
$manager = new Brizy_Editor_Accounts_ServiceAccountManager( Brizy_Editor_Project::get() );
$instance = Brizy_Editor_Accounts_AbstractAccount::createFromJson( json_decode( file_get_contents( 'php://input' ) ) );
$instance->validate();
$manager->addAccount( $instance );
$this->success( $instance );
} catch ( Exception $e ) {
Brizy_Logger::instance()->critical( $e->getMessage(), array( $e ) );
$this->error( 500, $e->getMessage() );
}
}
public function actionUpdateAccount() {
$this->verifyNonce( self::nonce );
try {
$manager = new Brizy_Editor_Accounts_ServiceAccountManager( Brizy_Editor_Project::get() );
$instance = Brizy_Editor_Accounts_AbstractAccount::createFromJson( json_decode( file_get_contents( 'php://input' ) ) );
$manager->updateAccount( $instance );
$this->success( $instance );
} catch ( Exception $e ) {
Brizy_Logger::instance()->critical( $e->getMessage(), array( $e ) );
$this->error( 500, $e->getMessage() );
}
}
public function actionDeleteAccount() {
$this->verifyNonce( self::nonce );
try {
if ( ! $this->param( 'id' ) ) {
$this->error( 400, 'Invalid account id' );
}
$manager = new Brizy_Editor_Accounts_ServiceAccountManager( Brizy_Editor_Project::get() );
$manager->deleteAccountById( $this->param( 'id' ) );
$this->success( null );
} catch ( Exception $e ) {
Brizy_Logger::instance()->critical( $e->getMessage(), array( $e ) );
$this->error( 500, $e->getMessage() );
}
}
}