public function testMatch() { $route = new Mage_Webapi_Controller_Router_Route_Webapi(Mage_Webapi_Controller_Router_Route_Webapi::getApiRoute()); $testApiType = 'test_api'; $testUri = str_replace(':api_type', $testApiType, Mage_Webapi_Controller_Router_Route_Webapi::getApiRoute()); $request = new Zend_Controller_Request_Http(); $request->setRequestUri($testUri); $match = $route->match($request); $this->assertEquals($testApiType, $match['api_type']); }
/** * Generate resource location. * * @param Mage_Core_Model_Abstract $createdItem * @return string URL */ protected function _getCreatedItemLocation($createdItem) { $apiTypeRoute = $this->_routeFactory->createRoute('Mage_Webapi_Controller_Router_Route_Webapi', Mage_Webapi_Controller_Router_Route_Webapi::getApiRoute()); $resourceName = $this->_request->getResourceName(); $routeToItem = $this->_routeFactory->createRoute('Zend_Controller_Router_Route', $this->_apiConfig->getRestRouteToItem($resourceName)); $chain = $apiTypeRoute->chain($routeToItem); $params = array(Mage_Webapi_Controller_Router_Route_Webapi::PARAM_API_TYPE => $this->_request->getApiType(), Mage_Webapi_Controller_Router_Route_Rest::PARAM_ID => $createdItem->getId(), Mage_Webapi_Controller_Router_Route_Rest::PARAM_VERSION => $this->_request->getResourceVersion()); $uri = $chain->assemble($params); return '/' . $uri; }
/** * Determine current API type using application request (not web API request). * * @return string * @throws Mage_Core_Exception * @throws Mage_Webapi_Exception If requested API type is invalid. */ public function determineApiType() { if (is_null($this->_apiType)) { $request = $this->_application->getRequest(); $apiRoute = $this->_routeFactory->createRoute('Mage_Webapi_Controller_Router_Route_Webapi', Mage_Webapi_Controller_Router_Route_Webapi::getApiRoute()); if (!($apiTypeMatch = $apiRoute->match($request, true))) { throw new Mage_Webapi_Exception($this->_helper->__('Request does not match any API type route.'), Mage_Webapi_Exception::HTTP_BAD_REQUEST); } $apiType = $apiTypeMatch[Mage_Webapi_Controller_Router_Route_Webapi::PARAM_API_TYPE]; if (!in_array($apiType, $this->getListOfAvailableApiTypes())) { throw new Mage_Webapi_Exception($this->_helper->__('The "%s" API type is not defined.', $apiType), Mage_Webapi_Exception::HTTP_BAD_REQUEST); } $this->_apiType = $apiType; } return $this->_apiType; }