3 * @copyright Copyright (C) 2010-2023, the Friendica project
5 * @license GNU AGPL version 3 or any later version
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Affero General Public License as
9 * published by the Free Software Foundation, either version 3 of the
10 * License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Affero General Public License for more details.
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 namespace Friendica\Factory\Api\Mastodon;
24 use Friendica\BaseFactory;
25 use Friendica\Database\Database;
26 use Friendica\Network\HTTPException\UnprocessableEntityException;
27 use Psr\Log\LoggerInterface;
29 class Application extends BaseFactory
34 public function __construct(LoggerInterface $logger, Database $dba)
36 parent::__construct($logger);
41 * @param int $id Application ID
43 * @return \Friendica\Object\Api\Mastodon\Application
44 * @throws UnprocessableEntityException
46 public function createFromApplicationId(int $id): \Friendica\Object\Api\Mastodon\Application
48 $application = $this->dba->selectFirst('application', ['client_id', 'client_secret', 'id', 'name', 'redirect_uri', 'website'], ['id' => $id]);
49 if (!$this->dba->isResult($application)) {
50 throw new UnprocessableEntityException(sprintf("ID '%s' not found", $id));
53 return new \Friendica\Object\Api\Mastodon\Application(
55 $application['client_id'],
56 $application['client_secret'],
58 $application['redirect_uri'],
59 $application['website']);