You are here

abstract class ClientsServicesBase in Web Service Clients 6

Hierarchy

Expanded class hierarchy of ClientsServicesBase

File

./clients.inc, line 12
Base class for backends. Handles XML-RPC, REST calls and caching results

View source
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);

}

Members

Namesort descending Modifiers Type Description Overrides
ClientsServicesBase::call abstract public static function Sets cacheid and parameters for the service/method and calls self::doCall() 2
ClientsServicesBase::doCall protected static function Takes variable number of params after cacheid.