]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Ticket #2205: pass geo locations over Twitter bridge (will only be used if enabled...
authorBrion Vibber <brion@pobox.com>
Wed, 14 Apr 2010 13:45:00 +0000 (15:45 +0200)
committerBrion Vibber <brion@pobox.com>
Wed, 14 Apr 2010 13:45:00 +0000 (15:45 +0200)
plugins/TwitterBridge/twitter.php
plugins/TwitterBridge/twitterbasicauthclient.php
plugins/TwitterBridge/twitteroauthclient.php

index 2805b3ab565d99e2c68caf9f49310119e9b3f054..21adc7a90814dcc4c33c51e3a80ee1db99e3e1e0 100644 (file)
@@ -124,15 +124,36 @@ function broadcast_twitter($notice)
     return true;
 }
 
+/**
+ * Pull any extra information from a notice that we should transfer over
+ * to Twitter beyond the notice text itself.
+ *
+ * @param Notice $notice
+ * @return array of key-value pairs for Twitter update submission
+ * @access private
+ */
+function twitter_update_params($notice)
+{
+    $params = array();
+    if ($notice->lat || $notice->lon) {
+        $params['lat'] = $notice->lat;
+        $params['long'] = $notice->lon;
+    }
+    return $params;
+}
+
+
 function broadcast_oauth($notice, $flink) {
     $user = $flink->getUser();
     $statustxt = format_status($notice);
+    $params = twitter_update_params($notice);
+
     $token = TwitterOAuthClient::unpackToken($flink->credentials);
     $client = new TwitterOAuthClient($token->key, $token->secret);
     $status = null;
 
     try {
-        $status = $client->statusesUpdate($statustxt);
+        $status = $client->statusesUpdate($statustxt, $params);
     } catch (OAuthClientException $e) {
         return process_error($e, $flink, $notice);
     }
@@ -171,12 +192,13 @@ function broadcast_basicauth($notice, $flink)
     $user = $flink->getUser();
 
     $statustxt = format_status($notice);
+    $params = twitter_update_params($notice);
 
     $client = new TwitterBasicAuthClient($flink);
     $status = null;
 
     try {
-        $status = $client->statusesUpdate($statustxt);
+        $status = $client->statusesUpdate($statustxt, $params);
     } catch (BasicAuthException $e) {
         return process_error($e, $flink, $notice);
     }
index fd26293f9e40acf54ff4e63402c61813866cbd99..2c18c94695619ef2ad37cbd648cc157962e7f796 100644 (file)
@@ -76,18 +76,21 @@ class TwitterBasicAuthClient
     /**
      * Calls Twitter's /statuses/update API method
      *
-     * @param string $status                text of the status
-     * @param int    $in_reply_to_status_id optional id of the status it's
-     *                                      a reply to
+     * @param string $status  text of the status
+     * @param mixed  $params  optional other parameters to pass to Twitter,
+     *                        as defined. For back-compatibility, if an int
+     *                        is passed we'll consider it a reply-to ID.
      *
      * @return mixed the status
      */
     function statusesUpdate($status, $in_reply_to_status_id = null)
     {
         $url      = 'https://twitter.com/statuses/update.json';
-        $params   = array('status' => $status,
-                          'source' => common_config('integration', 'source'),
-                          'in_reply_to_status_id' => $in_reply_to_status_id);
+        if (is_numeric($params)) {
+            $params = array('in_reply_to_status_id' => intval($params));
+        }
+        $params['status'] = $status;
+        $params['source'] = common_config('integration', 'source');
         $response = $this->httpRequest($url, $params);
         $status   = json_decode($response);
         return $status;
index 93f6aadd1e01e087628512c77bee9be9577d6d22..d895d8c73cbbac3d754f9694f7d18884bff223d0 100644 (file)
@@ -166,17 +166,22 @@ class TwitterOAuthClient extends OAuthClient
     /**
      * Calls Twitter's /statuses/update API method
      *
-     * @param string $status                text of the status
-     * @param int    $in_reply_to_status_id optional id of the status it's
-     *                                      a reply to
+     * @param string $status  text of the status
+     * @param mixed  $params  optional other parameters to pass to Twitter,
+     *                        as defined. For back-compatibility, if an int
+     *                        is passed we'll consider it a reply-to ID.
      *
      * @return mixed the status
      */
-    function statusesUpdate($status, $in_reply_to_status_id = null)
+    function statusesUpdate($status, $params=array())
     {
         $url      = 'https://twitter.com/statuses/update.json';
-        $params   = array('status' => $status,
-            'in_reply_to_status_id' => $in_reply_to_status_id);
+        if (is_numeric($params)) {
+            $params = array('in_reply_to_status_id' => intval($params));
+        }
+        $params['status'] = $status;
+        // We don't have to pass 'source' as the oauth key is tied to an app.
+
         $response = $this->oAuthPost($url, $params);
         $status   = json_decode($response);
         return $status;