Example #1
0
 /**
  * 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");
 }