Notify Twitter when StatusNet user faves/disfaves a Twitter notice

This commit is contained in:
Evan Prodromou 2010-09-05 01:07:11 -04:00
parent 26864d1453
commit 4deea8e2db
2 changed files with 105 additions and 0 deletions

View File

@ -428,4 +428,77 @@ class TwitterBridgePlugin extends Plugin
}
return true;
}
/**
* Notify remote users when their notices get favorited.
*
* @param Profile or User $profile of local user doing the faving
* @param Notice $notice being favored
* @return hook return value
*/
function onEndFavorNotice(Profile $profile, Notice $notice)
{
$flink = Foreign_link::getByUserID($profile->id,
TWITTER_SERVICE); // twitter service
if (empty($flink)) {
return true;
}
if (!TwitterOAuthClient::isPackedToken($flink->credentials)) {
$this->log(LOG_INFO, "Skipping fave processing for {$profile->id} since link is not OAuth.");
return true;
}
$status_id = twitter_status_id($notice);
if (empty($status_id)) {
return true;
}
$token = TwitterOAuthClient::unpackToken($flink->credentials);
$client = new TwitterOAuthClient($token->key, $token->secret);
$client->favoritesCreate($status_id);
return true;
}
/**
* Notify remote users when their notices get de-favorited.
*
* @param Profile $profile Profile person doing the de-faving
* @param Notice $notice Notice being favored
*
* @return hook return value
*/
function onEndDisfavorNotice(Profile $profile, Notice $notice)
{
$flink = Foreign_link::getByUserID($profile->id,
TWITTER_SERVICE); // twitter service
if (empty($flink)) {
return true;
}
if (!TwitterOAuthClient::isPackedToken($flink->credentials)) {
$this->log(LOG_INFO, "Skipping fave processing for {$profile->id} since link is not OAuth.");
return true;
}
$status_id = twitter_status_id($notice);
if (empty($status_id)) {
return true;
}
$token = TwitterOAuthClient::unpackToken($flink->credentials);
$client = new TwitterOAuthClient($token->key, $token->secret);
$client->favoritesDestroy($status_id);
return true;
}
}

View File

@ -292,4 +292,36 @@ class TwitterOAuthClient extends OAuthClient
$status = json_decode($response);
return $status;
}
/**
* Calls Twitter's /favorites/create API method
*
* @param int $id ID of the status to favorite
*
* @return object faved status
*/
function favoritesCreate($id)
{
$url = "http://api.twitter.com/1/favorites/create/$id.json";
$response = $this->oAuthPost($url);
$status = json_decode($response);
return $status;
}
/**
* Calls Twitter's /favorites/destroy API method
*
* @param int $id ID of the status to unfavorite
*
* @return object unfaved status
*/
function favoritesDestroy($id)
{
$url = "http://api.twitter.com/1/favorites/destroy/$id.json";
$response = $this->oAuthPost($url);
$status = json_decode($response);
return $status;
}
}