class ServicesRESTServerFactory in Services 7.3
Factory class to build RESTServer object.
If you want to change it
Hierarchy
- class \ServicesRESTServerFactory
Expanded class hierarchy of ServicesRESTServerFactory
1 string reference to 'ServicesRESTServerFactory'
- rest_server_server in servers/
rest_server/ rest_server.module - Starting point of the REST server.
File
- servers/
rest_server/ includes/ ServicesRESTServerFactory.inc, line 9
View source
class ServicesRESTServerFactory {
protected $data = array();
static $class_name = 'RESTServer';
/**
* We need data property to pass additional arguments to methods.
*
* Required property is 'endpoint_path' -- base path of endpoint.
* Example: GET rest/node/1.php -- "rest" is endpoint path.
*/
public function __construct($data = array()) {
if (!isset($data['endpoint_path'])) {
throw new Exception('ServicesRESTServerFactory constructor requires "endpoint_data" property.');
}
$this->data = $data;
}
public function getRESTServer() {
$content_type_negotiator = $this
->getContentTypeNegotiator();
$context = $this
->getContext();
$resources = $this
->getResources();
$parsers = $this
->getParsers();
$formatters = $this
->getFormatters();
$class_name = static::$class_name;
return new $class_name($context, $content_type_negotiator, $resources, $parsers, $formatters);
}
protected function getContentTypeNegotiator() {
return new ServicesContentTypeNegotiator();
}
protected function getContext() {
$context = new ServicesContext($this->data['endpoint_path']);
$context
->buildFromGlobals();
return $context;
}
protected function getResources() {
$endpoint_name = services_get_server_info('endpoint', '');
$endpoint = services_endpoint_load($endpoint_name);
$resources = services_get_resources($endpoint->name);
module_load_include('inc', 'services', 'includes/services.resource_build');
_services_apply_endpoint($resources, $endpoint, TRUE);
return $resources;
}
protected function getEndpoint() {
$endpoint_name = services_get_server_info('endpoint', '');
return services_endpoint_load($endpoint_name);
}
protected function getEndpointSettings() {
static $settings;
if (empty($settings)) {
$endpoint = $this
->getEndpoint();
// Get the server settings from the endpoint.
$settings = !empty($endpoint->server_settings) ? $endpoint->server_settings : array();
// Normalize the settings so that we get the expected structure
// and sensible defaults.
$settings = rest_server_setup_settings($settings);
}
return $settings;
}
protected function getParsers() {
$settings = $this
->getEndpointSettings();
$parsers = rest_server_request_parsers();
// Remove parsers that have been disabled for this endpoint.
foreach (array_keys($parsers) as $key) {
if (!$settings['parsers'][$key]) {
unset($parsers[$key]);
}
}
return $parsers;
}
protected function getFormatters() {
$settings = $this
->getEndpointSettings();
$formatters = rest_server_response_formatters();
// Remove formatters that have been disabled for this endpoint.
foreach (array_keys($formatters) as $key) {
if (!$settings['formatters'][$key]) {
unset($formatters[$key]);
}
}
return $formatters;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ServicesRESTServerFactory:: |
static | property | 1 | |
ServicesRESTServerFactory:: |
protected | property | ||
ServicesRESTServerFactory:: |
protected | function | ||
ServicesRESTServerFactory:: |
protected | function | 1 | |
ServicesRESTServerFactory:: |
protected | function | ||
ServicesRESTServerFactory:: |
protected | function | ||
ServicesRESTServerFactory:: |
protected | function | 1 | |
ServicesRESTServerFactory:: |
protected | function | 1 | |
ServicesRESTServerFactory:: |
protected | function | 1 | |
ServicesRESTServerFactory:: |
public | function | ||
ServicesRESTServerFactory:: |
public | function | We need data property to pass additional arguments to methods. | 1 |