public function sendMessage(Xcom_Xfabric_Model_Message $message, array $options = array()) { $requestTopic = $message->getTopic(); $requestHeaders = serialize($message->getHeaders()); Mage::getSingleton('xcom_xfabric/debug')->start('Send Request [STUB] ' . $requestTopic, $requestTopic, $requestHeaders, json_encode($message->getMessageData())); if (isset($options['synchronous'])) { try { $response = Mage::getModel('xcom_stub/message')->receive($message); if ($response && !is_null($response->getMessageId())) { Mage::dispatchEvent('response_message_received', array('message' => $response)); Mage::getSingleton('xcom_xfabric/debug')->stop('Receive Response [STUB] ' . $requestTopic, $response->getTopic(), $requestHeaders, serialize($response->getBody())); } else { //$response = Mage::helper('xcom_xfabric')->getMessage($requestTopic); Mage::getSingleton('xcom_xfabric/debug')->stop('No Response was received [STUB] ' . $requestTopic, $requestTopic, $requestHeaders, ''); } return $response; } catch (Exception $e) { Mage::getSingleton('xcom_xfabric/debug')->stop('No Response was received [STUB] ' . $requestTopic, $requestTopic, $requestHeaders, $e->getMessage()); } } else { Mage::getSingleton('xcom_xfabric/debug')->stop('No Response is been waiting [STUB] ' . $requestTopic, '', '', json_encode($message->getMessageData())); } }
public function sendMessage(Xcom_Xfabric_Model_Message $message, array $options = array()) { $url = $this->prepareUri($message->getTopic()); Mage::getSingleton('xcom_xfabric/debug')->start('Send Request to ' . $url->getUri(), $message->getTopic(), serialize($message->getHeaders()), isset($options['message_data']) ? $options['message_data'] : ''); $adapter = $this->_getAdapter(); $adapter->setConfig($this->_config); $adapter->write(Zend_Http_Client::POST, $url, '1.1', $this->_prepareHeaders($message->getHeaders()), $message->getBody()); $result = $adapter->read(); $error = ''; $httpCode = $adapter->getInfo(CURLINFO_HTTP_CODE); if ($adapter->getErrno()) { $error = $adapter->getError(); } if (!$result || $error) { Mage::getSingleton('xcom_xfabric/debug')->stop('Unable to complete the request.', $message->getTopic(), $result, 'Unable to complete the request. ' . $error); switch ($httpCode) { case '400': $errorText = 'Bad request. '; break; case '401': $errorText = 'Request is unauthorized. '; break; case '403': $errorText = 'Request is forbidden. '; break; case '404': $errorText = 'Not Found. '; break; case '413': $errorText = 'Message is too large'; break; default: $errorText = ''; break; } throw Mage::exception('Xcom_Xfabric', Mage::helper('xcom_xfabric')->__('Unable to complete the request. ') . $errorText . $error); } $zendHttpCode = Zend_Http_Response::extractCode($result); $zendHttpMessage = Zend_Http_Response::extractMessage($result); $zendHttpBody = Zend_Http_Response::extractBody($result); if ($zendHttpCode != '200') { Mage::getSingleton('xcom_xfabric/debug')->stop('Unable to complete the request.', $message->getTopic(), $result, $zendHttpMessage . ' ' . $zendHttpBody); throw Mage::exception('Xcom_Xfabric', $zendHttpMessage . ' ' . $zendHttpBody, $zendHttpCode); } if (!empty($options['synchronous']) && !$error) { $response = $this->_getResponseMessage($message->getCorrelationId()); if (!$response) { Mage::getSingleton('xcom_xfabric/debug')->stop('Response is not received', $message->getTopic(), $result, 'No Errors'); throw Mage::exception('Xcom_Xfabric', Mage::helper('xcom_xfabric')->__('Unable to complete the request. Please refer to the User Guide ' . 'to verify your settings and try again. If the error persists, contact your administrator.')); } return $response; } Mage::getSingleton('xcom_xfabric/debug')->stop('No Response is been waiting', $message->getTopic(), $result, $error); return true; }