return null;
}
- $ckey = DI::config()->get('twitter', 'consumerkey');
- $csecret = DI::config()->get('twitter', 'consumersecret');
- $otoken = DI::pConfig()->get($uid, 'twitter', 'oauthtoken');
- $osecret = DI::pConfig()->get($uid, 'twitter', 'oauthsecret');
-
- // If the addon is not configured (general or for this user) quit here
- if (empty($ckey) || empty($csecret) || empty($otoken) || empty($osecret)) {
- return null;
- }
-
- try {
- $connection = new TwitterOAuth($ckey, $csecret, $otoken, $osecret);
- $result = $connection->post($apiPath, ['screen_name' => $contact['nick']]);
- Logger::info('[twitter] API call successful', ['apiPath' => $apiPath, 'result' => $result]);
- return true;
- } catch (Exception $e) {
- Logger::notice('[twitter] API call failed', ['apiPath' => $apiPath, 'uid' => $uid, 'url' => $contact['url'], 'exception' => $e]);
- return false;
- }
+ return twitter_api_call($uid, $apiPath, ['screen_name' => $contact['nick']]);
}
function twitter_jot_nets(App $a, array &$jotnets_fields)
}
}
-function twitter_api_post(string $apiPath, string $pid, int $uid)
+function twitter_api_post(string $apiPath, string $pid, int $uid): ?bool
{
if (empty($pid)) {
return false;
}
+ return twitter_api_call($uid, $apiPath, ['id' => $pid]);
+}
+
+function twitter_api_call(int $uid, string $apiPath, array $parameters = []): ?bool
+{
$ckey = DI::config()->get('twitter', 'consumerkey');
$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);
-
- $post = ['id' => $pid];
-
- Logger::debug('before action', ['action' => $apiPath, 'pid' => $pid, 'data' => $post]);
+ // If the addon is not configured (general or for this user) quit here
+ if (empty($ckey) || empty($csecret) || empty($otoken) || empty($osecret)) {
+ return null;
+ }
try {
- $result = $connection->post($apiPath, $post);
+ $connection = new TwitterOAuth($ckey, $csecret, $otoken, $osecret);
+ $result = $connection->post($apiPath, $parameters);
+
if ($connection->getLastHttpCode() != 200) {
- Logger::warning('[twitter] API call unsuccessful', ['apiPath' => $apiPath, 'post' => $post, 'result' => $result]);
+ throw new Exception($result->errors[0]->message ?? json_encode($result), $connection->getLastHttpCode());
}
- } catch (TwitterOAuthException $twitterOAuthException) {
- Logger::warning('Unable to communicate with twitter', ['apiPath' => $apiPath, 'data' => $post, 'code' => $twitterOAuthException->getCode(), 'exception' => $twitterOAuthException]);
- $result = false;
- }
- Logger::info('after action', ['action' => $apiPath, 'result' => $result]);
+ if (!empty($result->errors)) {
+ throw new Exception($result->errors[0]->message, $result->errors[0]->code);
+ }
+
+ Logger::info('[twitter] API call successful', ['apiPath' => $apiPath, 'parameters' => $parameters]);
+ Logger::debug('[twitter] API call result', ['apiPath' => $apiPath, 'parameters' => $parameters, 'result' => $result]);
- return $result;
+ return true;
+ } catch (TwitterOAuthException $twitterOAuthException) {
+ Logger::warning('Unable to communicate with twitter', ['apiPath' => $apiPath, 'parameters' => $parameters, 'code' => $twitterOAuthException->getCode(), 'exception' => $twitterOAuthException]);
+ return false;
+ } catch (Exception $e) {
+ Logger::notice('[twitter] API call failed', ['apiPath' => $apiPath, 'parameters' => $parameters, 'code' => $e->getCode(), 'message' => $e->getMessage()]);
+ return false;
+ }
}
function twitter_get_id(string $uri)