]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Prepended 'Twit' to Twitter-compatible API actions (renamed action
authorzach <zach@copley.name>
Tue, 15 Jul 2008 04:31:21 +0000 (00:31 -0400)
committerzach <zach@copley.name>
Tue, 15 Jul 2008 04:31:21 +0000 (00:31 -0400)
files) to make it more clear what the action files are for.

darcs-hash:20080715043121-ca946-bb7acd42271117dbb77d5e16292673a4b8cfad53.gz

17 files changed:
actions/api.php
actions/apiaccount.php [deleted file]
actions/apiblocks.php [deleted file]
actions/apidirect_messages.php [deleted file]
actions/apifavorites.php [deleted file]
actions/apifriendships.php [deleted file]
actions/apihelp.php [deleted file]
actions/apinotifications.php [deleted file]
actions/apistatuses.php [deleted file]
actions/twitapiaccount.php [new file with mode: 0644]
actions/twitapiblocks.php [new file with mode: 0644]
actions/twitapidirect_messages.php [new file with mode: 0644]
actions/twitapifavorites.php [new file with mode: 0644]
actions/twitapifriendships.php [new file with mode: 0644]
actions/twitapihelp.php [new file with mode: 0644]
actions/twitapinotifications.php [new file with mode: 0644]
actions/twitapistatuses.php [new file with mode: 0644]

