Add API to retrieve posts (with hardcoded max limit 10k)
This commit is contained in:
parent
26871ff539
commit
52f99b064b
|
@ -0,0 +1,3 @@
|
||||||
|
<?php chdir('../../../../../') ?>
|
||||||
|
<?php require 'base.php' ?>
|
||||||
|
<?php mod_php() ?>
|
|
@ -0,0 +1,41 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
instance_config();
|
||||||
|
|
||||||
|
$_ = function() {
|
||||||
|
$MAX_LIMIT = 10000;
|
||||||
|
$start = arg('*get.start', null, 'valid_mastodon_account_id');
|
||||||
|
$limit = arg('i:get.limit', $MAX_LIMIT);
|
||||||
|
if ($limit > $MAX_LIMIT)
|
||||||
|
$limit = $MAX_LIMIT;
|
||||||
|
$fields = "id, TRIM(CONCAT(spoiler_text, ' ', text)) AS post, created_at, updated_at";
|
||||||
|
$sql_all = '
|
||||||
|
SELECT '.$fields.', reblog_of_id
|
||||||
|
FROM statuses
|
||||||
|
WHERE id >= '.$start.'
|
||||||
|
ORDER BY id ASC LIMIT '.$limit.'
|
||||||
|
';
|
||||||
|
$pg = new PgDatabase();
|
||||||
|
if (!$pg->is_ok())
|
||||||
|
return apiresult(['error' => 'Unknown database error ocurred'], 500);
|
||||||
|
|
||||||
|
$objects = $pg->fetch_all($sql_all);
|
||||||
|
foreach ($objects as &$object) {
|
||||||
|
if ($object['reblog_of_id'] !== null)
|
||||||
|
$object['original'] = $pg->fetch("SELECT $fields FROM statuses WHERE id = {$object['reblog_of_id']} LIMIT 1");
|
||||||
|
unset($object['reblog_of_id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$delay = $pg->fetch('SELECT COUNT(1) FROM statuses WHERE id > '.$objects[count($objects)-1]['id']);
|
||||||
|
$delay = intval($delay['count']);
|
||||||
|
if ($delay > $limit)
|
||||||
|
$delay = ['total' => $delay, 'ticks' => intval($delay / $limit)];
|
||||||
|
|
||||||
|
$pg->close();
|
||||||
|
return apiresult([
|
||||||
|
'items' => $objects,
|
||||||
|
'limit' => $limit,
|
||||||
|
'delay' => $delay,
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
$_();
|
Loading…
Reference in New Issue