. namespace hoplite\http; require_once HOPLITE_ROOT . '/http/action.php'; require_once HOPLITE_ROOT . '/http/response_code.php'; /*! This abstract class is the base for handling all requests and filling out response objects. */ class RestAction extends Action { /*! Performs the action and fills out the response's data model. */ public function Invoke(Request $request, Response $response) { $valid_methods = array('options', 'get', 'post', 'delete', 'put'); $method = strtolower($request->http_method); if (!in_array($method, $valid_methods)) { $this->controller()->SendResponseCode(ResponseCode::METHOD_NOT_ALLOWED); return; } $invoke = 'Do' . ucwords($method); $this->$invoke($request, $response); } /*! Methods for each of the different HTTP methods. */ public function DoOptions(Request $request, Response $response) {} public function DoGet(Request $request, Response $response) { $this->controller()->SendReseponseCode(ResponseCode::METHOD_NOT_ALLOWED); } public function DoPost(Request $request, Response $response) { $this->controller()->SendReseponseCode(ResponseCode::METHOD_NOT_ALLOWED); } public function DoDelete(Request $request, Response $response) { $this->controller()->SendReseponseCode(ResponseCode::METHOD_NOT_ALLOWED); } public function DoPut(Request $request, Response $response) { $this->controller()->SendReseponseCode(ResponseCode::METHOD_NOT_ALLOWED); } }