User timeline ActivityStreams output now has paging data

This commit is contained in:
Mikael Nordfeldth 2014-08-07 22:40:36 +02:00
parent 8aa783241d
commit 2766c2aeec

View File

@ -124,6 +124,22 @@ class ApiTimelineUserAction extends ApiBareAuthAction
$suplink = common_local_url('sup', null, null, $this->target->id); $suplink = common_local_url('sup', null, null, $this->target->id);
header('X-SUP-ID: ' . $suplink); header('X-SUP-ID: ' . $suplink);
// paging links
$nextUrl = common_local_url('ApiTimelineUser',
array('format' => $this->format,
'id' => $this->target->id),
array('max_id' => $this->next_id));
$lastNotice = $this->notices[0];
$lastId = $lastNotice->id;
$prevUrl = common_local_url('ApiTimelineUser',
array('format' => $this->format,
'id' => $this->target->id),
array('since_id' => $lastId));
$firstUrl = common_local_url('ApiTimelineUser',
array('format' => $this->format,
'id' => $this->target->id));
switch($this->format) { switch($this->format) {
case 'xml': case 'xml':
$this->showXmlTimeline($this->notices); $this->showXmlTimeline($this->notices);
@ -150,10 +166,6 @@ class ApiTimelineUserAction extends ApiBareAuthAction
// change too quickly! // change too quickly!
if (!empty($this->next_id)) { if (!empty($this->next_id)) {
$nextUrl = common_local_url('ApiTimelineUser',
array('format' => 'atom',
'id' => $this->target->id),
array('max_id' => $this->next_id));
$atom->addLink($nextUrl, $atom->addLink($nextUrl,
array('rel' => 'next', array('rel' => 'next',
@ -162,13 +174,6 @@ class ApiTimelineUserAction extends ApiBareAuthAction
if (($this->page > 1 || !empty($this->max_id)) && !empty($this->notices)) { if (($this->page > 1 || !empty($this->max_id)) && !empty($this->notices)) {
$lastNotice = $this->notices[0];
$lastId = $lastNotice->id;
$prevUrl = common_local_url('ApiTimelineUser',
array('format' => 'atom',
'id' => $this->target->id),
array('since_id' => $lastId));
$atom->addLink($prevUrl, $atom->addLink($prevUrl,
array('rel' => 'prev', array('rel' => 'prev',
@ -177,10 +182,6 @@ class ApiTimelineUserAction extends ApiBareAuthAction
if ($this->page > 1 || !empty($this->since_id) || !empty($this->max_id)) { if ($this->page > 1 || !empty($this->since_id) || !empty($this->max_id)) {
$firstUrl = common_local_url('ApiTimelineUser',
array('format' => 'atom',
'id' => $this->target->id));
$atom->addLink($firstUrl, $atom->addLink($firstUrl,
array('rel' => 'first', array('rel' => 'first',
'type' => 'application/atom+xml')); 'type' => 'application/atom+xml'));
@ -201,7 +202,23 @@ class ApiTimelineUserAction extends ApiBareAuthAction
$doc->addLink($link, 'alternate', 'text/html'); $doc->addLink($link, 'alternate', 'text/html');
$doc->addItemsFromNotices($this->notices); $doc->addItemsFromNotices($this->notices);
// XXX: Add paging extension? if (!empty($this->next_id)) {
$doc->addLink($nextUrl,
array('rel' => 'next',
'type' => ActivityStreamJSONDocument::CONTENT_TYPE));
}
if (($this->page > 1 || !empty($this->max_id)) && !empty($this->notices)) {
$doc->addLink($prevUrl,
array('rel' => 'prev',
'type' => ActivityStreamJSONDocument::CONTENT_TYPE));
}
if ($this->page > 1 || !empty($this->since_id) || !empty($this->max_id)) {
$doc->addLink($firstUrl,
array('rel' => 'first',
'type' => ActivityStreamJSONDocument::CONTENT_TYPE));
}
$this->raw($doc->asString()); $this->raw($doc->asString());
break; break;