. * */ namespace Friendica\Module\Api\Mastodon; use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\DI; use Friendica\Module\BaseApi; /** * Apps class to register new OAuth clients */ class Apps extends BaseApi { /** * @param array $parameters * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function post(array $parameters = []) { $name = !isset($_REQUEST['client_name']) ? '' : $_REQUEST['client_name']; $redirect = !isset($_REQUEST['redirect_uris']) ? '' : $_REQUEST['redirect_uris']; $scopes = !isset($_REQUEST['scopes']) ? '' : $_REQUEST['scopes']; $website = !isset($_REQUEST['website']) ? '' : $_REQUEST['website']; if (empty($name) || empty($redirect)) { DI::mstdnError()->RecordNotFound(); } $client_id = bin2hex(openssl_random_pseudo_bytes(32)); $client_secret = bin2hex(openssl_random_pseudo_bytes(32)); $fields = ['client_id' => $client_id, 'client_secret' => $client_secret, 'name' => $name, 'redirect_uri' => $redirect]; if (!empty($scopes)) { $fields['scopes'] = $scopes; } if (!empty($website)) { $fields['website'] = $website; } if (!DBA::insert('application', $fields)) { DI::mstdnError()->RecordNotFound(); } System::jsonExit(DI::mstdnApplication()->createFromApplicationId(DBA::lastInsertId())); } }