| 
									
										
										
										
											2009-09-14 01:39:54 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * This test class pretends to be an RSS aggregator. It logs notifications | 
					
						
							|  |  |  |  * from the cloud. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * PHP version 5 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @category Plugin | 
					
						
							|  |  |  |  * @package  StatusNet | 
					
						
							|  |  |  |  * @author   Zach Copley <zach@status.net> | 
					
						
							|  |  |  |  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 | 
					
						
							|  |  |  |  * @link     http://status.net/ | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * StatusNet - the distributed open-source microblogging tool | 
					
						
							|  |  |  |  * Copyright (C) 2009, StatusNet, Inc. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as published by | 
					
						
							|  |  |  |  * the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  |  * (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU Affero General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (!defined('STATUSNET')) { | 
					
						
							|  |  |  |     exit(1); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-11 17:50:10 -08:00
										 |  |  | /** | 
					
						
							|  |  |  |  * 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/ | 
					
						
							|  |  |  |  **/ | 
					
						
							| 
									
										
										
										
											2009-09-14 01:39:54 +00:00
										 |  |  | class LoggingAggregatorAction extends Action | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-12-05 07:17:51 +00:00
										 |  |  |     var $challenge = null; | 
					
						
							|  |  |  |     var $url       = null; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-14 01:39:54 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Initialization. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param array $args Web and URL arguments | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return boolean false if user doesn't exist | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function prepare($args) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         parent::prepare($args); | 
					
						
							| 
									
										
										
										
											2009-12-05 07:17:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $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); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-14 01:39:54 +00:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-11 17:50:10 -08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Handle the request | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param array $args $_REQUEST data (unused) | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return void | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-09-14 01:39:54 +00:00
										 |  |  |     function handle($args) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         parent::handle($args); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-05 07:17:51 +00:00
										 |  |  |         if (empty($this->url)) { | 
					
						
							| 
									
										
										
										
											2010-09-18 11:25:11 +02:00
										 |  |  |             $this->showError(_('A URL parameter is required.')); | 
					
						
							| 
									
										
										
										
											2009-12-05 07:17:51 +00:00
										 |  |  |             return; | 
					
						
							| 
									
										
										
										
											2009-09-14 01:39:54 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-05 07:17:51 +00:00
										 |  |  |         if (!empty($this->challenge)) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // must be a GET
 | 
					
						
							|  |  |  |             if ($_SERVER['REQUEST_METHOD'] != 'GET') { | 
					
						
							| 
									
										
										
										
											2010-09-18 11:25:11 +02:00
										 |  |  |                 $this->showError(_m('This resource requires an HTTP GET.')); | 
					
						
							| 
									
										
										
										
											2009-12-05 07:17:51 +00:00
										 |  |  |                 return; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             header('Content-Type: text/xml'); | 
					
						
							| 
									
										
										
										
											2009-12-07 09:10:04 +00:00
										 |  |  |             echo $this->challenge; | 
					
						
							| 
									
										
										
										
											2009-12-05 07:17:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // must be a POST
 | 
					
						
							|  |  |  |             if ($_SERVER['REQUEST_METHOD'] != 'POST') { | 
					
						
							| 
									
										
										
										
											2010-09-18 11:25:11 +02:00
										 |  |  |                 $this->showError(_m('This resource requires an HTTP POST.')); | 
					
						
							| 
									
										
										
										
											2009-12-05 07:17:51 +00:00
										 |  |  |                 return; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             header('Content-Type: text/xml'); | 
					
						
							| 
									
										
										
										
											2009-12-14 21:24:49 +00:00
										 |  |  |             Echo "<notifyResult success='true' msg='Thanks for the update.' />\n"; | 
					
						
							| 
									
										
										
										
											2009-09-14 01:39:54 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-05 07:17:51 +00:00
										 |  |  |         $this->ip = $_SERVER['REMOTE_ADDR']; | 
					
						
							| 
									
										
										
										
											2009-09-14 01:39:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-14 21:24:49 +00:00
										 |  |  |         common_log(LOG_INFO, 'RSSCloud Logging Aggregator - ' . | 
					
						
							|  |  |  |                    $this->ip . ' claims the feed at ' . | 
					
						
							| 
									
										
										
										
											2009-09-14 01:39:54 +00:00
										 |  |  |                    $this->url . ' has been updated.'); | 
					
						
							| 
									
										
										
										
											2009-12-05 07:17:51 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-09-14 01:39:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-11 17:50:10 -08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Show an XML error when things go badly | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $msg the error message | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return void | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-09-14 01:39:54 +00:00
										 |  |  |     function showError($msg) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-12-05 07:17:51 +00:00
										 |  |  |         header('HTTP/1.1 400 Bad Request'); | 
					
						
							| 
									
										
										
										
											2009-09-14 01:39:54 +00:00
										 |  |  |         header('Content-Type: text/xml'); | 
					
						
							|  |  |  |         echo "<?xml version='1.0'?>\n"; | 
					
						
							|  |  |  |         echo "<notifyResult success='false' msg='$msg' />\n"; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-09-18 11:25:11 +02:00
										 |  |  | } |