diff options
author | Alexander Piskun <13381981+bigcat88@users.noreply.github.com> | 2024-07-12 23:29:55 +0300 |
---|---|---|
committer | Alexander Piskun <bigcat88@icloud.com> | 2024-07-16 19:36:43 +0300 |
commit | 696ece2f52f5c78987c48fa569b07ec0d4ac0660 (patch) | |
tree | d90479c8bfbe10a1fd8bc77b325340dc33b3fbf1 /build/stubs | |
parent | a2ded2005086df9fc8c05beb68452c2cee571203 (diff) | |
download | nextcloud-server-696ece2f52f5c78987c48fa569b07ec0d4ac0660.tar.gz nextcloud-server-696ece2f52f5c78987c48fa569b07ec0d4ac0660.zip |
feat: webhooks_listeners app support for sending direct requests to ExApps using AppAPI.
Signed-off-by: Alexander Piskun <bigcat88@icloud.com>
Diffstat (limited to 'build/stubs')
-rw-r--r-- | build/stubs/app_api.php | 101 |
1 files changed, 89 insertions, 12 deletions
diff --git a/build/stubs/app_api.php b/build/stubs/app_api.php index 1ab63499b77..04a6042dffd 100644 --- a/build/stubs/app_api.php +++ b/build/stubs/app_api.php @@ -1,15 +1,92 @@ <?php -namespace OCA\AppAPI\Service; - -use OCP\IRequest; - -class AppAPIService { - /** - * @param IRequest $request - * @param bool $isDav - * - * @return bool - */ - public function validateExAppRequestToNC(IRequest $request, bool $isDav = false): bool {} +namespace OCA\AppAPI\Service { + use OCP\IRequest; + + class AppAPIService { + /** + * @param IRequest $request + * @param bool $isDav + * + * @return bool + */ + public function validateExAppRequestToNC(IRequest $request, bool $isDav = false): bool {} + } +} + +namespace OCA\AppAPI { + + use OCP\IRequest; + use OCP\Http\Client\IPromise; + use OCP\Http\Client\IResponse; + + class PublicFunctions { + + public function __construct( + private readonly ExAppService $exAppService, + private readonly AppAPIService $service, + ) { + } + + /** + * Request to ExApp with AppAPI auth headers + */ + public function exAppRequest( + string $appId, + string $route, + ?string $userId = null, + string $method = 'POST', + array $params = [], + array $options = [], + ?IRequest $request = null, + ): array|IResponse { + $exApp = $this->exAppService->getExApp($appId); + if ($exApp === null) { + return ['error' => sprintf('ExApp `%s` not found', $appId)]; + } + return $this->service->requestToExApp($exApp, $route, $userId, $method, $params, $options, $request); + } + + /** + * Async request to ExApp with AppAPI auth headers + * + * @throws \Exception if ExApp not found + */ + public function asyncExAppRequest( + string $appId, + string $route, + ?string $userId = null, + string $method = 'POST', + array $params = [], + array $options = [], + ?IRequest $request = null, + ): IPromise { + $exApp = $this->exAppService->getExApp($appId); + if ($exApp === null) { + throw new \Exception(sprintf('ExApp `%s` not found', $appId)); + } + return $this->service->requestToExAppAsync($exApp, $route, $userId, $method, $params, $options, $request); + } + + /** + * Get basic ExApp info by appid + * + * @param string $appId + * + * @return array|null ExApp info (appid, version, name, enabled) or null if no ExApp found + */ + public function getExApp(string $appId): ?array { + $exApp = $this->exAppService->getExApp($appId); + if ($exApp !== null) { + $info = $exApp->jsonSerialize(); + return [ + 'appid' => $info['appid'], + 'version' => $info['version'], + 'name' => $info['name'], + 'enabled' => $info['enabled'], + ]; + } + return null; + } + } } |