Add Link headers by offset/limit capability to BaseApi
This commit is contained in:
parent
df4af8da9b
commit
2754cdc5d6
1 changed files with 40 additions and 0 deletions
|
@ -168,6 +168,34 @@ class BaseApi extends BaseModule
|
|||
return 'Link: <' . $next . '>; rel="next", <' . $prev . '>; rel="prev"';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the "link" header with "next" and "prev" links for an offset/limit type call
|
||||
* @return string
|
||||
*/
|
||||
protected static function getOffsetAndLimitLinkHeader(int $offset, int $limit): string
|
||||
{
|
||||
$request = self::$request;
|
||||
|
||||
unset($request['offset']);
|
||||
$request['limit'] = $limit;
|
||||
|
||||
$prev_request = $next_request = $request;
|
||||
|
||||
$prev_request['offset'] = $offset - $limit;
|
||||
$next_request['offset'] = $offset + $limit;
|
||||
|
||||
$command = DI::baseUrl() . '/' . DI::args()->getCommand();
|
||||
|
||||
$prev = $command . '?' . http_build_query($prev_request);
|
||||
$next = $command . '?' . http_build_query($next_request);
|
||||
|
||||
if ($prev_request['offset'] >= 0) {
|
||||
return 'Link: <' . $next . '>; rel="next", <' . $prev . '>; rel="prev"';
|
||||
} else {
|
||||
return 'Link: <' . $next . '>; rel="next"';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the "link" header with "next" and "prev" links
|
||||
* @return void
|
||||
|
@ -180,6 +208,18 @@ class BaseApi extends BaseModule
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the "link" header with "next" and "prev" links
|
||||
* @return void
|
||||
*/
|
||||
protected static function setLinkHeaderByOffsetLimit(int $offset, int $limit)
|
||||
{
|
||||
$header = self::getOffsetAndLimitLinkHeader($offset, $limit);
|
||||
if (!empty($header)) {
|
||||
header($header);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the app is known to support quoted posts
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue