/** * 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; }