clients.inc in Web Service Clients 6
Same filename and directory in other branches
Base class for backends. Handles XML-RPC, REST calls and caching results
@author Django Beatty - adub
File
clients.incView source
<?php
/**
* @file
* Base class for backends. Handles XML-RPC, REST calls and caching results
*
* @author Django Beatty - adub
*/
/**
*
*/
abstract class ClientsServicesBase {
/**
* Takes variable number of params after cacheid.
*/
protected static function doCall($method, $cacheid) {
$args = func_get_args();
$args = array_slice($args, 2);
// any extra params passed to this argument
$cache_table = 'cache_clients';
$cache_time = variable_get('clients_api_cache_time', '0');
if ($cache_time == '0' || !($result = cache_get($cacheid, $cache_table))) {
if ($method == 'xmlrpc') {
$data = call_user_func_array('xmlrpc', $args);
}
elseif ($method == 'rest') {
$data = call_user_func_array('drupal_http_request', $args);
}
else {
$data = t('@method not yet supported', array(
'@method' => $method,
));
}
// @todo error handling/reporting
if ($cache_time != '0') {
cache_set($cacheid, $data, $cache_table, $cache_time == 'cron' ? CACHE_TEMPORARY : time() + (int) $cache_time * 60);
}
$result = new stdClass();
$result->data = $data;
$result->created = time();
}
return $result;
}
/**
* Connection extending classes must implement the interface below:
*/
/**
* Sets cacheid and parameters for the service/method and calls self::doCall()
*/
public static abstract function call($serviceConfig, $serviceOptions);
}
Classes
Name | Description |
---|---|
ClientsServicesBase |