]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/twitapifriendships.php
fix calls to show_rss_timeline
[quix0rs-gnu-social.git] / actions / twitapifriendships.php
index 05c192ea6fc8bc46938c64d5a60b2dac2539a9bf..e4b49cbe4a92529cc2c470b2779ec68dfa8b96f4 100644 (file)
@@ -23,140 +23,118 @@ require_once(INSTALLDIR.'/lib/twitterapi.php');
 
 class TwitapifriendshipsAction extends TwitterapiAction {
 
-       function is_readonly() {
-               
-               static $write_methods = array(  'create',
-                                                                               'destroy');
-               
-               $cmdtext = explode('.', $this->arg('method'));          
-               
-               if (in_array($cmdtext[0], $write_methods)) {                    
-                       return false;
-               }
-                               
-               return true;
-       }
-
        function create($args, $apidata) {
                parent::handle($args);
 
+               if ($_SERVER['REQUEST_METHOD'] != 'POST') {
+                       $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']);
+                       return;
+               }
+
                $id = $apidata['api_arg'];
 
                $other = $this->get_user($id);
 
                if (!$other) {
                        $this->client_error(_('Could not follow user: User not found.'), 403, $apidata['content-type']);
-                       exit();
+                       return;
                }
-               
+
                $user = $apidata['user'];
-               
+
                if ($user->isSubscribed($other)) {
-                       $this->client_error("Could not follow user: $other->nickname is already on your list.", 403, $apidata['content-type']);
-                       exit();
+                       $errmsg = sprintf(_('Could not follow user: %s is already on your list.'), $other->nickname);
+                       $this->client_error($errmsg, 403, $apidata['content-type']);
+                       return;
                }
-               
+
                $sub = new Subscription();
-               
+
                $sub->query('BEGIN');
-               
+
                $sub->subscriber = $user->id;
                $sub->subscribed = $other->id;
                $sub->created = DB_DataObject_Cast::dateTime(); # current time
-                 
+
                $result = $sub->insert();
 
                if (!$result) {
-                       $this->client_error("Could not follow user: $other->nickname.", 400, $apidata['content-type']);                 
-                       exit();
+                       $errmsg = sprintf(_('Could not follow user: %s is already on your list.'), $other->nickname);
+                       $this->client_error($errmsg, 400, $apidata['content-type']);
+                       return;
                }
-               
+
                $sub->query('COMMIT');
-               
+
                mail_subscribe_notify($other, $user);
 
                $type = $apidata['content-type'];
                $this->init_document($type);
                $this->show_profile($other, $type);
                $this->end_document($type);
-               exit();
+
        }
-       
-       //destroy
-       //
-       //Discontinues friendship with the user specified in the ID parameter as the authenticating user.  Returns the un-friended user in the requested format when successful.  Returns a string describing the failure condition when unsuccessful. 
-       //
-       //URL: http://twitter.com/friendships/destroy/id.format
-       //
-       //Formats: xml, json
-       //
-       //Parameters:
-       //
-       //* id.  Required.  The ID or screen name of the user with whom to discontinue friendship.  Ex: http://twitter.com/friendships/destroy/12345.json or http://twitter.com/friendships/destroy/bob.xml
-       
+
        function destroy($args, $apidata) {
                parent::handle($args);
+
+               if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) {
+                       $this->client_error(_('This method requires a POST or DELETE.'), 400, $apidata['content-type']);
+                       return;
+               }
+
                $id = $apidata['api_arg'];
 
                # We can't subscribe to a remote person, but we can unsub
-               
+
                $other = $this->get_profile($id);
                $user = $apidata['user'];
-               
+
                $sub = new Subscription();
                $sub->subscriber = $user->id;
                $sub->subscribed = $other->id;
-               
+
                if ($sub->find(TRUE)) {
                        $sub->query('BEGIN');
                        $sub->delete();
                        $sub->query('COMMIT');
                } else {
-                       $this->client_error(_('You are not friends with the specified user.'), 403, $apidata['content-type']);                  
-                       exit();
+                       $this->client_error(_('You are not friends with the specified user.'), 403, $apidata['content-type']);
+                       return;
                }
 
                $type = $apidata['content-type'];
-               $this->init_document($type);    
+               $this->init_document($type);
                $this->show_profile($other, $type);
                $this->end_document($type);
-               exit();
+
        }
 
-       //      Tests if a friendship exists between two users.
-       //        
-       //        
-       //        URL: http://twitter.com/friendships/exists.format
-       //      
-       //      Formats: xml, json, none
-       //        
-       //        Parameters:
-       //      
-       //          * user_a.  Required.  The ID or screen_name of the first user to test friendship for.
-       //            * user_b.  Required.  The ID or screen_name of the second user to test friendship for.
-       //        * Ex: http://twitter.com/friendships/exists.xml?user_a=alice&user_b=bob
-       
        function exists($args, $apidata) {
                parent::handle($args);
-               
-               
+
+               if (!in_array($apidata['content-type'], array('xml', 'json'))) {
+                       common_user_error(_('API method not found!'), $code = 404);
+                       return;
+               }
+
                $user_a_id = $this->trimmed('user_a');
                $user_b_id = $this->trimmed('user_b');
-               
+
                $user_a = $this->get_user($user_a_id);
                $user_b = $this->get_user($user_b_id);
-               
+
                if (!$user_a || !$user_b) {
                        $this->client_error(_('Two user ids or screen_names must be supplied.'), 400, $apidata['content-type']);
-                       exit();
+                       return;
                }
-               
+
                if ($user_a->isSubscribed($user_b)) {
                        $result = 'true';
                } else {
                        $result = 'false';
                }
-               
+
                switch ($apidata['content-type']) {
                 case 'xml':
                        $this->init_document('xml');
@@ -169,31 +147,9 @@ class TwitapifriendshipsAction extends TwitterapiAction {
                        $this->end_document('json');
                        break;
                 default:
-                       print $result;  // Really? --Zach
                        break;
                }
-               
-               exit();
-       }
 
-       function get_profile($id) {
-               if (is_numeric($id)) {
-                       return Profile::staticGet($id);
-               } else {
-                       $user = User::staticGet('nickname', $id);                       
-                       if ($user) {
-                               return $user->getProfile();
-                       } else {
-                               return NULL;
-                       }
-               }
-       }
-       
-       function get_user($id) {
-               if (is_numeric($id)) {
-                       return User::staticGet($id);
-               } else {
-                       return User::staticGet('nickname', $id);
-               }
        }
+
 }
\ No newline at end of file