. namespace hoplite\http; require_once HOPLITE_ROOT . '/http/action_controller.php'; require_once HOPLITE_ROOT . '/http/response_code.php'; require_once HOPLITE_ROOT . '/http/rest_action.php'; /*! This abstract class adapts a RESTful interface into a web frontend that only supports GET and POST. The |action| parameter will control what is performed. */ abstract class RestAdapter extends ActionController { /*! @var RestAction The RESTful interface which will be adapted. */ protected $action = NULL; public function FilterRequest(Request $request, Response $response) { $this->action = $this->_GetRestAction(); } /*! Gets the RestAction that will be adapted. */ protected abstract function _GetRestAction(); public function ActionFetch(Request $request, Response $response) { if ($request->http_method != 'GET' && $request->http_method != 'POST') { $response->response_code = ResponseCode::METHOD_NOT_ALLOWED; return; } $this->action->DoGet($request, $response); } public function ActionInsert(Request $request, Response $response) { if ($request->http_method != 'POST') { $response->response_code = ResponseCode::METHOD_NOT_ALLOWED; return; } $this->action->DoPut($request, $response); } public function ActionUpdate(Request $request, Response $response) { if ($request->http_method != 'POST') { $response->response_code = ResponseCode::METHOD_NOT_ALLOWED; return; } $this->action->DoPost($request, $response); } public function ActionDelete(Request $request, Response $response) { if ($request->http_method != 'POST') { $response->response_code = ResponseCode::METHOD_NOT_ALLOWED; return; } $this->action->DoDelete($request, $response); } }