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.