/** * Generate and set HTTP response code, error messages to Response object. */ protected function _renderMessages() { $formattedMessages = array(); $formattedMessages['messages'] = $this->getMessages(); $responseHttpCode = null; /** @var Exception $exception */ foreach ($this->getException() as $exception) { $code = $exception instanceof Mage_Webapi_Exception ? $exception->getCode() : Mage_Webapi_Exception::HTTP_INTERNAL_ERROR; $messageData = array('code' => $code, 'message' => $exception->getMessage()); if ($this->_app->isDeveloperMode()) { $messageData['trace'] = $exception->getTraceAsString(); } $formattedMessages['messages']['error'][] = $messageData; // keep HTTP code for response $responseHttpCode = $code; } // set HTTP code of the last error, Content-Type, and all rendered error messages to body $this->setHttpResponseCode($responseHttpCode); $this->setMimeType($this->_renderer->getMimeType()); $this->setBody($this->_renderer->render($formattedMessages)); return $this; }
/** * Render data using registered Renderer. * * @param mixed $data */ protected function _render($data) { $mimeType = $this->_renderer->getMimeType(); $body = $this->_renderer->render($data); $this->_response->setMimeType($mimeType)->setBody($body); }