. */ if (!defined('STATUSNET')) { exit(1); } class WebmentionAction extends Action { protected function handle() { GNUsocial::setApi(true); // Minimize error messages to aid in debugging parent::handle(); if ($this->isPost()) { return $this->handlePost(); } return false; } function handlePost() { $source = $this->arg('source'); $target = $this->arg('target'); header('Content-Type: text/plain; charset=utf-8'); if(!$source) { echo _m('"source" is missing')."\n"; throw new ClientException(_m('"source" is missing'), 400); } if(!$target) { echo _m('"target" is missing')."\n"; throw new ClientException(_m('"target" is missing'), 400); } $response = linkback_get_source($source, $target); if(!$response) { echo _m('Source does not link to target.')."\n"; throw new ClientException(_m('Source does not link to target.'), 400); } $notice = linkback_get_target($target); if(!$notice) { echo _m('Target not found')."\n"; throw new ClientException(_m('Target not found'), 404); } $url = linkback_save($source, $target, $response, $notice); if(!$url) { echo _m('An error occured while saving.')."\n"; throw new ClientException(_m('An error occured while saving.'), 500); } echo $url."\n"; return true; } }