/**
  * query - main execution point for retrieving data from the remote database
  *
  * @param string queryType (get, post, delete, put)
  * @param string entity - the mapped name of the table to access
  * @param string verb   - which action to perform
  * @param array params  - passed in variables to work with on the DB side
  *
  * @return array
  */
 public function query($queryType, AbstractModel $entity, $verb, $params)
 {
     $ymlKey = $this->keyname;
     $configParams = $this->getCredentials($ymlKey);
     $credentials = $configParams['credentials'];
     $api = new RestClient(array('base_url' => $credentials['baseUrl'], 'format' => $credentials['format'], 'headers' => $this->buildHeaders($credentials)));
     $api->setLogger($this->logger);
     $result = $api->{$queryType}($entity->getTablename() . "/{$verb}/", $params);
     if ($result->info->http_code == 200) {
         $decodedResult = $result->decode_response();
         if (is_null($decodedResult) || empty($decodedResult)) {
             return null;
         }
         if (array_key_exists('code', $decodedResult)) {
             $this->handleError($decodedResult);
         }
         //reset the XSS token for next request
         if (isset($decodedResult->AuthorizationToken)) {
             $_SESSION['AuthorizationToken'] = $decodedResult->AuthorizationToken;
         }
         return $decodedResult;
     } elseif ($result->info->http_code == 500) {
         $decodedResult = $result->decode_response();
         if (array_key_exists('code', $decodedResult)) {
             $this->handleError($decodedResult);
         }
     }
 }
 public function __construct(HTTPRequest $httpRequest, HTTPResponse $httpResponse, Logger $logger)
 {
     parent::__construct($httpRequest, $httpResponse, $logger);
     $this->childNamespace = str_replace('\\', DIRECTORY_SEPARATOR, __NAMESPACE__);
     $this->entity = 'Locale';
     $this->tablename = 'locales';
 }