protected function prepareRate(Mage_Sales_Model_Quote_Address_Rate $rate, Mage_Api2_Model_Acl_Filter $filter) { // Get raw outbound data $data = []; $attributes = $filter->getAttributesToInclude(); $attributes = array_combine($attributes, $attributes); $attributes = array_merge($attributes, array_intersect_key($this->attributeMap, $attributes)); foreach ($attributes as $externalKey => $internalKey) { $data[$externalKey] = $rate->getDataUsingMethod($internalKey); } // Fire event $data = new Varien_Object($data); Mage::dispatchEvent('aoe_cartapi_shipping_method_prepare', ['data' => $data, 'filter' => $filter, 'resource' => $rate]); $data = $data->getData(); // Filter outbound data $data = $filter->out($data); // Fix data types $data = $this->fixTypes($data); // Add null values for missing data foreach ($filter->getAttributesToInclude() as $code) { if (!array_key_exists($code, $data)) { $data[$code] = null; } } // Sort the result by key ksort($data); return $data; }