]> git.mxchange.org Git - friendica-addons.git/commitdiff
[twitter] Combine POST calls in a single function for centralized logging
authorHypolite Petovan <hypolite@mrpetovan.com>
Sat, 9 Oct 2021 05:55:26 +0000 (01:55 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Sat, 9 Oct 2021 06:05:25 +0000 (02:05 -0400)
twitter/twitter.php

index e07cc74f71b4ffbcbdacc9c77991c48d326130d3..6a4df87799ce7b94c8dc43168366466924e8d709 100644 (file)
@@ -189,25 +189,7 @@ function twitter_api_contact(string $apiPath, array $contact, int $uid): ?bool
                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)
@@ -518,36 +500,50 @@ function twitter_probe_detect(App $a, array &$hookData)
        }
 }
 
-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)