Your IP : 216.73.216.63


Current Path : /var/www/ooareogundevinitiative/wp-content/plugins/brizy/editor/api/
Upload File :
Current File : /var/www/ooareogundevinitiative/wp-content/plugins/brizy/editor/api/client.php

<?php

class Brizy_Editor_API_Client extends Brizy_Editor_Http_Client {

	/**
	 * @var Brizy_Editor_API_AccessToken
	 */
	private $access_token;

	/**
	 * Brizy_Editor_API_Client constructor.
	 *
	 * @param $token
	 */
	public function __construct( $token ) {
		parent::__construct();
		$this->access_token = $token;
	}

	public function getUser() {
		return $this->post( 'users/me', array() )->get_response_body();
	}

	/**
	 * @param null $clone_from_id
	 *
	 * @return array|mixed|object
	 * @throws Brizy_Editor_API_Exceptions_Exception
	 * @throws Brizy_Editor_Http_Exceptions_BadRequest
	 * @throws Brizy_Editor_Http_Exceptions_ResponseException
	 * @throws Brizy_Editor_Http_Exceptions_ResponseNotFound
	 * @throws Brizy_Editor_Http_Exceptions_ResponseUnauthorized
	 */
	public function create_project( $clone_from_id = null ) {

		$project   = new Brizy_Editor_API_Project( array() );
		$save_data = $project->getSaveData();

		if ( $clone_from_id ) {
			$save_data['resource_id_clonable'] = $clone_from_id;
		}

		return $this->post( 'projects', array( 'body' => $save_data ) )->get_response_body();
	}

	/**
	 * @param $page_ids
	 * @param $project_target
	 *
	 * @return array|mixed|object
	 * @throws Brizy_Editor_API_Exceptions_Exception
	 * @throws Brizy_Editor_Http_Exceptions_BadRequest
	 * @throws Brizy_Editor_Http_Exceptions_ResponseException
	 * @throws Brizy_Editor_Http_Exceptions_ResponseNotFound
	 * @throws Brizy_Editor_Http_Exceptions_ResponseUnauthorized
	 */
//	public function clone_pages( $page_ids, $project_target ) {
//
//		return $this->post( 'pages/clones', array(
//			'body' => array(
//				'project' => $project_target,
//				'pages'   => $page_ids
//			)
//		) )->get_response_body();
//	}

	/**
	 * @param Brizy_Editor_API_Project $project
	 *
	 * @return array|mixed|object
	 * @throws Brizy_Editor_API_Exceptions_Exception
	 * @throws Brizy_Editor_Http_Exceptions_BadRequest
	 * @throws Brizy_Editor_Http_Exceptions_ResponseException
	 * @throws Brizy_Editor_Http_Exceptions_ResponseNotFound
	 * @throws Brizy_Editor_Http_Exceptions_ResponseUnauthorized
	 */
	public function get_project( Brizy_Editor_API_Project $project ) {

		return $this->get( "projects/{$project->get_id()}" )->get_response_body();
	}

	/**
	 * @param Brizy_Editor_API_Project $project
	 *
	 * @return array|mixed|object
	 * @throws Brizy_Editor_API_Exceptions_Exception
	 * @throws Brizy_Editor_Http_Exceptions_BadRequest
	 * @throws Brizy_Editor_Http_Exceptions_ResponseException
	 * @throws Brizy_Editor_Http_Exceptions_ResponseNotFound
	 * @throws Brizy_Editor_Http_Exceptions_ResponseUnauthorized
	 */
	public function update_project( Brizy_Editor_API_Project $project ) {
		return $this->put( "projects/{$project->get_id()}", array( 'body' => $project->getSaveData( 'PUT' ) ) )->get_response_body();
	}

	/**
	 * @param $id
	 *
	 * @return array|mixed|object
	 * @throws Brizy_Editor_API_Exceptions_Exception
	 * @throws Brizy_Editor_Http_Exceptions_BadRequest
	 * @throws Brizy_Editor_Http_Exceptions_ResponseException
	 * @throws Brizy_Editor_Http_Exceptions_ResponseNotFound
	 * @throws Brizy_Editor_Http_Exceptions_ResponseUnauthorized
	 */
	public function delete_project( $id ) {
		return $this->delete( "projects/$id" )->get_response_body();
	}

