diff --git a/module/ai/model.php b/module/ai/model.php index 716cdd5bea..7286038d6c 100644 --- a/module/ai/model.php +++ b/module/ai/model.php @@ -61,7 +61,7 @@ class aiModel extends model * @param mixed $data data to send * @param int $timeout request timeout in seconds * @access private - * @return mixed false if error, json string if success + * @return object response object, three properties: result, message (if fail), content(if success). */ private function makeRequest($type, $data, $timeout = 10) { @@ -117,10 +117,21 @@ class aiModel extends model } } - if(curl_errno($ch)) return false; - curl_close($ch); + $response = new stdclass(); - return $result; + if(!$result || curl_errno($ch)) + { + $response->result = 'fail'; + $response->message = curl_error($ch); + } + else + { + $response->result = 'success'; + $response->content = $result; + } + + curl_close($ch); + return $response; } /** @@ -196,13 +207,19 @@ class aiModel extends model /** * Decode response from OpenAI API, add error to $this->errors if any. * - * @param string $response json string + * @param object $response response object * @access private * @return mixed false if error, json object if success */ private function decodeResponse($response) { - $response = json_decode($response); + if($response->result === 'fail') + { + $this->errors[] = empty($response->message) ? 'Unknown error' : $response->message; + return false; + } + + $response = json_decode($response->content); if(json_last_error()) { /* Polyfill for PHP 5 < 5.5.0. */ @@ -225,11 +242,6 @@ class aiModel extends model $this->errors[] = 'JSON decode error: ' . json_last_error_msg(); return false; } - if(isset($response->error)) - { - $this->errors[] = isset($response->error->message) ? $response->error->message : 'Unknown error'; - return false; - } return $response; }