Commit cab322d2 authored by Zach Copley's avatar Zach Copley

Ticket #1108 - Added 'social graph' methods to the API

parent 5e646ead
......@@ -470,19 +470,28 @@ class TwitapistatusesAction extends TwitterapiAction
return $this->subscriptions($apidata, 'subscribed', 'subscriber');
}
function followers($args, $apidata)
function friendsIDs($args, $apidata)
{
parent::handle($args);
return $this->subscriptions($apidata, 'subscribed', 'subscriber', true);
}
function followers($args, $apidata)
{
parent::handle($args);
return $this->subscriptions($apidata, 'subscriber', 'subscribed');
}
function subscriptions($apidata, $other_attr, $user_attr)
function followersIDs($args, $apidata)
{
parent::handle($args);
return $this->subscriptions($apidata, 'subscriber', 'subscribed', true);
}
# XXX: lite
function subscriptions($apidata, $other_attr, $user_attr, $onlyIDs=false)
{
$this->auth_user = $apidate['user'];
$this->auth_user = $apidata['user'];
$user = $this->get_user($apidata['api_arg'], $apidata);
if (!$user) {
......@@ -514,7 +523,10 @@ class TwitapistatusesAction extends TwitterapiAction
}
$sub->orderBy('created DESC');
$sub->limit(($page-1)*100, 100);
if (!$onlyIDs) {
$sub->limit(($page-1)*100, 100);
}
$others = array();
......@@ -529,7 +541,13 @@ class TwitapistatusesAction extends TwitterapiAction
$type = $apidata['content-type'];
$this->init_document($type);
$this->show_profiles($others, $type);
if ($onlyIDs) {
$this->showIDs($others, $type);
} else {
$this->show_profiles($others, $type);
}
$this->end_document($type);
}
......@@ -555,6 +573,28 @@ class TwitapistatusesAction extends TwitterapiAction
}
}
function showIDs($profiles, $type)
{
switch ($type) {
case 'xml':
$this->elementStart('ids');
foreach ($profiles as $profile) {
$this->element('id', null, $profile->id);
}
$this->elementEnd('ids');
break;
case 'json':
$ids = array();
foreach ($profiles as $profile) {
$ids[] = (int)$profile->id;
}
print json_encode($ids);
break;
default:
$this->clientError(_('unsupported file type'));
}
}
function featured($args, $apidata)
{
parent::handle($args);
......
......@@ -265,6 +265,33 @@ class Router
'apiaction' => 'friendships'),
array('method' => 'exists(\.(xml|json|rss|atom))'));
// Social graph
$m->connect('api/friends/ids/:argument',
array('action' => 'api',
'apiaction' => 'statuses',
'method' => 'friendsIDs'));
foreach (array('xml', 'json') as $e) {
$m->connect('api/friends/ids.'.$e,
array('action' => 'api',
'apiaction' => 'statuses',
'method' => 'friendsIDs.'.$e));
}
$m->connect('api/followers/ids/:argument',
array('action' => 'api',
'apiaction' => 'statuses',
'method' => 'followersIDs'));
foreach (array('xml', 'json') as $e) {
$m->connect('api/followers/ids.'.$e,
array('action' => 'api',
'apiaction' => 'statuses',
'method' => 'followersIDs.'.$e));
}
// account
$m->connect('api/account/:method',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment