From d30320f235a117202a9216335e63b7cef6e40d63 Mon Sep 17 00:00:00 2001 From: apc-harold <168640240+apc-harold@users.noreply.github.com> Date: Tue, 4 Jun 2024 12:06:59 +0100 Subject: [PATCH] Added filename support for the file payload --- src/ValueObjects/Transporter/Payload.php | 33 ++++++++++++++++++------ 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/ValueObjects/Transporter/Payload.php b/src/ValueObjects/Transporter/Payload.php index d5aa2110..5dd4b18d 100644 --- a/src/ValueObjects/Transporter/Payload.php +++ b/src/ValueObjects/Transporter/Payload.php @@ -140,6 +140,8 @@ public static function delete(string $resource, string $id): self /** * Creates a new Psr 7 Request instance. + * + * @throws ErrorException */ public function toRequest(BaseUri $baseUri, Headers $headers, QueryParams $queryParams): RequestInterface { @@ -168,19 +170,34 @@ public function toRequest(BaseUri $baseUri, Headers $headers, QueryParams $query $parameters = $this->parameters; foreach ($parameters as $key => $value) { - if (is_int($value) || is_float($value) || is_bool($value)) { + if ($key === 'file') { + if (is_array($value)) { + if (!isset($value['data'])) { + throw new ErrorException(['An array "file" parameter was provided without the required "data" key.']); + } + + if (!isset($value['fileName'])) { + throw new ErrorException(['An array "file" parameter was provided without the required "fileName" key.']); + } + + $streamBuilder->addResource( + $key, + $value['data'], + ['filename' => $value['fileName']] + ); + } else { + throw new ErrorException(['The "file" parameter must be an array.']); + } + } elseif (is_int($value) || is_float($value) || is_bool($value)) { $value = (string) $value; - } - - if (is_array($value)) { + $streamBuilder->addResource($key, $value); + } elseif (is_array($value)) { foreach ($value as $nestedValue) { $streamBuilder->addResource($key.'[]', $nestedValue); } - - continue; + } else { + $streamBuilder->addResource($key, $value); } - - $streamBuilder->addResource($key, $value); } $body = $streamBuilder->build();