API: Reworked request parameter handling

This commit is contained in:
Michael 2021-05-18 19:26:46 +00:00
parent dbd349b92e
commit e5c1b90668
16 changed files with 233 additions and 265 deletions

View file

@ -50,64 +50,51 @@ class Notifications extends BaseApi
System::jsonExit(DI::mstdnNotification()->createFromNotifyId($id));
}
$request = self::getRequest(['max_id' => 0, 'since_id' => 0, 'min_id' => 0, 'limit' => 20,
'exclude_types' => [], 'account_id' => 0, 'with_muted' => false]);
$request = self::getRequest([
'max_id' => 0, // Return results older than this ID
'since_id' => 0, // Return results newer than this ID
'min_id' => 0, // Return results immediately newer than this ID
'limit' => 20, // Maximum number of results to return (default 20)
'exclude_types' => [], // Array of types to exclude (follow, favourite, reblog, mention, poll, follow_request)
'account_id' => 0, // Return only notifications received from this account
'with_muted' => false, // Unknown parameter
'count' => 0, // Unknown parameter
]);
// Return results older than this ID
$max_id = $request['max_id'];
// Return results newer than this ID
$since_id = $request['since_id'];
// Return results immediately newer than this ID
$min_id = $request['min_id'];
// Maximum number of results to return (default 20)
$limit = $request['limit'];
// Array of types to exclude (follow, favourite, reblog, mention, poll, follow_request)
$exclude_types = $request['exclude_types'];
// Return only notifications received from this account
$account_id = $request['account_id'];
// Unknown parameter
$with_muted = $request['with_muted'];
$params = ['order' => ['id' => true], 'limit' => $limit];
$params = ['order' => ['id' => true], 'limit' => $request['limit']];
$condition = ['uid' => $uid, 'seen' => false, 'type' => []];
if (!empty($account_id)) {
$contact = Contact::getById($account_id, ['url']);
if (!empty($request['account_id'])) {
$contact = Contact::getById($request['account_id'], ['url']);
if (!empty($contact['url'])) {
$condition['url'] = $contact['url'];
}
}
if (!in_array('follow_request', $exclude_types)) {
if (!in_array('follow_request', $request['exclude_types'])) {
$condition['type'] = array_merge($condition['type'], [Notification\Type::INTRO]);
}
if (!in_array('mention', $exclude_types)) {
if (!in_array('mention', $request['exclude_types'])) {
$condition['type'] = array_merge($condition['type'],
[Notification\Type::WALL, Notification\Type::COMMENT, Notification\Type::MAIL, Notification\Type::TAG_SELF, Notification\Type::POKE]);
}
if (!in_array('status', $exclude_types)) {
if (!in_array('status', $request['exclude_types'])) {
$condition['type'] = array_merge($condition['type'], [Notification\Type::SHARE]);
}
if (!empty($max_id)) {
$condition = DBA::mergeConditions($condition, ["`id` < ?", $max_id]);
if (!empty($request['max_id'])) {
$condition = DBA::mergeConditions($condition, ["`id` < ?", $request['max_id']]);
}
if (!empty($since_id)) {
$condition = DBA::mergeConditions($condition, ["`id` > ?", $since_id]);
if (!empty($request['since_id'])) {
$condition = DBA::mergeConditions($condition, ["`id` > ?", $request['since_id']]);
}
if (!empty($min_id)) {
$condition = DBA::mergeConditions($condition, ["`id` > ?", $min_id]);
if (!empty($request['min_id'])) {
$condition = DBA::mergeConditions($condition, ["`id` > ?", $request['min_id']]);
$params['order'] = ['id'];
}
@ -119,7 +106,7 @@ class Notifications extends BaseApi
$notifications[] = DI::mstdnNotification()->createFromNotifyId($notification['id']);
}
if (!empty($min_id)) {
if (!empty($request['min_id'])) {
array_reverse($notifications);
}