	/**
	 * @param $project_id
	 *
	 * @return array|mixed|object
	 * @throws Brizy_Editor_API_Exceptions_Exception
	 * @throws Brizy_Editor_Http_Exceptions_BadRequest
	 * @throws Brizy_Editor_Http_Exceptions_ResponseException
	 * @throws Brizy_Editor_Http_Exceptions_ResponseNotFound
	 * @throws Brizy_Editor_Http_Exceptions_ResponseUnauthorized
	 */
//	public function get_pages( $project_id ) {
//		return $this->get( "projects/$project_id/pages?=signature=" . Brizy_Editor_Signature::get() )->get_response_body();
//	}

	/**
	 * @param $project_id
	 * @param $page_id
	 *
	 * @return array|mixed|object
	 * @throws Brizy_Editor_API_Exceptions_Exception
	 * @throws Brizy_Editor_Http_Exceptions_BadRequest
	 * @throws Brizy_Editor_Http_Exceptions_ResponseException
	 * @throws Brizy_Editor_Http_Exceptions_ResponseNotFound
	 * @throws Brizy_Editor_Http_Exceptions_ResponseUnauthorized
	 */
//	public function get_page( $project_id, $page_id ) {
//		return $this->get( "projects/$project_id/pages/$page_id" )->get_response_body();
//	}

	/**
	 * @param $project_id
	 * @param Brizy_Editor_API_Page $page
	 *
	 * @return array|mixed|object
	 * @throws Brizy_Editor_API_Exceptions_Exception
	 * @throws Brizy_Editor_Http_Exceptions_BadRequest
	 * @throws Brizy_Editor_Http_Exceptions_ResponseException
	 * @throws Brizy_Editor_Http_Exceptions_ResponseNotFound
	 * @throws Brizy_Editor_Http_Exceptions_ResponseUnauthorized
	 */
//	public function create_page( $project_id, Brizy_Editor_API_Page $page ) {
//		return $this->post( "projects/$project_id/pages", array( 'body' => $page->getSaveData() ) )->get_response_body();
//	}

	/**
	 * @param $project_id
	 * @param $page_id
	 * @param Brizy_Editor_API_Page $page
	 *
	 * @return array|mixed|object
	 * @throws Brizy_Editor_API_Exceptions_Exception
	 * @throws Brizy_Editor_Http_Exceptions_BadRequest
	 * @throws Brizy_Editor_Http_Exceptions_ResponseException
	 * @throws Brizy_Editor_Http_Exceptions_ResponseNotFound
	 * @throws Brizy_Editor_Http_Exceptions_ResponseUnauthorized
	 */
//	public function update_page( $project_id, $page_id, Brizy_Editor_API_Page $page ) {
//		return $this->put( "projects/$project_id/pages/$page_id", array( 'body' => $page->getSaveData( 'PUT' ) ) )->get_response_body();
//	}

