/** * * @throws Exception * @return Varien_Object */ public function process() { $cacheId = $this->_getCacheKey(); $response = $cacheId ? Mage::app()->loadCache($cacheId) : false; if ($response) { $response = unserialize($response); } if (!$response instanceof Varien_Object) { $client = new Zend_Http_Client(self::API_URI, $this->_clientConfig); $client->setMethod(Zend_Http_Client::POST); $client->setParameterPost($this->getParams()); $result = $client->request(); $data = Zend_Json::decode($result->getBody()); if ($data['status'] != 201) { throw new Exception("Premailer failed to run: {$data['message']} #{$data['status']}"); } $htmlClient = new Zend_Http_Client($data['documents']['html'], $this->_clientConfig); $textClient = new Zend_Http_Client($data['documents']['txt'], $this->_clientConfig); $response = new Varien_Object(); $response->setVersion($data['version']); $response->setHtml($htmlClient->request()->getBody()); $response->setText($textClient->request()->getBody()); if ($cacheId) { $data = Mage::app()->saveCache(serialize($response), $cacheId, array(self::CACHE_KEY), 60 * 60); } } return $response; }