add api list of mappers
This commit is contained in:
parent
91b8b27a5a
commit
fd08babd04
|
@ -0,0 +1,70 @@
|
|||
<?php
|
||||
|
||||
namespace Tainacan\API\EndPoints;
|
||||
|
||||
use \Tainacan\API\REST_Controller;
|
||||
|
||||
class REST_Field_Mappers_Controller extends REST_Controller {
|
||||
|
||||
/**
|
||||
* REST_Field_Mappers_Controller constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->rest_base = 'field-mappers';
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function register_routes() {
|
||||
register_rest_route($this->namespace, '/' . $this->rest_base,
|
||||
array(
|
||||
array(
|
||||
'methods' => \WP_REST_Server::READABLE,
|
||||
'callback' => array($this, 'get_items'),
|
||||
'permission_callback' => array($this, 'get_items_permissions_check'),
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Tainacan\Exposers\Mappers\Mapper $mapper
|
||||
* @param \WP_REST_Request $request
|
||||
*map
|
||||
* @return mixed|\WP_Error|\WP_REST_Response
|
||||
*/
|
||||
public function prepare_item_for_response( $mapper, $request ) {
|
||||
|
||||
$field_arr = $mapper->_toArray();
|
||||
|
||||
return $field_arr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \WP_REST_Request $request
|
||||
*
|
||||
* @return \WP_Error|\WP_REST_Response
|
||||
*/
|
||||
public function get_items( $request ) {
|
||||
$Tainacan_Exposers = \Tainacan\Exposers\Exposers::get_instance();
|
||||
|
||||
$field_mappers = $Tainacan_Exposers->get_mappers( 'OBJECT' );
|
||||
|
||||
$prepared = [];
|
||||
foreach ($field_mappers as $field_mapper){
|
||||
array_push($prepared, $this->prepare_item_for_response($field_mapper, $request));
|
||||
}
|
||||
|
||||
return new \WP_REST_Response($prepared, 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \WP_REST_Request $request
|
||||
*
|
||||
* @return bool|\WP_Error
|
||||
*/
|
||||
public function get_items_permissions_check( $request ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
|
@ -14,6 +14,7 @@ $rest_logs_controller = new \Tainacan\API\EndPoints\REST_Logs_Controlle
|
|||
$rest_field_types_controller = new \Tainacan\API\EndPoints\REST_Field_Types_Controller();
|
||||
$rest_filter_types_controller = new \Tainacan\API\EndPoints\REST_Filter_Types_Controller();
|
||||
new \Tainacan\API\EndPoints\REST_Export_Controller();
|
||||
new \Tainacan\API\EndPoints\REST_Field_Mappers_Controller();
|
||||
// Add here other endpoints imports
|
||||
|
||||
?>
|
|
@ -240,4 +240,24 @@ class Exposers {
|
|||
}
|
||||
return $i18n_strings;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return list of registered mappers
|
||||
* @param string $output output format, ARRAY_N or OBJECT
|
||||
*/
|
||||
public function get_mappers($output = ARRAY_N) {
|
||||
$ret = [];
|
||||
switch ($output) {
|
||||
case OBJECT:
|
||||
foreach ($this->mappers as $mapper) {
|
||||
$ret[] = new $mapper;
|
||||
}
|
||||
break;
|
||||
case ARRAY_N:
|
||||
default:
|
||||
return $this->mappers;
|
||||
break;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
}
|
|
@ -11,4 +11,17 @@ abstract class Mapper {
|
|||
public $prefix = ''; // Tag prefix like "dc:"
|
||||
public $sufix = ''; // Tag sufix
|
||||
public $header = false; // API response header or file header to be used with
|
||||
|
||||
public function _toArray() {
|
||||
return [
|
||||
'slug' => $this->slug,
|
||||
'name' => $this->name,
|
||||
'allow_extra_fields' => $this->allow_extra_fields,
|
||||
'context_url' => $this->context_url,
|
||||
'metadata' => $this->metadata,
|
||||
'prefix' => $this->prefix,
|
||||
'sufix' => $this->sufix,
|
||||
'header' => $this->header
|
||||
];
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
namespace Tainacan\Tests;
|
||||
|
||||
/**
|
||||
* @group api
|
||||
*/
|
||||
class TAINACAN_REST_Field_Mappers_Controller extends TAINACAN_UnitApiTestCase {
|
||||
|
||||
public function test_get_field_mappers(){
|
||||
|
||||
$field_mapper_request = new \WP_REST_Request('GET', $this->namespace . '/field-mappers');
|
||||
|
||||
$field_mapper_response = $this->server->dispatch($field_mapper_request);
|
||||
|
||||
$data = $field_mapper_response->get_data();
|
||||
|
||||
$Tainacan_Fields = \Tainacan\Exposers\Exposers::get_instance();
|
||||
|
||||
$field_mappers = $Tainacan_Fields->get_mappers("OBJECT");
|
||||
|
||||
$this->assertEquals(count($field_mappers), count($data));
|
||||
|
||||
for ($i = 0; $i < count($data); $i++) {
|
||||
$this->assertEquals($field_mappers[$i]->slug, $data[$i]['slug']);
|
||||
$this->assertEquals($field_mappers[$i]->name, $data[$i]['name']);
|
||||
$this->assertEquals($field_mappers[$i]->allow_extra_fields, $data[$i]['allow_extra_fields']);
|
||||
$this->assertEquals($field_mappers[$i]->context_url, $data[$i]['context_url']);
|
||||
$this->assertEquals($field_mappers[$i]->metadata, $data[$i]['metadata']);
|
||||
$this->assertEquals($field_mappers[$i]->prefix, $data[$i]['prefix']);
|
||||
$this->assertEquals($field_mappers[$i]->sufix, $data[$i]['sufix']);
|
||||
$this->assertEquals($field_mappers[$i]->header, $data[$i]['header']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
Loading…
Reference in New Issue