## Implemented endpoints
- [GET /api/v1/follow_requests](https://docs.joinmastodon.org/api/rest/follow-requests/#get-api-v1-follow-requests)
+- [POST /api/v1/follow_requests/:id/authorize](https://docs.joinmastodon.org/api/rest/follow-requests/#post-api-v1-follow-requests-id-authorize)
+ - Returns a [Relationship](https://docs.joinmastodon.org/api/entities/#relationship) object.
+- [POST /api/v1/follow_requests/:id/reject](https://docs.joinmastodon.org/api/rest/follow-requests/#post-api-v1-follow-requests-id-reject)
+ - Returns a [Relationship](https://docs.joinmastodon.org/api/entities/#relationship) object.
+- POST /api/v1/follow_requests/:id/ignore
+ - Friendica-specific, hides the follow request from the list and prevents the remote contact from retrying.
+ - Returns a [Relationship](https://docs.joinmastodon.org/api/entities/#relationship) object.
+
+
- [GET /api/v1/instance](https://docs.joinmastodon.org/api/rest/instances)
- GET /api/v1/instance/peers - undocumented, but implemented by Mastodon and Pleroma
-## Non-implemented endpoints
-- [POST /api/v1/follow_requests/:id/authorize](https://docs.joinmastodon.org/api/rest/follow-requests/#post-api-v1-follow-requests-id-authorize)
-- [POST /api/v1/follow_requests/:id/reject](https://docs.joinmastodon.org/api/rest/follow-requests/#post-api-v1-follow-requests-id-reject)
+## Non-implemented endpoints
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\Model\Contact;
+use Friendica\Model\Introduction;
use Friendica\Module\Base\Api;
use Friendica\Network\HTTPException;
}
}
+ public static function post(array $parameters = [])
+ {
+ parent::post($parameters);
+
+ /** @var Introduction $Intro */
+ $Intro = self::getClass(Introduction::class);
+ $Intro->fetch(['id' => $parameters['id'], 'uid' => self::$current_user_id]);
+
+ $contactId = $Intro->{'contact-id'};
+
+ $relationship = new Mastodon\Relationship();
+ $relationship->id = $contactId;
+
+ switch ($parameters['action']) {
+ case 'authorize':
+ $Intro->confirm();
+ $relationship = Mastodon\Relationship::createFromContact(Contact::getById($contactId));
+ break;
+ case 'ignore':
+ $Intro->ignore();
+ break;
+ case 'reject':
+ $Intro->discard();
+ break;
+ default:
+ throw new HTTPException\BadRequestException('Unexpected action parameter, expecting "authorize", "ignore" or "reject"');
+ }
+
+ System::jsonExit($relationship);
+ }
+
/**
* @param array $parameters
* @throws HTTPException\InternalServerErrorException
'/api' => [
'/v1' => [
'/follow_requests' => [Module\Api\Mastodon\FollowRequests::class, [R::GET ]],
+ '/follow_requests/{id:\d+}/{action}' => [Module\Api\Mastodon\FollowRequests::class, [ R::POST]],
'/instance' => [Module\Api\Mastodon\Instance::class, [R::GET]],
'/instance/peers' => [Module\Api\Mastodon\Instance\Peers::class, [R::GET]],
],