. * * @category Plugin * @package StatusNet * @author Zach Copley * @copyright 2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ if (!defined('STATUSNET')) { exit(1); } class RSSCloudNotifier { function challenge($endpoint, $feed) { $code = common_confirmation_code(128); $params = array('url' => $feed, 'challenge' => $code); $url = $endpoint . '?' . http_build_query($params); try { $client = new HTTPClient(); $response = $client->get($url); } catch (HTTP_Request2_Exception $e) { common_log(LOG_INFO, 'RSSCloud plugin - failure testing notify handler ' . $endpoint . ' - ' . $e->getMessage()); return false; } // Check response is betweet 200 and 299 and body contains challenge data $status = $response->getStatus(); $body = $response->getBody(); if ($status >= 200 && $status < 300) { if (strpos($body, $code) !== false) { common_log(LOG_INFO, 'RSSCloud plugin - ' . "success testing notify handler: $endpoint"); return true; } else { common_log(LOG_INFO, 'RSSCloud plugin - ' . 'challenge/repsonse failed for notify handler ' . $endpoint); common_debug('body = ' . var_export($body, true)); return false; } } else { common_log(LOG_INFO, 'RSSCloud plugin - ' . "failure testing notify handler: $endpoint " . ' - got HTTP ' . $status); common_debug('body = ' . var_export($body, true)); return false; } } function postUpdate($endpoint, $feed) { $headers = array(); $postdata = array('url' => $feed); try { $client = new HTTPClient(); $response = $client->post($endpoint, $headers, $postdata); } catch (HTTP_Request2_Exception $e) { common_log(LOG_INFO, 'RSSCloud plugin - failure notifying ' . $endpoint . ' that feed ' . $feed . ' has changed: ' . $e->getMessage()); return false; } $status = $response->getStatus(); if ($status >= 200 && $status < 300) { common_log(LOG_INFO, 'RSSCloud plugin - success notifying ' . $endpoint . ' that feed ' . $feed . ' has changed.'); return true; } else { common_log(LOG_INFO, 'RSSCloud plugin - failure notifying ' . $endpoint . ' that feed ' . $feed . ' has changed: got HTTP ' . $status); common_debug('body = ' . var_export($response->getBody(), true)); return false; } } }