diff --git a/appinfo/info.xml b/appinfo/info.xml index 513db5ab1..5bb186cae 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -13,7 +13,7 @@ The OpenConnector Nextcloud app provides a ESB-framework to work together in an - 🆓 Map and translate API calls ]]> - 0.2.8 + 0.2.10 agpl integration Conduction diff --git a/composer.json b/composer.json index 6985b9035..7565306a2 100644 --- a/composer.json +++ b/composer.json @@ -79,16 +79,15 @@ "react/event-loop": "^1.5", "react/promise": "^3.2", "symfony/console": "^5.4", + "symfony/options-resolver": "^7.0", "symfony/uid": "^6.4", + "symfony/var-exporter": "^7.2.5", "symfony/yaml": "^6.4", "twig/twig": "^3.14", "web-token/jwt-framework": "^3" }, "require-dev": { - "edgedesign/phpqa": "^1.27", - "nextcloud/coding-standard": "^1.4", "nextcloud/ocp": "dev-stable29", - "phpcsstandards/phpcsextra": "^1.4", "phpmd/phpmd": "^2.15", "phpmetrics/phpmetrics": "^2.8", "phpunit/phpunit": "^10.5", diff --git a/composer.lock b/composer.lock index c77f83c69..bb8582f38 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f5b97cf556459431b2f77f8b8b806970", + "content-hash": "b3751edd576180554d20a3ecd1400087", "packages": [ { "name": "adbario/php-dot-notation", @@ -3936,20 +3936,20 @@ }, { "name": "symfony/options-resolver", - "version": "v8.0.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7" + "reference": "b38026df55197f9e39a44f3215788edf83187b80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d2b592535ffa6600c265a3893a7f7fd2bad82dd7", - "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b38026df55197f9e39a44f3215788edf83187b80", + "reference": "b38026df55197f9e39a44f3215788edf83187b80", "shasum": "" }, "require": { - "php": ">=8.4", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", @@ -3983,7 +3983,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v8.0.0" + "source": "https://github.com/symfony/options-resolver/tree/v7.4.0" }, "funding": [ { @@ -4003,7 +4003,7 @@ "type": "tidelift" } ], - "time": "2025-11-12T15:55:31+00:00" + "time": "2025-11-12T15:39:26+00:00" }, { "name": "symfony/polyfill-ctype", @@ -5171,25 +5171,26 @@ }, { "name": "symfony/var-exporter", - "version": "v8.0.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "7345f46c251f2eb27c7b3ebdb5bb076b3ffcae04" + "reference": "03a60f169c79a28513a78c967316fbc8bf17816f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/7345f46c251f2eb27c7b3ebdb5bb076b3ffcae04", - "reference": "7345f46c251f2eb27c7b3ebdb5bb076b3ffcae04", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/03a60f169c79a28513a78c967316fbc8bf17816f", + "reference": "03a60f169c79a28513a78c967316fbc8bf17816f", "shasum": "" }, "require": { - "php": ">=8.4" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/property-access": "^7.4|^8.0", - "symfony/serializer": "^7.4|^8.0", - "symfony/var-dumper": "^7.4|^8.0" + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -5227,7 +5228,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v8.0.0" + "source": "https://github.com/symfony/var-exporter/tree/v7.4.0" }, "funding": [ { @@ -5247,7 +5248,7 @@ "type": "tidelift" } ], - "time": "2025-11-05T18:53:00+00:00" + "time": "2025-09-11T10:15:23+00:00" }, { "name": "symfony/yaml", @@ -9884,7 +9885,7 @@ "ext-libxml": "*", "ext-simplexml": "*" }, - "platform-dev": [], + "platform-dev": {}, "platform-overrides": { "php": "8.3" }, diff --git a/lib/Service/EndpointService.php b/lib/Service/EndpointService.php index 409a8b3d2..350de1ef8 100644 --- a/lib/Service/EndpointService.php +++ b/lib/Service/EndpointService.php @@ -1164,7 +1164,7 @@ private function processRules(Endpoint $endpoint, IRequest $request, array $data 'extend_input' => $this->processExtendInputRule(rule: $rule, data: $data), 'extend_external_input' => $this->ruleService->extendExternalUrl(rule: $rule, data: $data), 'audit_trail' => $this->processAuditTrailRule(rule: $rule, endpoint: $endpoint, data: $data, objectId: $objectId), - 'write_file' => $this->processWriteFileRule(rule: $rule, data: $data, objectId: $objectId), + 'write_file' => $this->processWriteFileRule(rule: $rule, data: $data, objectId: $objectId, flowToken: $flowToken), 'locking' => $this->processLockingRule(rule: $rule, data: $data, objectId: $objectId), 'override' => $this->processOverrideRule(rule: $rule, data: $data, objectId: $objectId), 'custom' => $this->processCustomRule(rule: $rule, data: $data), @@ -1544,7 +1544,7 @@ private function processCustomRule(Rule $rule, array $data): array|JSONResponse * @throws NotFoundExceptionInterface * @throws Exception */ - private function processWriteFileRule(Rule $rule, array $data, string $objectId): array + private function processWriteFileRule(Rule $rule, array $data, string $objectId, FlowToken $flowToken): array { if (isset($rule->getConfiguration()['write_file']) === false) { throw new Exception('No configuration found for write_file'); @@ -1552,7 +1552,12 @@ private function processWriteFileRule(Rule $rule, array $data, string $objectId) $config = $rule->getConfiguration()['write_file']; $dataDot = new Dot($data); - $files = $dataDot[$config['filePath']]; + $flowTokenArray = $flowToken->getRequestOriginal(); + $flowTokenArray['body'] = $flowTokenArray['parameters']; + $flowTokenDot = new Dot($flowTokenArray); + + + $files = $dataDot[$config['filePath']] ?? $flowTokenDot[$config['filePath']]; if (isset($files) === false || empty($files) === true) { return $dataDot->jsonSerialize(); } @@ -1596,7 +1601,7 @@ private function processWriteFileRule(Rule $rule, array $data, string $objectId) $dataDot[$config['filePath']] = $result; } else { $content = $files; - $fileName = $dataDot[$config['fileNamePath']]; + $fileName = $dataDot[$config['fileNamePath']] ?? $flowTokenDot[$config['fileNamePath']]; try { // Write file with OpenRegister ObjectService.