1919
2020use Psr \Http \Message \ServerRequestInterface ;
2121use Psr \Http \Message \StreamInterface ;
22+ use Psr \Http \Message \UploadedFileInterface ;
2223use Psr \Http \Message \UriInterface ;
2324
2425/**
2526 * Class ServerRequest.
27+ *
28+ * @author Divine Niiquaye Ibok <divineibok@gmail.com>
2629 */
2730class 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