index 2e7ed3558c1e1507b2d3c0ffbcc18de56d57e5e8..badd4a42ac801a04a26a1ca3e7b015957887599c 100644 (file)
@@ -76,7 +76,7 @@ class ApiAction extends Action {
        }
        
        function process_command() {            
-               $action = "api$this->api_action";
+               $action = "twitapi$this->api_action";
                $actionfile = INSTALLDIR."/actions/$action.php";                
                if (file_exists($actionfile)) {
                        require_once($actionfile);
diff --git a/actions/apiaccount.php b/actions/apiaccount.php
deleted file mode 100644 (file)
index 2be5312..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-/*
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-if (!defined('LACONICA')) { exit(1); }
-
-require_once(INSTALLDIR.'/lib/twitterapi.php');
-
-class ApiaccountAction extends TwitterapiAction {
-
-       function verify_credentials($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-       function end_session($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-       function update_location($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-       function update_delivery_device($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-       function rate_limit_status($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-}
\ No newline at end of file
diff --git a/actions/apiblocks.php b/actions/apiblocks.php
deleted file mode 100644 (file)
index c9c7a00..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-/*
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-if (!defined('LACONICA')) { exit(1); }
-
-require_once(INSTALLDIR.'/lib/twitterapi.php');
-
-class ApiblocksAction extends TwitterapiAction {
-
-       function create($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-       function destroy($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-}
\ No newline at end of file
diff --git a/actions/apidirect_messages.php b/actions/apidirect_messages.php
deleted file mode 100644 (file)
index 351a4bb..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/*
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-if (!defined('LACONICA')) { exit(1); }
-
-require_once(INSTALLDIR.'/lib/twitterapi.php');
-
-class Apidirect_messagesAction extends TwitterapiAction {
-
-       function direct_messages($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-       function sent($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-       # had to change this from "new" to "create" to avoid PHP reserved word  
-       function create($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-               
-       function destroy($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-}
\ No newline at end of file
diff --git a/actions/apifavorites.php b/actions/apifavorites.php
deleted file mode 100644 (file)
index db8ad10..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-/*
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-if (!defined('LACONICA')) { exit(1); }
-
-require_once(INSTALLDIR.'/lib/twitterapi.php');
-
-class ApifavoritesAction extends TwitterapiAction {
-
-       function favorites($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-
-       function create($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-       function destroy($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }       
-
-}
\ No newline at end of file
diff --git a/actions/apifriendships.php b/actions/apifriendships.php
deleted file mode 100644 (file)
index 4368f84..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/*
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-if (!defined('LACONICA')) { exit(1); }
-
-require_once(INSTALLDIR.'/lib/twitterapi.php');
-
-class ApifriendshipsAction extends TwitterapiAction {
-
-
-       function create($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-       function destroy($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-       function exists($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-}
\ No newline at end of file
diff --git a/actions/apihelp.php b/actions/apihelp.php
deleted file mode 100644 (file)
index 66a08c9..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/*
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-if (!defined('LACONICA')) { exit(1); }
-
-require_once(INSTALLDIR.'/lib/twitterapi.php');
-
-class ApihelpAction extends TwitterapiAction {
-
-       /* Returns the string "ok" in the requested format with a 200 OK HTTP status code.
-        * URL:http://identi.ca/api/help/test.format
-        * Formats: xml, json
-        */
-       function test($args, $apidata) {
-               global $xw;
-               if ($apidata['content-type'] == 'xml') {
-                       header('Content-Type: application/xml; charset=utf-8');         
-                       common_start_xml();
-                       common_element('ok', NULL, 'true');
-                       common_end_xml();
-               } elseif ($apidata['content-type'] == 'json') {
-                       header('Content-Type: application/json; charset=utf-8');                
-                       print '"ok"';
-               } else {
-                       common_user_error("API method not found!", $code=404);
-               }
-               exit();
-       }
-
-       function downtime_schedule($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-}
\ No newline at end of file
diff --git a/actions/apinotifications.php b/actions/apinotifications.php
deleted file mode 100644 (file)
index 98d9610..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/*
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-if (!defined('LACONICA')) { exit(1); }
-
-require_once(INSTALLDIR.'/lib/twitterapi.php');
-
-# This naming convention looks real sick
-class ApinotificationsAction extends TwitterapiAction {
-
-
-       function follow($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-       function leave($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-               exit();
-       }
-       
-}
\ No newline at end of file
diff --git a/actions/apistatuses.php b/actions/apistatuses.php
deleted file mode 100644 (file)
index b438236..0000000
+++ /dev/null
@@ -1,302 +0,0 @@
-<?php
-/*
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-if (!defined('LACONICA')) { exit(1); }
-
-require_once(INSTALLDIR.'/lib/twitterapi.php');
-
-/* XXX: Please don't freak out about all the ugly comments in this file.
- * They are mostly in here for reference while I work on the
- * API. I'll fix things up to make them look better later. -- Zach 
- */
-class ApistatusesAction extends TwitterapiAction {
-       
-       /*
-        *  Returns the 20 most recent statuses from non-protected users who have set a custom
-        *  user icon. Does not require authentication.
-        *      
-        *      URL: http://identi.ca/api/statuses/public_timeline.format
-     *
-        *      Formats: xml, json, rss, atom
-        */
-       function public_timeline($args, $apidata) {
-               parent::handle($args);
-
-               if ($apidata['content-type'] == 'xml') {
-                       header('Content-Type: application/xml; charset=utf-8');         
-                       $notice = DB_DataObject::factory('notice');
-
-                       # FIXME: bad performance
-                       $notice->whereAdd('EXISTS (SELECT user.id from user where user.id = notice.profile_id)');
-                       $notice->orderBy('created DESC, notice.id DESC');
-                       $notice->limit(20);
-                       $cnt = $notice->find();
-
-                       common_start_xml();
-
-                       // XXX: To really live up to the spec we need to build a list
-                       // of notices by users who have custom avatars
-                       if ($cnt > 0) {
-                               common_element_start('statuses', array('type' => 'array'));
-                               for ($i = 0; $i < 20; $i++) {
-                                       if ($notice->fetch()) {
-                                               $this->show_xml_status($notice);
-                                       } else {
-                                               // shouldn't happen!
-                                               break;
-                                       }
-                               }
-                               common_element_end('statuses');
-                       }
-               
-                       common_end_xml();
-               } elseif ($apidata['content-type'] == 'rss') {
-                       common_server_error("API method under construction.", $code=501);
-               } elseif ($apidata['content-type'] == 'atom') {
-                       common_server_error("API method under construction.", $code=501);       
-               } elseif ($apidata['content-type'] == 'json') {
-                       common_server_error("API method under construction.", $code=501);
-               }
-
-               exit();
-       }       
-       
-
-               
-       /*
-       Returns the 20 most recent statuses posted by the authenticating user and that user's friends. 
-       This is the equivalent of /home on the Web. 
-       
-       URL: http://identi.ca/api/statuses/friends_timeline.format
-       
-       Parameters:
-
-           * since.  Optional.  Narrows the returned results to just those statuses created after the specified 
-                       HTTP-formatted date.  The same behavior is available by setting an If-Modified-Since header in 
-                       your HTTP request.  
-                       Ex: http://identi.ca/api/statuses/friends_timeline.rss?since=Tue%2C+27+Mar+2007+22%3A55%3A48+GMT
-           * since_id.  Optional.  Returns only statuses with an ID greater than (that is, more recent than) 
-                       the specified ID.  Ex: http://identi.ca/api/statuses/friends_timeline.xml?since_id=12345
-           * count.  Optional.  Specifies the number of statuses to retrieve. May not be greater than 200.
-                       Ex: http://identi.ca/api/statuses/friends_timeline.xml?count=5 
-           * page. Optional. Ex: http://identi.ca/api/statuses/friends_timeline.rss?page=3
-       
-       Formats: xml, json, rss, atom
-       */
-       function friends_timeline($args, $apidata) {
-               parent::handle($args);
-
-               $since = $this->arg('since');
-               $since_id = $this->arg('since_id');
-               $count = $this->arg('count');
-               $page = $this->arg('page');
-
-               print "Friends Timeline! requested content-type: " . $apidata['content-type'] . "\n";
-               print "since: $since, since_id: $since_id, count: $count, page: $page\n";
-               
-               exit();
-               
-       }
-       
-       /*
-               Returns the 20 most recent statuses posted from the authenticating user. It's also possible to
-        request another user's timeline via the id parameter below. This is the equivalent of the Web
-        /archive page for your own user, or the profile page for a third party.
-
-               URL: http://identi.ca/api/statuses/user_timeline.format
-
-               Formats: xml, json, rss, atom
-
-               Parameters:
-
-                   * id. Optional. Specifies the ID or screen name of the user for whom to return the
-            friends_timeline. Ex: http://identi.ca/api/statuses/user_timeline/12345.xml or
-            http://identi.ca/api/statuses/user_timeline/bob.json. 
-                       * count. Optional. Specifies the number of
-            statuses to retrieve. May not be greater than 200. Ex:
-            http://identi.ca/api/statuses/user_timeline.xml?count=5 
-                       * since. Optional. Narrows the returned
-            results to just those statuses created after the specified HTTP-formatted date. The same
-            behavior is available by setting an If-Modified-Since header in your HTTP request. Ex:
-            http://identi.ca/api/statuses/user_timeline.rss?since=Tue%2C+27+Mar+2007+22%3A55%3A48+GMT 
-                       * since_id. Optional. Returns only statuses with an ID greater than (that is, more recent than)
-            the specified ID. Ex: http://identi.ca/api/statuses/user_timeline.xml?since_id=12345 * page.
-            Optional. Ex: http://identi.ca/api/statuses/friends_timeline.rss?page=3
-       */
-       function user_timeline($args, $apidata) {
-               parent::handle($args);
-               
-               $id = $this->arg('id');
-               $count = $this->arg('count');
-               $since = $this->arg('since');
-               $since_id = $this->arg('since_id');
-               
-               print "User Timeline! requested content-type: " . $apidata['content-type'] . "\n";
-               print "id: $id since: $since, since_id: $since_id, count: $count\n";
-               
-               exit(); 
-       }
-       
-       /*
-               Returns a single status, specified by the id parameter below. The status's author will be returned inline.
-               
-                URL: http://identi.ca/api/statuses/show/id.format
-               
-                Formats: xml, json
-               
-                Parameters:
-               
-                * id. Required. The numerical ID of the status you're trying to retrieve. 
-                Ex: http://identi.ca/api/statuses/show/123.xml
-       */
-       function show($args, $apidata) {
-               parent::handle($args);
-
-               $id = $this->arg('id');
-               
-               print "show requested content-type: " . $apidata['content-type'] . "\n";
-               print "id: $id\n";
-               
-               exit();
-               
-       }
-       
-       /*
-               Updates the authenticating user's status.  Requires the status parameter specified below.  Request must be a POST.
-
-               URL: http://identi.ca/api/statuses/update.format
-
-               Formats: xml, json.  Returns the posted status in requested format when successful.
-
-               Parameters:
-
-                   * status. Required. The text of your status update. Be sure to URL encode as necessary. Must not be more than 160
-            characters and should not be more than 140 characters to ensure optimal display.
-
-       */
-       function update($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-       }
-       
-       /*
-               Returns the 20 most recent @replies (status updates prefixed with @username) for the authenticating user.
-               URL: http://identi.ca/api/statuses/replies.format
-               
-               Formats: xml, json, rss, atom
-
-               Parameters:
-
-               * page. Optional. Retrieves the 20 next most recent replies. Ex: http://identi.ca/api/statuses/replies.xml?page=3 
-               * since. Optional. Narrows the returned results to just those replies created after the specified HTTP-formatted date. The
-        same behavior is available by setting an If-Modified-Since header in your HTTP request. Ex:
-        http://identi.ca/api/statuses/replies.xml?since=Tue%2C+27+Mar+2007+22%3A55%3A48+GMT
-               * since_id. Optional. Returns only statuses with an ID greater than (that is, more recent than) the specified
-               ID. Ex: http://identi.ca/api/statuses/replies.xml?since_id=12345
-       */
-       function replies($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-       }
-       
-       
-       /*
-               Destroys the status specified by the required ID parameter. The authenticating user must be
-        the author of the specified status.
-               
-                URL: http://identi.ca/api/statuses/destroy/id.format
-               
-                Formats: xml, json
-               
-                Parameters:
-               
-                * id. Required. The ID of the status to destroy. Ex:
-               http://identi.ca/api/statuses/destroy/12345.json or
-               http://identi.ca/api/statuses/destroy/23456.xml
-       
-       */
-       function destroy($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-       }
-       
-       # User Methods
-       
-       /*
-               Returns up to 100 of the authenticating user's friends who have most recently updated, each with current status inline.
-        It's also possible to request another user's recent friends list via the id parameter below.
-               
-                URL: http://identi.ca/api/statuses/friends.format
-               
-                Formats: xml, json
-               
-                Parameters:
-               
-                * id. Optional. The ID or screen name of the user for whom to request a list of friends. Ex:
-               http://identi.ca/api/statuses/friends/12345.json 
-                       or 
-                       http://identi.ca/api/statuses/friends/bob.xml
-                * page. Optional. Retrieves the next 100 friends. Ex: http://identi.ca/api/statuses/friends.xml?page=2
-                * lite. Optional. Prevents the inline inclusion of current status. Must be set to a value of true. Ex:
-               http://identi.ca/api/statuses/friends.xml?lite=true
-                * since. Optional. Narrows the returned results to just those friendships created after the specified
-                       HTTP-formatted date. The same behavior is available by setting an If-Modified-Since header in your HTTP
-                       request. Ex: http://identi.ca/api/statuses/friends.xml?since=Tue%2C+27+Mar+2007+22%3A55%3A48+GMT
-       */
-       function friends($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-       }
-       
-       /*
-               Returns the authenticating user's followers, each with current status inline. They are ordered by the
-               order in which they joined Twitter (this is going to be changed).
-               
-               URL: http://identi.ca/api/statuses/followers.format
-               Formats: xml, json
-
-               Parameters: 
-
-                   * id. Optional. The ID or screen name of the user for whom to request a list of followers. Ex:
-               http://identi.ca/api/statuses/followers/12345.json 
-                               or 
-                               http://identi.ca/api/statuses/followers/bob.xml
-                   * page. Optional. Retrieves the next 100 followers. Ex: http://identi.ca/api/statuses/followers.xml?page=2   
-                   * lite. Optional. Prevents the inline inclusion of current status. Must be set to a value of true.
-                               Ex: http://identi.ca/api/statuses/followers.xml?lite=true
-       */
-       function followers($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-       }
-       
-       /*
-       Returns a list of the users currently featured on the site with their current statuses inline. 
-       URL: http://identi.ca/api/statuses/featured.format 
-
-       Formats: xml, json
-       */
-       function featured($args, $apidata) {
-               parent::handle($args);
-               common_server_error("API method under construction.", $code=501);
-       }
-       
-}
-
-
diff --git a/actions/twitapiaccount.php b/actions/twitapiaccount.php
new file mode 100644 (file)
index 0000000..93e0844
--- /dev/null
@@ -0,0 +1,55 @@
+<?php
+/*
+ * Laconica - a distributed open-source microblogging tool
+ * Copyright (C) 2008, Controlez-Vous, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('LACONICA')) { exit(1); }
+
+require_once(INSTALLDIR.'/lib/twitterapi.php');
+
+class TwitapiaccountAction extends TwitterapiAction {
+
+       function verify_credentials($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+       function end_session($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+       function update_location($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+       function update_delivery_device($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+       function rate_limit_status($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+}
\ No newline at end of file
diff --git a/actions/twitapiblocks.php b/actions/twitapiblocks.php
new file mode 100644 (file)
index 0000000..a498d20
--- /dev/null
@@ -0,0 +1,38 @@
+<?php
+/*
+ * Laconica - a distributed open-source microblogging tool
+ * Copyright (C) 2008, Controlez-Vous, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('LACONICA')) { exit(1); }
+
+require_once(INSTALLDIR.'/lib/twitterapi.php');
+
+class TwitapiblocksAction extends TwitterapiAction {
+
+       function create($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+       function destroy($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+}
\ No newline at end of file
diff --git a/actions/twitapidirect_messages.php b/actions/twitapidirect_messages.php
new file mode 100644 (file)
index 0000000..e7f3e12
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+/*
+ * Laconica - a distributed open-source microblogging tool
+ * Copyright (C) 2008, Controlez-Vous, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('LACONICA')) { exit(1); }
+
+require_once(INSTALLDIR.'/lib/twitterapi.php');
+
+class Twitapidirect_messagesAction extends TwitterapiAction {
+
+       function direct_messages($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+       function sent($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+       # had to change this from "new" to "create" to avoid PHP reserved word  
+       function create($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+               
+       function destroy($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+}
\ No newline at end of file
diff --git a/actions/twitapifavorites.php b/actions/twitapifavorites.php
new file mode 100644 (file)
index 0000000..a4afa73
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+/*
+ * Laconica - a distributed open-source microblogging tool
+ * Copyright (C) 2008, Controlez-Vous, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('LACONICA')) { exit(1); }
+
+require_once(INSTALLDIR.'/lib/twitterapi.php');
+
+class TwitapifavoritesAction extends TwitterapiAction {
+
+       function favorites($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+
+       function create($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+       function destroy($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }       
+
+}
\ No newline at end of file
diff --git a/actions/twitapifriendships.php b/actions/twitapifriendships.php
new file mode 100644 (file)
index 0000000..e488800
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+/*
+ * Laconica - a distributed open-source microblogging tool
+ * Copyright (C) 2008, Controlez-Vous, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('LACONICA')) { exit(1); }
+
+require_once(INSTALLDIR.'/lib/twitterapi.php');
+
+class TwitapifriendshipsAction extends TwitterapiAction {
+
+
+       function create($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+       function destroy($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+       function exists($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+}
\ No newline at end of file
diff --git a/actions/twitapihelp.php b/actions/twitapihelp.php
new file mode 100644 (file)
index 0000000..5a35d84
--- /dev/null
@@ -0,0 +1,52 @@
+<?php
+/*
+ * Laconica - a distributed open-source microblogging tool
+ * Copyright (C) 2008, Controlez-Vous, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('LACONICA')) { exit(1); }
+
+require_once(INSTALLDIR.'/lib/twitterapi.php');
+
+class TwitapihelpAction extends TwitterapiAction {
+
+       /* Returns the string "ok" in the requested format with a 200 OK HTTP status code.
+        * URL:http://identi.ca/api/help/test.format
+        * Formats: xml, json
+        */
+       function test($args, $apidata) {
+               global $xw;
+               if ($apidata['content-type'] == 'xml') {
+                       header('Content-Type: application/xml; charset=utf-8');         
+                       common_start_xml();
+                       common_element('ok', NULL, 'true');
+                       common_end_xml();
+               } elseif ($apidata['content-type'] == 'json') {
+                       header('Content-Type: application/json; charset=utf-8');                
+                       print '"ok"';
+               } else {
+                       common_user_error("API method not found!", $code=404);
+               }
+               exit();
+       }
+
+       function downtime_schedule($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+}
\ No newline at end of file
diff --git a/actions/twitapinotifications.php b/actions/twitapinotifications.php
new file mode 100644 (file)
index 0000000..45a3342
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+/*
+ * Laconica - a distributed open-source microblogging tool
+ * Copyright (C) 2008, Controlez-Vous, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('LACONICA')) { exit(1); }
+
+require_once(INSTALLDIR.'/lib/twitterapi.php');
+
+# This naming convention looks real sick
+class TwitapinotificationsAction extends TwitterapiAction {
+
+
+       function follow($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+       function leave($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+               exit();
+       }
+       
+}
\ No newline at end of file
diff --git a/actions/twitapistatuses.php b/actions/twitapistatuses.php
new file mode 100644 (file)
index 0000000..7ac9167
--- /dev/null
@@ -0,0 +1,302 @@
+<?php
+/*
+ * Laconica - a distributed open-source microblogging tool
+ * Copyright (C) 2008, Controlez-Vous, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('LACONICA')) { exit(1); }
+
+require_once(INSTALLDIR.'/lib/twitterapi.php');
+
+/* XXX: Please don't freak out about all the ugly comments in this file.
+ * They are mostly in here for reference while I work on the
+ * API. I'll fix things up to make them look better later. -- Zach 
+ */
+class TwitapistatusesAction extends TwitterapiAction {
+       
+       /*
+        *  Returns the 20 most recent statuses from non-protected users who have set a custom
+        *  user icon. Does not require authentication.
+        *      
+        *      URL: http://identi.ca/api/statuses/public_timeline.format
+     *
+        *      Formats: xml, json, rss, atom
+        */
+       function public_timeline($args, $apidata) {
+               parent::handle($args);
+
+               if ($apidata['content-type'] == 'xml') {
+                       header('Content-Type: application/xml; charset=utf-8');         
+                       $notice = DB_DataObject::factory('notice');
+
+                       # FIXME: bad performance
+                       $notice->whereAdd('EXISTS (SELECT user.id from user where user.id = notice.profile_id)');
+                       $notice->orderBy('created DESC, notice.id DESC');
+                       $notice->limit(20);
+                       $cnt = $notice->find();
+
+                       common_start_xml();
+
+                       // XXX: To really live up to the spec we need to build a list
+                       // of notices by users who have custom avatars
+                       if ($cnt > 0) {
+                               common_element_start('statuses', array('type' => 'array'));
+                               for ($i = 0; $i < 20; $i++) {
+                                       if ($notice->fetch()) {
+                                               $this->show_xml_status($notice);
+                                       } else {
+                                               // shouldn't happen!
+                                               break;
+                                       }
+                               }
+                               common_element_end('statuses');
+                       }
+               
+                       common_end_xml();
+               } elseif ($apidata['content-type'] == 'rss') {
+                       common_server_error("API method under construction.", $code=501);
+               } elseif ($apidata['content-type'] == 'atom') {
+                       common_server_error("API method under construction.", $code=501);       
+               } elseif ($apidata['content-type'] == 'json') {
+                       common_server_error("API method under construction.", $code=501);
+               }
+
+               exit();
+       }       
+       
+
+               
+       /*
+       Returns the 20 most recent statuses posted by the authenticating user and that user's friends. 
+       This is the equivalent of /home on the Web. 
+       
+       URL: http://identi.ca/api/statuses/friends_timeline.format
+       
+       Parameters:
+
+           * since.  Optional.  Narrows the returned results to just those statuses created after the specified 
+                       HTTP-formatted date.  The same behavior is available by setting an If-Modified-Since header in 
+                       your HTTP request.  
+                       Ex: http://identi.ca/api/statuses/friends_timeline.rss?since=Tue%2C+27+Mar+2007+22%3A55%3A48+GMT
+           * since_id.  Optional.  Returns only statuses with an ID greater than (that is, more recent than) 
+                       the specified ID.  Ex: http://identi.ca/api/statuses/friends_timeline.xml?since_id=12345
+           * count.  Optional.  Specifies the number of statuses to retrieve. May not be greater than 200.
+                       Ex: http://identi.ca/api/statuses/friends_timeline.xml?count=5 
+           * page. Optional. Ex: http://identi.ca/api/statuses/friends_timeline.rss?page=3
+       
+       Formats: xml, json, rss, atom
+       */
+       function friends_timeline($args, $apidata) {
+               parent::handle($args);
+
+               $since = $this->arg('since');
+               $since_id = $this->arg('since_id');
+               $count = $this->arg('count');
+               $page = $this->arg('page');
+
+               print "Friends Timeline! requested content-type: " . $apidata['content-type'] . "\n";
+               print "since: $since, since_id: $since_id, count: $count, page: $page\n";
+               
+               exit();
+               
+       }
+       
+       /*
+               Returns the 20 most recent statuses posted from the authenticating user. It's also possible to
+        request another user's timeline via the id parameter below. This is the equivalent of the Web
+        /archive page for your own user, or the profile page for a third party.
+
+               URL: http://identi.ca/api/statuses/user_timeline.format
+
+               Formats: xml, json, rss, atom
+
+               Parameters:
+
+                   * id. Optional. Specifies the ID or screen name of the user for whom to return the
+            friends_timeline. Ex: http://identi.ca/api/statuses/user_timeline/12345.xml or
+            http://identi.ca/api/statuses/user_timeline/bob.json. 
+                       * count. Optional. Specifies the number of
+            statuses to retrieve. May not be greater than 200. Ex:
+            http://identi.ca/api/statuses/user_timeline.xml?count=5 
+                       * since. Optional. Narrows the returned
+            results to just those statuses created after the specified HTTP-formatted date. The same
+            behavior is available by setting an If-Modified-Since header in your HTTP request. Ex:
+            http://identi.ca/api/statuses/user_timeline.rss?since=Tue%2C+27+Mar+2007+22%3A55%3A48+GMT 
+                       * since_id. Optional. Returns only statuses with an ID greater than (that is, more recent than)
+            the specified ID. Ex: http://identi.ca/api/statuses/user_timeline.xml?since_id=12345 * page.
+            Optional. Ex: http://identi.ca/api/statuses/friends_timeline.rss?page=3
+       */
+       function user_timeline($args, $apidata) {
+               parent::handle($args);
+               
+               $id = $this->arg('id');
+               $count = $this->arg('count');
+               $since = $this->arg('since');
+               $since_id = $this->arg('since_id');
+               
+               print "User Timeline! requested content-type: " . $apidata['content-type'] . "\n";
+               print "id: $id since: $since, since_id: $since_id, count: $count\n";
+               
+               exit(); 
+       }
+       
+       /*
+               Returns a single status, specified by the id parameter below. The status's author will be returned inline.
+               
+                URL: http://identi.ca/api/statuses/show/id.format
+               
+                Formats: xml, json
+               
+                Parameters:
+               
+                * id. Required. The numerical ID of the status you're trying to retrieve. 
+                Ex: http://identi.ca/api/statuses/show/123.xml
+       */
+       function show($args, $apidata) {
+               parent::handle($args);
+
+               $id = $this->arg('id');
+               
+               print "show requested content-type: " . $apidata['content-type'] . "\n";
+               print "id: $id\n";
+               
+               exit();
+               
+       }
+       
+       /*
+               Updates the authenticating user's status.  Requires the status parameter specified below.  Request must be a POST.
+
+               URL: http://identi.ca/api/statuses/update.format
+
+               Formats: xml, json.  Returns the posted status in requested format when successful.
+
+               Parameters:
+
+                   * status. Required. The text of your status update. Be sure to URL encode as necessary. Must not be more than 160
+            characters and should not be more than 140 characters to ensure optimal display.
+
+       */
+       function update($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+       }
+       
+       /*
+               Returns the 20 most recent @replies (status updates prefixed with @username) for the authenticating user.
+               URL: http://identi.ca/api/statuses/replies.format
+               
+               Formats: xml, json, rss, atom
+
+               Parameters:
+
+               * page. Optional. Retrieves the 20 next most recent replies. Ex: http://identi.ca/api/statuses/replies.xml?page=3 
+               * since. Optional. Narrows the returned results to just those replies created after the specified HTTP-formatted date. The
+        same behavior is available by setting an If-Modified-Since header in your HTTP request. Ex:
+        http://identi.ca/api/statuses/replies.xml?since=Tue%2C+27+Mar+2007+22%3A55%3A48+GMT
+               * since_id. Optional. Returns only statuses with an ID greater than (that is, more recent than) the specified
+               ID. Ex: http://identi.ca/api/statuses/replies.xml?since_id=12345
+       */
+       function replies($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+       }
+       
+       
+       /*
+               Destroys the status specified by the required ID parameter. The authenticating user must be
+        the author of the specified status.
+               
+                URL: http://identi.ca/api/statuses/destroy/id.format
+               
+                Formats: xml, json
+               
+                Parameters:
+               
+                * id. Required. The ID of the status to destroy. Ex:
+               http://identi.ca/api/statuses/destroy/12345.json or
+               http://identi.ca/api/statuses/destroy/23456.xml
+       
+       */
+       function destroy($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+       }
+       
+       # User Methods
+       
+       /*
+               Returns up to 100 of the authenticating user's friends who have most recently updated, each with current status inline.
+        It's also possible to request another user's recent friends list via the id parameter below.
+               
+                URL: http://identi.ca/api/statuses/friends.format
+               
+                Formats: xml, json
+               
+                Parameters:
+               
+                * id. Optional. The ID or screen name of the user for whom to request a list of friends. Ex:
+               http://identi.ca/api/statuses/friends/12345.json 
+                       or 
+                       http://identi.ca/api/statuses/friends/bob.xml
+                * page. Optional. Retrieves the next 100 friends. Ex: http://identi.ca/api/statuses/friends.xml?page=2
+                * lite. Optional. Prevents the inline inclusion of current status. Must be set to a value of true. Ex:
+               http://identi.ca/api/statuses/friends.xml?lite=true
+                * since. Optional. Narrows the returned results to just those friendships created after the specified
+                       HTTP-formatted date. The same behavior is available by setting an If-Modified-Since header in your HTTP
+                       request. Ex: http://identi.ca/api/statuses/friends.xml?since=Tue%2C+27+Mar+2007+22%3A55%3A48+GMT
+       */
+       function friends($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+       }
+       
+       /*
+               Returns the authenticating user's followers, each with current status inline. They are ordered by the
+               order in which they joined Twitter (this is going to be changed).
+               
+               URL: http://identi.ca/api/statuses/followers.format
+               Formats: xml, json
+
+               Parameters: 
+
+                   * id. Optional. The ID or screen name of the user for whom to request a list of followers. Ex:
+               http://identi.ca/api/statuses/followers/12345.json 
+                               or 
+                               http://identi.ca/api/statuses/followers/bob.xml
+                   * page. Optional. Retrieves the next 100 followers. Ex: http://identi.ca/api/statuses/followers.xml?page=2   
+                   * lite. Optional. Prevents the inline inclusion of current status. Must be set to a value of true.
+                               Ex: http://identi.ca/api/statuses/followers.xml?lite=true
+       */
+       function followers($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+       }
+       
+       /*
+       Returns a list of the users currently featured on the site with their current statuses inline. 
+       URL: http://identi.ca/api/statuses/featured.format 
+
+       Formats: xml, json
+       */
+       function featured($args, $apidata) {
+               parent::handle($args);
+               common_server_error("API method under construction.", $code=501);
+       }
+       
+}
+
+