From 3e4af13772b189392272c9dfaad90054fe1d7173 Mon Sep 17 00:00:00 2001 From: Pierre Rudloff Date: Mon, 18 Dec 2017 15:18:31 +0100 Subject: [PATCH] Implement the blocks/list API --- doc/api.md | 14 +++++++++++++- include/api.php | 31 ++++++++++++++++++++++++++++++- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/doc/api.md b/doc/api.md index 159bc6991..ba8625a44 100644 --- a/doc/api.md +++ b/doc/api.md @@ -278,6 +278,19 @@ Friendica doesn't allow showing the friends of other users. * include_entities: "true" shows entities for pictures and links (Default: false) +--- +### blocks/list (*; AUTH) + +#### Parameters + +* include_entities: "true" shows entities for pictures and links (Default: false) +* count: Items per page (default: 20). +* page: page number + +#### Unsupported parameters +* cursor +* skip_status + --- ### statuses/friends_timeline (*; AUTH) #### Parameters @@ -941,7 +954,6 @@ The following API calls from the Twitter API are not implemented in either Frien * account/update_delivery_device * account/update_profile * account/update_profile_background_image -* blocks/list * blocks/ids * users/lookup * users/show diff --git a/include/api.php b/include/api.php index 2aa8fc645..9c64b4a3c 100644 --- a/include/api.php +++ b/include/api.php @@ -3055,12 +3055,19 @@ function api_statuses_f($qtype) $sql_extra = " AND false "; } + if ($qtype == 'blocks') { + $sql_blocked = 'AND `blocked`'; + } else { + $sql_blocked = 'AND NOT `blocked`'; + } + $r = q( "SELECT `nurl` FROM `contact` WHERE `uid` = %d AND NOT `self` - AND (NOT `blocked` OR `pending`) + $sql_blocked + AND NOT `pending` $sql_extra ORDER BY `nick` LIMIT %d, %d", @@ -3123,6 +3130,28 @@ function api_statuses_followers($type) api_register_func('api/statuses/friends', 'api_statuses_friends', true); api_register_func('api/statuses/followers', 'api_statuses_followers', true); +/** + * Returns the list of blocked users + * + * @see https://developer.twitter.com/en/docs/accounts-and-users/mute-block-report-users/api-reference/get-blocks-list + * + * @param string $type Either "json" or "xml" + * + * @return boolean|string|array + * @throws UnauthorizedException + */ +function api_blocks_list($type) +{ + $data = api_statuses_f('blocks'); + if ($data === false) { + return false; + } + return api_format_data("users", $type, $data); +} + +/// @TODO move to top of file or somewhere better +api_register_func('api/blocks/list', 'api_blocks_list', true); + function api_statusnet_config($type) { $a = get_app();