/**
  * Helper method to make a Configuration API request, stores error if encountered
  *
  * @param string $method
  * @param array $payload
  * @return array [response string, Cloud_Config_Request object used for request]
  */
 protected function _make_request($method, $payload = array(), $flatten_keys = true, $region = false)
 {
     if ($payload && $flatten_keys) {
         $payload = $this->_flatten_keys($payload);
     }
     $credentials['access-key-id'] = $this->access_key;
     $credentials['secret-access-key'] = $this->secret_key;
     if (!($region && Lift_Search::is_valid_region($region))) {
         $region = Lift_Search::get_domain_region();
     }
     $config = new Cloud_Config_Request($credentials, $this->http_api, $region);
     $r = $config->send_request($method, $payload);
     $this->set_last_status_code($config->status_code);
     if ($r && false !== ($r_json = json_decode($r))) {
         $r_json = json_decode($r);
         if (isset($r_json->Error) || $this->last_status_code != '200') {
             $this->set_last_error(array('code' => $r_json->Error->Code, 'message' => $r_json->Error->Message));
             return false;
         }
         $response_name = $method . 'Response';
         $result_name = $method . 'Result';
         return $r_json->{$response_name}->{$result_name};
     } else {
         $this->set_last_error(array('code' => 'invalid_response', 'message' => $config->error));
     }
     return $r;
 }
 public function action__wp_ajax_lift_domains()
 {
     $response = array('domains' => array(), 'error' => false, 'nonce' => wp_create_nonce('lift_domain'));
     if (!Lift_Search::get_access_key_id() && !Lift_Search::get_secret_access_key()) {
         $response['error'] = array('code' => 'emptyCredentials', 'message' => 'The Access Credential are not yet set.');
     } else {
         $dm = Lift_Search::get_domain_manager();
         $region = !empty($_REQUEST['region']) ? $_REQUEST['region'] : Lift_Search::get_domain_region();
         $domains = $dm->get_domains($region);
         if ($domains === false) {
             $response['error'] = $dm->get_last_error();
         } else {
             $response['domains'] = $domains;
         }
     }
     header('Content-Type: application/json');
     die(json_encode($response));
 }