summaryrefslogtreecommitdiff
path: root/plugins/RSSCloud/RSSCloudNotifier.php
diff options
context:
space:
mode:
authorZach Copley <zach@status.net>2009-09-16 19:20:25 +0000
committerZach Copley <zach@status.net>2010-01-05 22:59:42 -0800
commit391003c3c65572dd156244390d8eedd2dfd96f90 (patch)
tree7c6627cefa6a53f723f02c4f5eb6820a754074ab /plugins/RSSCloud/RSSCloudNotifier.php
parent4e033138b31ffbc9a0f7d75d8bea7518de617b6c (diff)
Some foundational work. Not much to see here. Move along.
Diffstat (limited to 'plugins/RSSCloud/RSSCloudNotifier.php')
-rw-r--r--plugins/RSSCloud/RSSCloudNotifier.php93
1 files changed, 93 insertions, 0 deletions
diff --git a/plugins/RSSCloud/RSSCloudNotifier.php b/plugins/RSSCloud/RSSCloudNotifier.php
new file mode 100644
index 000000000..65bfd032e
--- /dev/null
+++ b/plugins/RSSCloud/RSSCloudNotifier.php
@@ -0,0 +1,93 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Class to ping an rssCloud hub when a feed has been updated
+ *
+ * PHP version 5
+ *
+ * LICENCE: 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/>.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Zach Copley <zach@status.net>
+ * @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 postUpdate($endpoint, $feed) {
+ common_debug("CloudNotifier->notify: $feed");
+
+ $params = 'url=' . urlencode($feed);
+
+ $result = $this->httpPost($endpoint, $params);
+
+ if ($result) {
+ common_debug('success notifying cloud');
+ } else {
+ common_debug('failure notifying cloud');
+ }
+
+ }
+
+ function userAgent()
+ {
+ return 'rssCloudPlugin/' . RSSCLOUDPLUGIN_VERSION .
+ ' StatusNet/' . STATUSNET_VERSION;
+ }
+
+ private function httpPost($url, $params) {
+
+ common_debug('params: ' . var_export($params, true));
+
+ $options = array(CURLOPT_URL => $url,
+ CURLOPT_POST => true,
+ CURLOPT_POSTFIELDS => $params,
+ CURLOPT_USERAGENT => $this->userAgent(),
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_FAILONERROR => true,
+ CURLOPT_HEADER => false,
+ CURLOPT_FOLLOWLOCATION => true,
+ CURLOPT_CONNECTTIMEOUT => 5,
+ CURLOPT_TIMEOUT => 5);
+
+ $ch = curl_init();
+ curl_setopt_array($ch, $options);
+
+ $response = curl_exec($ch);
+
+ $info = curl_getinfo($ch);
+
+ curl_close($ch);
+
+ common_debug('curl response: ' . var_export($response, true));
+ common_debug('curl info: ' . var_export($info, true));
+
+ if ($info['http_code'] == 200) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+}
+
+