Skip to content

Commit b1ec69e

Browse files
Improved the server request class
- Fixed parsed body content fetch - Fixed uploaded files setting and getting issue.
1 parent 495da2c commit b1ec69e

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

src/ServerRequest.php

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,13 @@
1919

2020
use Psr\Http\Message\ServerRequestInterface;
2121
use Psr\Http\Message\StreamInterface;
22+
use Psr\Http\Message\UploadedFileInterface;
2223
use Psr\Http\Message\UriInterface;
2324

2425
/**
2526
* Class ServerRequest.
27+
*
28+
* @author Divine Niiquaye Ibok <divineibok@gmail.com>
2629
*/
2730
class ServerRequest extends Request implements ServerRequestInterface
2831
{
@@ -68,7 +71,7 @@ public function getCookieParams()
6871
*/
6972
public function getParsedBody()
7073
{
71-
return 0 === $this->message->request->count() ? $this->message->request->all() : null;
74+
return $this->message->request->count() > 0 ? $this->message->request->all() : null;
7275
}
7376

7477
/**
@@ -92,7 +95,9 @@ public function getServerParams()
9295
*/
9396
public function getUploadedFiles()
9497
{
95-
return $this->message->files->all();
98+
return \array_map(function (\Symfony\Component\HttpFoundation\File\UploadedFile $v) {
99+
return new UploadedFile($v->getUploadedFile()->getPath(), $v->getSize(), $v->getError(), $v->getClientFilename(), $v->getClientMediaType());
100+
}, $this->message->files->all());
96101
}
97102

98103
/**
@@ -123,7 +128,7 @@ public function withoutAttribute($name): self
123128
public function withCookieParams(array $cookies): self
124129
{
125130
$new = clone $this;
126-
$new->message->cookies->add($cookies);
131+
$new->message->cookies->replace($cookies);
127132

128133
return $new;
129134
}
@@ -155,7 +160,7 @@ public function withParsedBody($data): self
155160
public function withQueryParams(array $query): self
156161
{
157162
$new = clone $this;
158-
$new->message->query->add($query);
163+
$new->message->query->replace($query);
159164

160165
return $new;
161166
}
@@ -165,8 +170,21 @@ public function withQueryParams(array $query): self
165170
*/
166171
public function withUploadedFiles(array $uploadedFiles): self
167172
{
173+
foreach ($uploadedFiles as $offset => $uploadedFile) {
174+
if ($uploadedFile instanceof UploadedFile) {
175+
$uploadedFiles[$offset] = $uploadedFile->getUploadedFile();
176+
continue;
177+
}
178+
$uploadedFiles[$offset] = [
179+
'error' => $uploadedFile->getError(),
180+
'name' => $uploadedFile->getClientFilename(),
181+
'type' => $uploadedFile->getClientMediaType(),
182+
'tmp_name' => $uploadedFile->getStream()->getMetadata('uri'),
183+
'size' => $uploadedFile->getSize(),
184+
];
185+
}
168186
$new = clone $this;
169-
$new->message->files->add($uploadedFiles);
187+
$new->message->files->replace($uploadedFiles);
170188

171189
return $new;
172190
}

0 commit comments

Comments
 (0)