[twitter] Refactor common API calls on posts

- Re-activate post deletion API calls
This commit is contained in:
Hypolite Petovan 2021-10-02 16:48:23 -04:00
parent aec6e2f97e
commit dc04c0cfc4

View file

@ -510,7 +510,7 @@ function twitter_probe_detect(App $a, array &$hookData)
} }
} }
function twitter_action(App $a, $uid, $pid, $action) function twitter_api_post(string $apiPath, string $pid, int $uid)
{ {
if (empty($pid)) { if (empty($pid)) {
return; return;
@ -525,34 +525,21 @@ function twitter_action(App $a, $uid, $pid, $action)
$post = ['id' => $pid]; $post = ['id' => $pid];
Logger::debug('before action', ['action' => $action, 'pid' => $pid, 'data' => $post]); Logger::debug('before action', ['action' => $apiPath, 'pid' => $pid, 'data' => $post]);
$result = [];
try { try {
switch ($action) { $result = $connection->post($apiPath, $post);
case 'delete':
// To-Do: $result = $connection->post('statuses/destroy', $post);
break;
case 'like':
$result = $connection->post('favorites/create', $post);
if ($connection->getLastHttpCode() != 200) { if ($connection->getLastHttpCode() != 200) {
Logger::warning('Unable to create favorite', ['result' => $result]); Logger::warning('[twitter] API call unsuccessful', ['apiPath' => $apiPath, 'post' => $post, 'result' => $result]);
}
break;
case 'unlike':
$result = $connection->post('favorites/destroy', $post);
if ($connection->getLastHttpCode() != 200) {
Logger::warning('Unable to destroy favorite', ['result' => $result]);
}
break;
default:
Logger::warning('Unhandled action', ['action' => $action]);
} }
} catch (TwitterOAuthException $twitterOAuthException) { } catch (TwitterOAuthException $twitterOAuthException) {
Logger::warning('Unable to communicate with twitter', ['action' => $action, 'data' => $post, 'code' => $twitterOAuthException->getCode(), 'exception' => $twitterOAuthException]); Logger::warning('Unable to communicate with twitter', ['apiPath' => $apiPath, 'data' => $post, 'code' => $twitterOAuthException->getCode(), 'exception' => $twitterOAuthException]);
$result = false;
} }
Logger::info('after action', ['action' => $action, 'result' => $result]); Logger::info('after action', ['action' => $apiPath, 'result' => $result]);
return $result;
} }
function twitter_get_id(string $uri) function twitter_get_id(string $uri)
@ -624,16 +611,13 @@ function twitter_post_hook(App $a, array &$b)
} }
if (($b['verb'] == Activity::POST) && $b['deleted']) { if (($b['verb'] == Activity::POST) && $b['deleted']) {
twitter_action($a, $b['uid'], twitter_get_id($thr_parent['uri']), 'delete'); twitter_api_post('statuses/destroy', twitter_get_id($thr_parent['uri']), $b['uid']);
} }
if ($b['verb'] == Activity::LIKE) { if ($b['verb'] == Activity::LIKE) {
Logger::info('Like', ['uid' => $b['uid'], 'id' => twitter_get_id($b["thr-parent"])]); Logger::info('Like', ['uid' => $b['uid'], 'id' => twitter_get_id($b["thr-parent"])]);
if ($b['deleted']) {
twitter_action($a, $b["uid"], twitter_get_id($b["thr-parent"]), "unlike"); twitter_api_post($b['deleted'] ? 'favorite/destroy' : 'favorite/create', twitter_get_id($b["thr-parent"]), $b["uid"]);
} else {
twitter_action($a, $b["uid"], twitter_get_id($b["thr-parent"]), "like");
}
return; return;
} }
@ -641,7 +625,7 @@ function twitter_post_hook(App $a, array &$b)
if ($b['verb'] == Activity::ANNOUNCE) { if ($b['verb'] == Activity::ANNOUNCE) {
Logger::info('Retweet', ['uid' => $b['uid'], 'id' => twitter_get_id($b["thr-parent"])]); Logger::info('Retweet', ['uid' => $b['uid'], 'id' => twitter_get_id($b["thr-parent"])]);
if ($b['deleted']) { if ($b['deleted']) {
twitter_action($a, $b['uid'], twitter_get_id($thr_parent['extid']), 'delete'); twitter_api_post('statuses/destroy', twitter_get_id($thr_parent['extid']), $b['uid']);
} else { } else {
twitter_retweet($b["uid"], twitter_get_id($b["thr-parent"])); twitter_retweet($b["uid"], twitter_get_id($b["thr-parent"]));
} }
@ -769,8 +753,7 @@ function twitter_post_hook(App $a, array &$b)
$post['in_reply_to_status_id'] = twitter_get_id($thr_parent['uri']); $post['in_reply_to_status_id'] = twitter_get_id($thr_parent['uri']);
} }
$url = 'statuses/update'; $result = $connection->post('statuses/update', $post);
$result = $connection->post($url, $post);
Logger::info('twitter_post send', ['id' => $b['id'], 'result' => $result]); Logger::info('twitter_post send', ['id' => $b['id'], 'result' => $result]);
if (!empty($result->source)) { if (!empty($result->source)) {
@ -2145,13 +2128,7 @@ function twitter_retweet(int $uid, int $id, int $item_id = 0)
{ {
Logger::info('Retweeting', ['user' => $uid, 'id' => $id]); Logger::info('Retweeting', ['user' => $uid, 'id' => $id]);
$ckey = DI::config()->get('twitter', 'consumerkey'); $result = twitter_api_post('statuses/retweet', $id, $uid);
$csecret = DI::config()->get('twitter', 'consumersecret');
$otoken = DI::pConfig()->get($uid, 'twitter', 'oauthtoken');
$osecret = DI::pConfig()->get($uid, 'twitter', 'oauthsecret');
$connection = new TwitterOAuth($ckey, $csecret, $otoken, $osecret);
$result = $connection->post('statuses/retweet/' . $id);
Logger::info('Retweeted', ['user' => $uid, 'id' => $id, 'result' => $result]); Logger::info('Retweeted', ['user' => $uid, 'id' => $id, 'result' => $result]);