Add POST follow request Mastodon API endpoint
This commit is contained in:
parent
1625330e70
commit
2d47952921
|
@ -16,11 +16,18 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/ap
|
||||||
## Implemented endpoints
|
## Implemented endpoints
|
||||||
|
|
||||||
- [GET /api/v1/follow_requests](https://docs.joinmastodon.org/api/rest/follow-requests/#get-api-v1-follow-requests)
|
- [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](https://docs.joinmastodon.org/api/rest/instances)
|
||||||
- GET /api/v1/instance/peers - undocumented, but implemented by Mastodon and Pleroma
|
- GET /api/v1/instance/peers - undocumented, but implemented by Mastodon and Pleroma
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Non-implemented endpoints
|
## 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)
|
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ use Friendica\App\BaseURL;
|
||||||
use Friendica\Core\System;
|
use Friendica\Core\System;
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
|
use Friendica\Model\Introduction;
|
||||||
use Friendica\Module\Base\Api;
|
use Friendica\Module\Base\Api;
|
||||||
use Friendica\Network\HTTPException;
|
use Friendica\Network\HTTPException;
|
||||||
|
|
||||||
|
@ -24,6 +25,37 @@ class FollowRequests extends Api
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
* @param array $parameters
|
||||||
* @throws HTTPException\InternalServerErrorException
|
* @throws HTTPException\InternalServerErrorException
|
||||||
|
|
|
@ -30,6 +30,7 @@ return [
|
||||||
'/api' => [
|
'/api' => [
|
||||||
'/v1' => [
|
'/v1' => [
|
||||||
'/follow_requests' => [Module\Api\Mastodon\FollowRequests::class, [R::GET ]],
|
'/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' => [Module\Api\Mastodon\Instance::class, [R::GET]],
|
||||||
'/instance/peers' => [Module\Api\Mastodon\Instance\Peers::class, [R::GET]],
|
'/instance/peers' => [Module\Api\Mastodon\Instance\Peers::class, [R::GET]],
|
||||||
],
|
],
|
||||||
|
|
Loading…
Reference in a new issue