Add POST follow request Mastodon API endpoint
This commit is contained in:
		
					parent
					
						
							
								1625330e70
							
						
					
				
			
			
				commit
				
					
						2d47952921
					
				
			
		
					 3 changed files with 44 additions and 4 deletions
				
			
		|  | @ -16,11 +16,18 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/ap | |||
| ## 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) | ||||
| 
 | ||||
|  |  | |||
|  | @ -7,6 +7,7 @@ use Friendica\App\BaseURL; | |||
| 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; | ||||
| 
 | ||||
|  | @ -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 | ||||
| 	 * @throws HTTPException\InternalServerErrorException | ||||
|  |  | |||
|  | @ -30,6 +30,7 @@ return [ | |||
| 	'/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]], | ||||
| 		], | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue