<?php
-
/**
* This test class pretends to be an RSS aggregator. It logs notifications
* from the cloud.
exit(1);
}
+/**
+ * Dummy aggregator that acts as a proper notification handler. It
+ * doesn't do anything but respond correctly when notified via
+ * REST. Mostly, this is just and action I used to develop the plugin
+ * and easily test things end-to-end. I'm leaving it in here as it
+ * may be useful for developing the plugin further.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Zach Copley <zach@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ **/
class LoggingAggregatorAction extends Action
{
+ var $challenge = null;
+ var $url = null;
/**
* Initialization.
function prepare($args)
{
parent::prepare($args);
+
+ $this->url = $this->arg('url');
+ $this->challenge = $this->arg('challenge');
+
+ common_debug("args = " . var_export($this->args, true));
+ common_debug('url = ' . $this->url . ' challenge = ' . $this->challenge);
+
return true;
}
+ /**
+ * Handle the request
+ *
+ * @param array $args $_REQUEST data (unused)
+ *
+ * @return void
+ */
function handle($args)
{
parent::handle($args);
- if ($_SERVER['REQUEST_METHOD'] != 'POST') {
- $this->showError('This resource requires an HTTP POST.');
+ if (empty($this->url)) {
+ $this->showError(_('A URL parameter is required.'));
+ return;
}
- $this->url = $this->arg('url');
+ if (!empty($this->challenge)) {
- if (empty($this->url)) {
- $this->showError('Hey, you have to provide a url parameter.');
- }
+ // must be a GET
+ if ($_SERVER['REQUEST_METHOD'] != 'GET') {
+ $this->showError(_m('This resource requires an HTTP GET.'));
+ return;
+ }
- $this->ip = $_SERVER['REMOTE_ADDR'];
+ header('Content-Type: text/xml');
+ echo $this->challenge;
- common_log(LOG_INFO, 'RSSCloud Logging Aggregator - ' . $this->ip . ' claims the feed at ' .
- $this->url . ' has been updated.');
+ } else {
- header('Content-Type: text/xml');
- echo '<notifyResult success=\'true\' msg=\'Thanks for the update.\' />' . "\n";
+ // must be a POST
+ if ($_SERVER['REQUEST_METHOD'] != 'POST') {
+ $this->showError(_m('This resource requires an HTTP POST.'));
+ return;
+ }
- }
+ header('Content-Type: text/xml');
+ Echo "<notifyResult success='true' msg='Thanks for the update.' />\n";
+ }
+
+ $this->ip = $_SERVER['REMOTE_ADDR'];
+ common_log(LOG_INFO, 'RSSCloud Logging Aggregator - ' .
+ $this->ip . ' claims the feed at ' .
+ $this->url . ' has been updated.');
+ }
+
+ /**
+ * Show an XML error when things go badly
+ *
+ * @param string $msg the error message
+ *
+ * @return void
+ */
function showError($msg)
{
- header('HTTP/1.1 403 Forbidden');
+ header('HTTP/1.1 400 Bad Request');
header('Content-Type: text/xml');
echo "<?xml version='1.0'?>\n";
echo "<notifyResult success='false' msg='$msg' />\n";
- exit();
}
-
-}
\ No newline at end of file
+}