-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathPublicFunctions.php
130 lines (119 loc) · 3.37 KB
/
PublicFunctions.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AppAPI;
use OCA\AppAPI\Service\AppAPIService;
use OCA\AppAPI\Service\ExAppService;
use OCP\Http\Client\IPromise;
use OCP\Http\Client\IResponse;
use OCP\IRequest;
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);
}
/**
* Request to ExApp with AppAPI auth headers and ExApp user initialization
*
* @deprecated since AppAPI 3.0.0, use `exAppRequest` instead
*/
public function exAppRequestWithUserInit(
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);
}
/**
* Async request to ExApp with AppAPI auth headers and ExApp user initialization
*
* @throws \Exception if ExApp not found or failed to setup ExApp user
*
* @deprecated since AppAPI 3.0.0, use `asyncExAppRequest` instead
*/
public function asyncExAppRequestWithUserInit(
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;
}
}