/** * Execute request * @param resource curl handle * @throws Exception * @return array processed response */ protected function _executeRequest($curl, $isBitId = false) { $response = curl_exec($curl); if ($response === false) { throw new Exception('CURL error: ' . curl_error($curl)); } $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($code >= 200 && $code < 400) { $result = json_decode($response, true); if (!is_array($result)) { throw new Exception('JSON decode error'); } if (!empty($result['error'])) { // construct exception $ex = new Exception($result['error']['message'], $result['error']['code']); if (isset($result['error']['user_message'])) { $ex->setUserMessage($result['error']['user_message']); } throw $ex; } if ($isBitId) { return $result; } return $result['result']; } if ($isBitId) { $json = @json_decode($response, true); if (is_array($json) && isset($json['message'])) { $ex = new Exception($json['message']); if (isset($json['user_message'])) { $ex->setUserMessage($json['user_message']); } throw $ex; } } throw new Exception("Request at " . curl_getinfo($curl, CURLINFO_EFFECTIVE_URL) . " failed"); }