summaryrefslogtreecommitdiff
path: root/plugins/TwitterBridge
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/TwitterBridge')
-rw-r--r--plugins/TwitterBridge/TwitterBridgePlugin.php50
-rwxr-xr-xplugins/TwitterBridge/daemons/twitterstatusfetcher.php14
-rw-r--r--plugins/TwitterBridge/twitter.php14
-rw-r--r--[-rwxr-xr-x]plugins/TwitterBridge/twitterqueuehandler.php (renamed from plugins/TwitterBridge/daemons/twitterqueuehandler.php)40
4 files changed, 27 insertions, 91 deletions
diff --git a/plugins/TwitterBridge/TwitterBridgePlugin.php b/plugins/TwitterBridge/TwitterBridgePlugin.php
index a87ee2894..57b3c1c99 100644
--- a/plugins/TwitterBridge/TwitterBridgePlugin.php
+++ b/plugins/TwitterBridge/TwitterBridgePlugin.php
@@ -112,7 +112,9 @@ class TwitterBridgePlugin extends Plugin
strtolower(mb_substr($cls, 0, -6)) . '.php';
return false;
case 'TwitterOAuthClient':
- include_once INSTALLDIR . '/plugins/TwitterBridge/twitteroauthclient.php';
+ case 'TwitterQueueHandler':
+ include_once INSTALLDIR . '/plugins/TwitterBridge/' .
+ strtolower($cls) . '.php';
return false;
default:
return true;
@@ -139,48 +141,15 @@ class TwitterBridgePlugin extends Plugin
}
/**
- * broadcast the message when not using queuehandler
- *
- * @param Notice &$notice the notice
- * @param array $queue destination queue
- *
- * @return boolean hook return
- */
- function onUnqueueHandleNotice(&$notice, $queue)
- {
- if (($queue == 'twitter') && ($this->_isLocal($notice))) {
- broadcast_twitter($notice);
- return false;
- }
- return true;
- }
-
- /**
- * Determine whether the notice was locally created
- *
- * @param Notice $notice
- *
- * @return boolean locality
- */
- function _isLocal($notice)
- {
- return ($notice->is_local == Notice::LOCAL_PUBLIC ||
- $notice->is_local == Notice::LOCAL_NONPUBLIC);
- }
-
- /**
* Add Twitter bridge daemons to the list of daemons to start
*
* @param array $daemons the list fo daemons to run
*
* @return boolean hook return
- *
*/
function onGetValidDaemons($daemons)
{
array_push($daemons, INSTALLDIR .
- '/plugins/TwitterBridge/daemons/twitterqueuehandler.php');
- array_push($daemons, INSTALLDIR .
'/plugins/TwitterBridge/daemons/synctwitterfriends.php');
if (common_config('twitterimport', 'enabled')) {
@@ -191,6 +160,19 @@ class TwitterBridgePlugin extends Plugin
return true;
}
+ /**
+ * Register Twitter notice queue handler
+ *
+ * @param QueueManager $manager
+ *
+ * @return boolean hook return
+ */
+ function onEndInitializeQueueManager($manager)
+ {
+ $manager->connect('twitter', 'TwitterQueueHandler');
+ return true;
+ }
+
function onPluginVersion(&$versions)
{
$versions[] = array('name' => 'TwitterBridge',
diff --git a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php
index b4ca12be2..36732ce46 100755
--- a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php
+++ b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php
@@ -268,19 +268,7 @@ class TwitterStatusFetcher extends ParallelizingDaemon
}
- if (!Notice_inbox::pkeyGet(array('notice_id' => $notice->id,
- 'user_id' => $flink->user_id))) {
- // Add to inbox
- $inbox = new Notice_inbox();
-
- $inbox->user_id = $flink->user_id;
- $inbox->notice_id = $notice->id;
- $inbox->created = $notice->created;
- $inbox->source = NOTICE_INBOX_SOURCE_GATEWAY; // From a private source
-
- $inbox->insert();
-
- }
+ Inbox::insertNotice($flink->user_id, $notice->id);
$notice->blowCaches();
diff --git a/plugins/TwitterBridge/twitter.php b/plugins/TwitterBridge/twitter.php
index e133ce6f7..33dfb788b 100644
--- a/plugins/TwitterBridge/twitter.php
+++ b/plugins/TwitterBridge/twitter.php
@@ -269,19 +269,23 @@ function process_error($e, $flink, $notice)
common_log(LOG_WARNING, $logmsg);
- if ($code == 401) {
-
+ switch($code) {
+ case 401:
// Probably a revoked or otherwise bad access token - nuke!
-
remove_twitter_link($flink);
return true;
-
- } else {
+ break;
+ case 403:
+ // User has exceeder her rate limit -- toss the notice
+ return true;
+ break;
+ default:
// For every other case, it's probably some flakiness so try
// sending the notice again later (requeue).
return false;
+ break;
}
}
diff --git a/plugins/TwitterBridge/daemons/twitterqueuehandler.php b/plugins/TwitterBridge/twitterqueuehandler.php
index f0e76bb74..5089ca7b7 100755..100644
--- a/plugins/TwitterBridge/daemons/twitterqueuehandler.php
+++ b/plugins/TwitterBridge/twitterqueuehandler.php
@@ -1,4 +1,3 @@
-#!/usr/bin/env php
<?php
/*
* StatusNet - the distributed open-source microblogging tool
@@ -18,20 +17,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
+if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
-$shortoptions = 'i::';
-$longoptions = array('id::');
-
-$helptext = <<<END_OF_ENJIT_HELP
-Daemon script for pushing new notices to Twitter.
-
- -i --id Identity (default none)
-
-END_OF_ENJIT_HELP;
-
-require_once INSTALLDIR . '/scripts/commandline.inc';
-require_once INSTALLDIR . '/lib/queuehandler.php';
require_once INSTALLDIR . '/plugins/TwitterBridge/twitter.php';
class TwitterQueueHandler extends QueueHandler
@@ -41,33 +28,8 @@ class TwitterQueueHandler extends QueueHandler
return 'twitter';
}
- function start()
- {
- $this->log(LOG_INFO, "INITIALIZE");
- return true;
- }
-
function handle_notice($notice)
{
return broadcast_twitter($notice);
}
-
- function finish()
- {
- }
-
}
-
-if (have_option('i')) {
- $id = get_option_value('i');
-} else if (have_option('--id')) {
- $id = get_option_value('--id');
-} else if (count($args) > 0) {
- $id = $args[0];
-} else {
- $id = null;
-}
-
-$handler = new TwitterQueueHandler($id);
-
-$handler->runOnce();