44
55use AsyncAws \Core \Exception \InvalidArgument ;
66use AsyncAws \Core \Exception \LogicException ;
7+ use AsyncAws \Core \HttpClient \BuildHttpQueryTrait ;
78use AsyncAws \Core \Stream \RequestStream ;
89
910/**
1314 */
1415final class Request
1516{
17+ use BuildHttpQueryTrait;
18+
1619 /**
1720 * @var string
1821 */
@@ -39,7 +42,7 @@ final class Request
3942 private $ queryString ;
4043
4144 /**
42- * @var array<string, string>
45+ * @var array<string, string|string[] >
4346 */
4447 private $ query ;
4548
@@ -59,8 +62,8 @@ final class Request
5962 private $ parsed ;
6063
6164 /**
62- * @param array<string, string> $query
63- * @param array<string, string> $headers
65+ * @param array<string, string|string[] > $query
66+ * @param array<string, string> $headers
6467 */
6568 public function __construct (string $ method , string $ uri , array $ query , array $ headers , RequestStream $ body , string $ hostPrefix = '' )
6669 {
@@ -141,20 +144,26 @@ public function removeQueryAttribute(string $name): void
141144 $ this ->endpoint = '' ;
142145 }
143146
144- public function setQueryAttribute (string $ name , string $ value ): void
147+ /**
148+ * @param string|string[] $value
149+ */
150+ public function setQueryAttribute (string $ name , string |array $ value ): void
145151 {
146152 $ this ->query [$ name ] = $ value ;
147153 $ this ->queryString = null ;
148154 $ this ->endpoint = '' ;
149155 }
150156
151- public function getQueryAttribute (string $ name ): ?string
157+ /**
158+ * @return string|string[]|null
159+ */
160+ public function getQueryAttribute (string $ name ): string |array |null
152161 {
153162 return $ this ->query [$ name ] ?? null ;
154163 }
155164
156165 /**
157- * @return array<string, string>
166+ * @return array<string, string|string[] >
158167 */
159168 public function getQuery (): array
160169 {
@@ -207,7 +216,7 @@ public function setEndpoint(string $endpoint): void
207216 private function getQueryString (): string
208217 {
209218 if (null === $ this ->queryString ) {
210- $ this ->queryString = http_build_query ($ this ->query , '' , ' & ' , \ PHP_QUERY_RFC3986 );
219+ $ this ->queryString = $ this -> buildHttpQuery ($ this ->query );
211220 }
212221
213222 return $ this ->queryString ;
0 commit comments