aboutsummaryrefslogtreecommitdiffstats
path: root/build/stubs
diff options
context:
space:
mode:
authorAlexander Piskun <13381981+bigcat88@users.noreply.github.com>2024-07-12 23:29:55 +0300
committerAlexander Piskun <bigcat88@icloud.com>2024-07-16 19:36:43 +0300
commit696ece2f52f5c78987c48fa569b07ec0d4ac0660 (patch)
treed90479c8bfbe10a1fd8bc77b325340dc33b3fbf1 /build/stubs
parenta2ded2005086df9fc8c05beb68452c2cee571203 (diff)
downloadnextcloud-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.php101
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;
+ }
+ }
}