	/**
	 * @param Brizy_Editor_Project $project
	 * @param $page_data
	 * @param $config
	 * @param $compiler_url
	 *
	 * @return string
	 * @throws Brizy_Editor_API_Exceptions_Exception
	 * @throws Brizy_Editor_Exceptions_NotFound
	 * @throws Brizy_Editor_Http_Exceptions_BadRequest
	 * @throws Brizy_Editor_Http_Exceptions_ResponseException
	 * @throws Brizy_Editor_Http_Exceptions_ResponseNotFound
	 * @throws Brizy_Editor_Http_Exceptions_ResponseUnauthorized
	 * @throws Twig_Error_Loader
	 * @throws Twig_Error_Runtime
	 * @throws Twig_Error_Syntax
	 */
	public function compile_page( Brizy_Editor_Project $project, $page_data, $config, $compiler_url ) {

		$blockManager = new Brizy_Admin_Blocks_Manager( Brizy_Admin_Blocks_Main::CP_GLOBAL );

		$body = apply_filters( 'brizy_compiler_params', array(
			'page_id'            => (int)$config['wp']['page'],
			'free_version'       => BRIZY_EDITOR_VERSION,
			'free_url'           => Brizy_Config::COMPILER_DOWNLOAD_URL,
			'config_json'        => json_encode( $config ),
			'pages_json'         => json_encode( array(
				array(
					'id'       => (int)$config['wp']['page'],
					'data'     => $page_data,
					'is_index' => true
				)
			) ),
			'project_json'       => json_encode( $project->createResponse() ),
			'global_blocks_json' => json_encode( $blockManager->createResponseForEntities( $blockManager->getEntities( [] ) ) )
		) );


		$page = parent::request( $compiler_url, array( 'body' => $body ), 'POST' )->get_response_body();

		$template_context = array(

			'editorData' => array(
				'urls'            => array(
					'assets'      => $config['urls']['assets'],
					'apiEndpoint' => set_url_scheme( admin_url( 'admin-ajax.php' ) )
				),
				'api'             => array(
					'getTimestamp' => Brizy_Editor_API::AJAX_TIMESTAMP,
				),
				'serverTimestamp' => time()
			),
			'page'       => $page
		);

		return Brizy_TwigEngine::instance( Brizy_Editor_UrlBuilder::editor_build_path( 'editor/views/' ) )
		                       ->render( 'static.html.twig', $template_context );
	}

	/**
	 * @param $project_id
	 * @param $page_id
	 *
	 * @return array|mixed|object
	 * @throws Brizy_Editor_API_Exceptions_Exception
	 * @throws Brizy_Editor_Http_Exceptions_BadRequest
	 * @throws Brizy_Editor_Http_Exceptions_ResponseException
	 * @throws Brizy_Editor_Http_Exceptions_ResponseNotFound
	 * @throws Brizy_Editor_Http_Exceptions_ResponseUnauthorized
	 */
//	public function delete_page( $project_id, $page_id ) {
//		return $this->delete( "projects/$project_id/pages/$page_id" )->get_response_body();
//	}

	/**
	 * @param $project_id
	 * @param $base64
	 *
	 * @return array|mixed|object
	 * @throws Brizy_Editor_API_Exceptions_Exception
	 * @throws Brizy_Editor_Http_Exceptions_BadRequest
	 * @throws Brizy_Editor_Http_Exceptions_ResponseException
	 * @throws Brizy_Editor_Http_Exceptions_ResponseNotFound
	 * @throws Brizy_Editor_Http_Exceptions_ResponseUnauthorized
	 */
	public function add_media( $project_id, $base64 ) {
		return $this->post( "projects/$project_id/media", array(
			'timeout' => 30,
			'body'    => array( 'attachment' => $base64 )
		) )->get_response_body();
	}

	/**
	 * @return array
	 */
	protected function get_headers() {
		return array(//'Authorization' => 'Bearer ' . $this->access_token->access_token()
		);
	}

	/**
	 * @param $suffix
	 *
	 * @return string
	 */
	protected function url( $suffix ) {
		$implode = rtrim( implode( "/", array( Brizy_Config::GATEWAY_URI, 'v1', $suffix ) ), "/" );

		return $implode;
	}

	/**
	 * @param $url
	 * @param array $options
	 * @param string $method
	 *
	 * @return Brizy_Editor_Http_Response
	 * @throws Brizy_Editor_API_Exceptions_Exception
	 * @throws Brizy_Editor_Http_Exceptions_BadRequest
	 * @throws Brizy_Editor_Http_Exceptions_ResponseException
	 * @throws Brizy_Editor_Http_Exceptions_ResponseNotFound
	 * @throws Brizy_Editor_Http_Exceptions_ResponseUnauthorized
	 */
	public function request( $url, $options = array(), $method = 'GET' ) {
		return parent::request(
			$this->url( $url ),
			$options,
			$method
		);
	}

	/**
	 * @param $options
	 *
	 * @return array
	 */
	protected function prepare_options( $options ) {

		$options = parent::prepare_options( $options );

		$options['headers'] = array_merge( $options['headers'], $this->get_headers() );

		return $options;
	}

	protected function get_project_json( Brizy_Editor_Project $project ) {
		return json_encode( array(
			'id'   => $project->getId(),
			'data' => $project->getDataAsJson()
		) );
	}
}