Skip to content

Commit 01b67f2

Browse files
committed
feat: Implement ITriggerableProvider for task processing providers
1 parent 83d5152 commit 01b67f2

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

lib/Service/ProvidersAI/TaskProcessingService.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
use OCA\AppAPI\AppInfo\Application;
1414
use OCA\AppAPI\Db\TaskProcessing\TaskProcessingProvider;
1515
use OCA\AppAPI\Db\TaskProcessing\TaskProcessingProviderMapper;
16+
use OCA\AppAPI\PublicFunctions;
17+
use OCA\AppAPI\Service\AppAPIService;
1618
use OCP\AppFramework\Bootstrap\IRegistrationContext;
1719
use OCP\AppFramework\Db\DoesNotExistException;
1820
use OCP\AppFramework\Db\MultipleObjectsReturnedException;
@@ -22,6 +24,7 @@
2224
use OCP\IServerContainer;
2325
use OCP\TaskProcessing\EShapeType;
2426
use OCP\TaskProcessing\IProvider;
27+
use OCP\TaskProcessing\ITriggerableProvider;
2528
use OCP\TaskProcessing\ITaskType;
2629
use OCP\TaskProcessing\ShapeDescriptor;
2730
use OCP\TaskProcessing\ShapeEnumValue;
@@ -35,6 +38,7 @@ public function __construct(
3538
ICacheFactory $cacheFactory,
3639
private readonly TaskProcessingProviderMapper $mapper,
3740
private readonly LoggerInterface $logger,
41+
private readonly PublicFunctions $service,
3842
) {
3943
if ($cacheFactory->isAvailable()) {
4044
$this->cache = $cacheFactory->createDistributed(Application::APP_ID . '/ex_task_processing_providers');
@@ -241,7 +245,7 @@ public function registerExAppTaskProcessingProviders(IRegistrationContext $conte
241245
$className = '\\OCA\\AppAPI\\' . $exAppProvider->getAppId() . '\\' . $exAppProvider->getName();
242246

243247
try {
244-
$provider = $this->getAnonymousExAppProvider(json_decode($exAppProvider->getProvider(), true, flags: JSON_THROW_ON_ERROR));
248+
$provider = $this->getAnonymousExAppProvider(json_decode($exAppProvider->getProvider(), true, flags: JSON_THROW_ON_ERROR), $exAppProvider->getAppId());
245249
} catch (JsonException $e) {
246250
$this->logger->debug('Failed to register ExApp TaskProcessing provider', ['exAppId' => $exAppProvider->getAppId(), 'taskType' => $exAppProvider->getName(), 'exception' => $e]);
247251
continue;
@@ -261,10 +265,13 @@ public function registerExAppTaskProcessingProviders(IRegistrationContext $conte
261265
*/
262266
public function getAnonymousExAppProvider(
263267
array $provider,
268+
string $appId,
264269
): IProvider {
265-
return new class($provider) implements IProvider {
270+
return new class($provider, $appId, $this->service) implements IProvider, ITriggerableProvider {
266271
public function __construct(
267272
private readonly array $provider,
273+
private readonly string $appId,
274+
private readonly PublicFunctions $service,
268275
) {
269276
}
270277

@@ -280,6 +287,10 @@ public function getTaskTypeId(): string {
280287
return $this->provider['task_type'];
281288
}
282289

290+
public function trigger(): void {
291+
$this->service->exAppRequest($this->appId, '/trigger', params: ['providerId' => $this->provider['id']]);
292+
}
293+
283294
public function getExpectedRuntime(): int {
284295
return $this->provider['expected_runtime'];
285296
}

0 commit comments

Comments
 (0)