]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Twitter-compatible API: /account/update_location implemented
authorzach <zach@copley.name>
Sun, 20 Jul 2008 04:47:56 +0000 (00:47 -0400)
committerzach <zach@copley.name>
Sun, 20 Jul 2008 04:47:56 +0000 (00:47 -0400)
darcs-hash:20080720044756-ca946-2e0823506b352d8364f84b77af644b8fc7f1a00d.gz

actions/twitapiaccount.php
actions/twitapistatuses.php
lib/twitterapi.php

index 0198671e77aeeb6bfe51759ac7a5de773514872f..3a0fd85447ddb8a130bfd664ce87758cfd025add 100644 (file)
@@ -46,10 +46,48 @@ class TwitapiaccountAction extends TwitterapiAction {
        
        function update_location($args, $apidata) {
                parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
+
+               $location = trim($this->arg('location'));
+
+               if (!is_null($location) && strlen($location) > 255) {
+                       
+                       // XXX: Twitter just truncates and runs with it.
+                       header('HTTP/1.1 406 Not Acceptable');                  
+                       print "That's too long. Max notice size is 255 chars.\n";
+                       exit();
+               }
+               
+               $user = $apidata['user'];
+               $profile = $user->getProfile();
+               
+               if (!$profile) {
+                       common_server_error(_('User has no profile.'));
+                       exit();
+               }
+               
+               $orig_profile = clone($profile);
+               $profile->location = $location;
+               
+               common_debug('Old profile: ' . common_log_objstring($orig_profile), __FILE__);
+               common_debug('New profile: ' . common_log_objstring($profile), __FILE__);
+
+               $result = $profile->update($orig_profile);
+
+               if (!$result) {
+                       common_log_db_error($profile, 'UPDATE', __FILE__);
+                       common_server_error(_('Couldn\'t save profile.'));
+                       exit();
+               }
+
+               common_broadcast_profile($profile);
+               
+               $apidata['api_arg'] = $user->id;
+               $this->show($args, $apidata);
+               
                exit();
        }
-       
+
+
        function update_delivery_device($args, $apidata) {
                parent::handle($args);
                common_server_error("API method under construction.", $code=501);
index 96931fec634949caef800d55219a1d46ce25d31e..d770d6ff39d96154256267ea862cc1ec9d389a87 100644 (file)
@@ -315,7 +315,7 @@ class TwitapistatusesAction extends TwitterapiAction {
 
                if (!$profile) {
                        common_server_error(_('User has no profile.'));
-                       return;
+                       exit();
                }
                                
                $count = $this->arg('count');
@@ -370,42 +370,6 @@ class TwitapistatusesAction extends TwitterapiAction {
                
                exit();
        }
-
-       function show($args, $apidata) {
-               parent::handle($args);
-               
-               $id = $apidata['api_arg'];              
-               $notice = Notice::staticGet($id);
-
-               if ($notice) {
-
-                       if ($apidata['content-type'] == 'xml') { 
-                               $this->show_single_xml_status($notice);
-                       } elseif ($apidata['content-type'] == 'json') {
-                               $this->show_single_json_status($notice);
-                       }
-               } else {
-                       header('HTTP/1.1 404 Not Found');
-               }
-               
-               exit();
-       }
-               
-       function show_single_xml_status($notice) {
-               header('Content-Type: application/xml; charset=utf-8');         
-               common_start_xml();
-               $twitter_status = $this->twitter_status_array($notice);                                         
-               $this->show_twitter_xml_status($twitter_status);
-               common_end_xml();
-               exit();
-       }
-       
-       function show_single_json_status($notice) {
-               header('Content-Type: application/json; charset=utf-8');
-               $status = $this->twitter_status_array($notice);
-               $this->show_twitter_json_statuses($status);
-               exit();
-       }
                
        function update($args, $apidata) {
                parent::handle($args);
index f61ba9b671b58f52049219c8b58c86e797e225c9..06f491fb6e0ed2c3def2bc7dc5c8951c8f284c2a 100644 (file)
@@ -161,6 +161,42 @@ class TwitterapiAction extends Action {
        function show_twitter_json_users($twitter_users) {
                print(json_encode($twitter_users));
        }
+
+       function show($args, $apidata) {
+               parent::handle($args);
+               
+               $id = $apidata['api_arg'];              
+               $notice = Notice::staticGet($id);
+
+               if ($notice) {
+
+                       if ($apidata['content-type'] == 'xml') { 
+                               $this->show_single_xml_status($notice);
+                       } elseif ($apidata['content-type'] == 'json') {
+                               $this->show_single_json_status($notice);
+                       }
+               } else {
+                       header('HTTP/1.1 404 Not Found');
+               }
+               
+               exit();
+       }
+               
+       function show_single_xml_status($notice) {
+               header('Content-Type: application/xml; charset=utf-8');         
+               common_start_xml();
+               $twitter_status = $this->twitter_status_array($notice);                                         
+               $this->show_twitter_xml_status($twitter_status);
+               common_end_xml();
+               exit();
+       }
+       
+       function show_single_json_status($notice) {
+               header('Content-Type: application/json; charset=utf-8');
+               $status = $this->twitter_status_array($notice);
+               $this->show_twitter_json_statuses($status);
+               exit();
+       }
        
        // Anyone know what date format this is? 
        // Twitter's dates look like this: "Mon Jul 14 23:52:38 +0000 2008" -- Zach