. */ if (!defined('GNUSOCIAL') && !defined('STATUSNET')) { exit(1); } abstract class AtompubAction extends ApiAuthAction { protected function prepare(array $args=array()) { parent::prepare($args); return $this->atompubPrepare(); } protected function atompubPrepare() { return true; } protected function handle() { parent::handle(); switch ($_SERVER['REQUEST_METHOD']) { case 'HEAD': $this->handleHead(); break; case 'GET': $this->handleGet(); break; case 'POST': $this->handlePost(); break; case 'DELETE': $this->handleDelete(); break; default: // TRANS: Client exception thrown when using an unsupported HTTP method. throw new ClientException(_('HTTP method not supported.'), 405); } return true; } protected function handleHead() { $this->handleGet(); } protected function handleGet() { throw new ClientException(_('HTTP method not supported.'), 405); } protected function handlePost() { throw new ClientException(_('HTTP method not supported.'), 405); } protected function handleDelete() { throw new ClientException(_('HTTP method not supported.'), 405); } function isReadOnly($args) { // GET/HEAD is readonly, POST and DELETE (etc?) are readwrite. return in_array($_SERVER['REQUEST_METHOD'], array('GET', 'HEAD')); } function requiresAuth() { // GET/HEAD don't require auth, POST and DELETE (etc?) require it. return !in_array($_SERVER['REQUEST_METHOD'], array('GET', 'HEAD')); } }