1313use OCA \AppAPI \AppInfo \Application ;
1414use OCA \AppAPI \Db \TaskProcessing \TaskProcessingProvider ;
1515use OCA \AppAPI \Db \TaskProcessing \TaskProcessingProviderMapper ;
16+ use OCA \AppAPI \PublicFunctions ;
17+ use OCA \AppAPI \Service \AppAPIService ;
1618use OCP \AppFramework \Bootstrap \IRegistrationContext ;
1719use OCP \AppFramework \Db \DoesNotExistException ;
1820use OCP \AppFramework \Db \MultipleObjectsReturnedException ;
2224use OCP \IServerContainer ;
2325use OCP \TaskProcessing \EShapeType ;
2426use OCP \TaskProcessing \IProvider ;
27+ use OCP \TaskProcessing \ITriggerableProvider ;
2528use OCP \TaskProcessing \ITaskType ;
2629use OCP \TaskProcessing \ShapeDescriptor ;
2730use 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