Browse code

added appinfo/info.xml appinfo/signature.json CHANGELOG.txt lib/AppInfo/Application.php css/style.css providers/Plivo

DoubleBastionAdmin authored on 05/11/2025 13:35:09
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,261 @@
1
+<?php
2
+
3
+namespace Psr\Http\Message;
4
+
5
+/**
6
+ * Representation of an incoming, server-side HTTP request.
7
+ *
8
+ * Per the HTTP specification, this interface includes properties for
9
+ * each of the following:
10
+ *
11
+ * - Protocol version
12
+ * - HTTP method
13
+ * - URI
14
+ * - Headers
15
+ * - Message body
16
+ *
17
+ * Additionally, it encapsulates all data as it has arrived to the
18
+ * application from the CGI and/or PHP environment, including:
19
+ *
20
+ * - The values represented in $_SERVER.
21
+ * - Any cookies provided (generally via $_COOKIE)
22
+ * - Query string arguments (generally via $_GET, or as parsed via parse_str())
23
+ * - Upload files, if any (as represented by $_FILES)
24
+ * - Deserialized body parameters (generally from $_POST)
25
+ *
26
+ * $_SERVER values MUST be treated as immutable, as they represent application
27
+ * state at the time of request; as such, no methods are provided to allow
28
+ * modification of those values. The other values provide such methods, as they
29
+ * can be restored from $_SERVER or the request body, and may need treatment
30
+ * during the application (e.g., body parameters may be deserialized based on
31
+ * content type).
32
+ *
33
+ * Additionally, this interface recognizes the utility of introspecting a
34
+ * request to derive and match additional parameters (e.g., via URI path
35
+ * matching, decrypting cookie values, deserializing non-form-encoded body
36
+ * content, matching authorization headers to users, etc). These parameters
37
+ * are stored in an "attributes" property.
38
+ *
39
+ * Requests are considered immutable; all methods that might change state MUST
40
+ * be implemented such that they retain the internal state of the current
41
+ * message and return an instance that contains the changed state.
42
+ */
43
+interface ServerRequestInterface extends RequestInterface
44
+{
45
+    /**
46
+     * Retrieve server parameters.
47
+     *
48
+     * Retrieves data related to the incoming request environment,
49
+     * typically derived from PHP's $_SERVER superglobal. The data IS NOT
50
+     * REQUIRED to originate from $_SERVER.
51
+     *
52
+     * @return array
53
+     */
54
+    public function getServerParams(): array;
55
+
56
+    /**
57
+     * Retrieve cookies.
58
+     *
59
+     * Retrieves cookies sent by the client to the server.
60
+     *
61
+     * The data MUST be compatible with the structure of the $_COOKIE
62
+     * superglobal.
63
+     *
64
+     * @return array
65
+     */
66
+    public function getCookieParams(): array;
67
+
68
+    /**
69
+     * Return an instance with the specified cookies.
70
+     *
71
+     * The data IS NOT REQUIRED to come from the $_COOKIE superglobal, but MUST
72
+     * be compatible with the structure of $_COOKIE. Typically, this data will
73
+     * be injected at instantiation.
74
+     *
75
+     * This method MUST NOT update the related Cookie header of the request
76
+     * instance, nor related values in the server params.
77
+     *
78
+     * This method MUST be implemented in such a way as to retain the
79
+     * immutability of the message, and MUST return an instance that has the
80
+     * updated cookie values.
81
+     *
82
+     * @param array $cookies Array of key/value pairs representing cookies.
83
+     * @return static
84
+     */
85
+    public function withCookieParams(array $cookies): ServerRequestInterface;
86
+
87
+    /**
88
+     * Retrieve query string arguments.
89
+     *
90
+     * Retrieves the deserialized query string arguments, if any.
91
+     *
92
+     * Note: the query params might not be in sync with the URI or server
93
+     * params. If you need to ensure you are only getting the original
94
+     * values, you may need to parse the query string from `getUri()->getQuery()`
95
+     * or from the `QUERY_STRING` server param.
96
+     *
97
+     * @return array
98
+     */
99
+    public function getQueryParams(): array;
100
+
101
+    /**
102
+     * Return an instance with the specified query string arguments.
103
+     *
104
+     * These values SHOULD remain immutable over the course of the incoming
105
+     * request. They MAY be injected during instantiation, such as from PHP's
106
+     * $_GET superglobal, or MAY be derived from some other value such as the
107
+     * URI. In cases where the arguments are parsed from the URI, the data
108
+     * MUST be compatible with what PHP's parse_str() would return for
109
+     * purposes of how duplicate query parameters are handled, and how nested
110
+     * sets are handled.
111
+     *
112
+     * Setting query string arguments MUST NOT change the URI stored by the
113
+     * request, nor the values in the server params.
114
+     *
115
+     * This method MUST be implemented in such a way as to retain the
116
+     * immutability of the message, and MUST return an instance that has the
117
+     * updated query string arguments.
118
+     *
119
+     * @param array $query Array of query string arguments, typically from
120
+     *     $_GET.
121
+     * @return static
122
+     */
123
+    public function withQueryParams(array $query): ServerRequestInterface;
124
+
125
+    /**
126
+     * Retrieve normalized file upload data.
127
+     *
128
+     * This method returns upload metadata in a normalized tree, with each leaf
129
+     * an instance of Psr\Http\Message\UploadedFileInterface.
130
+     *
131
+     * These values MAY be prepared from $_FILES or the message body during
132
+     * instantiation, or MAY be injected via withUploadedFiles().
133
+     *
134
+     * @return array An array tree of UploadedFileInterface instances; an empty
135
+     *     array MUST be returned if no data is present.
136
+     */
137
+    public function getUploadedFiles(): array;
138
+
139
+    /**
140
+     * Create a new instance with the specified uploaded files.
141
+     *
142
+     * This method MUST be implemented in such a way as to retain the
143
+     * immutability of the message, and MUST return an instance that has the
144
+     * updated body parameters.
145
+     *
146
+     * @param array $uploadedFiles An array tree of UploadedFileInterface instances.
147
+     * @return static
148
+     * @throws \InvalidArgumentException if an invalid structure is provided.
149
+     */
150
+    public function withUploadedFiles(array $uploadedFiles): ServerRequestInterface;
151
+
152
+    /**
153
+     * Retrieve any parameters provided in the request body.
154
+     *
155
+     * If the request Content-Type is either application/x-www-form-urlencoded
156
+     * or multipart/form-data, and the request method is POST, this method MUST
157
+     * return the contents of $_POST.
158
+     *
159
+     * Otherwise, this method may return any results of deserializing
160
+     * the request body content; as parsing returns structured content, the
161
+     * potential types MUST be arrays or objects only. A null value indicates
162
+     * the absence of body content.
163
+     *
164
+     * @return null|array|object The deserialized body parameters, if any.
165
+     *     These will typically be an array or object.
166
+     */
167
+    public function getParsedBody();
168
+
169
+    /**
170
+     * Return an instance with the specified body parameters.
171
+     *
172
+     * These MAY be injected during instantiation.
173
+     *
174
+     * If the request Content-Type is either application/x-www-form-urlencoded
175
+     * or multipart/form-data, and the request method is POST, use this method
176
+     * ONLY to inject the contents of $_POST.
177
+     *
178
+     * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of
179
+     * deserializing the request body content. Deserialization/parsing returns
180
+     * structured data, and, as such, this method ONLY accepts arrays or objects,
181
+     * or a null value if nothing was available to parse.
182
+     *
183
+     * As an example, if content negotiation determines that the request data
184
+     * is a JSON payload, this method could be used to create a request
185
+     * instance with the deserialized parameters.
186
+     *
187
+     * This method MUST be implemented in such a way as to retain the
188
+     * immutability of the message, and MUST return an instance that has the
189
+     * updated body parameters.
190
+     *
191
+     * @param null|array|object $data The deserialized body data. This will
192
+     *     typically be in an array or object.
193
+     * @return static
194
+     * @throws \InvalidArgumentException if an unsupported argument type is
195
+     *     provided.
196
+     */
197
+    public function withParsedBody($data): ServerRequestInterface;
198
+
199
+    /**
200
+     * Retrieve attributes derived from the request.
201
+     *
202
+     * The request "attributes" may be used to allow injection of any
203
+     * parameters derived from the request: e.g., the results of path
204
+     * match operations; the results of decrypting cookies; the results of
205
+     * deserializing non-form-encoded message bodies; etc. Attributes
206
+     * will be application and request specific, and CAN be mutable.
207
+     *
208
+     * @return array Attributes derived from the request.
209
+     */
210
+    public function getAttributes(): array;
211
+
212
+    /**
213
+     * Retrieve a single derived request attribute.
214
+     *
215
+     * Retrieves a single derived request attribute as described in
216
+     * getAttributes(). If the attribute has not been previously set, returns
217
+     * the default value as provided.
218
+     *
219
+     * This method obviates the need for a hasAttribute() method, as it allows
220
+     * specifying a default value to return if the attribute is not found.
221
+     *
222
+     * @see getAttributes()
223
+     * @param string $name The attribute name.
224
+     * @param mixed $default Default value to return if the attribute does not exist.
225
+     * @return mixed
226
+     */
227
+    public function getAttribute(string $name, $default = null);
228
+
229
+    /**
230
+     * Return an instance with the specified derived request attribute.
231
+     *
232
+     * This method allows setting a single derived request attribute as
233
+     * described in getAttributes().
234
+     *
235
+     * This method MUST be implemented in such a way as to retain the
236
+     * immutability of the message, and MUST return an instance that has the
237
+     * updated attribute.
238
+     *
239
+     * @see getAttributes()
240
+     * @param string $name The attribute name.
241
+     * @param mixed $value The value of the attribute.
242
+     * @return static
243
+     */
244
+    public function withAttribute(string $name, $value): ServerRequestInterface;
245
+
246
+    /**
247
+     * Return an instance that removes the specified derived request attribute.
248
+     *
249
+     * This method allows removing a single derived request attribute as
250
+     * described in getAttributes().
251
+     *
252
+     * This method MUST be implemented in such a way as to retain the
253
+     * immutability of the message, and MUST return an instance that removes
254
+     * the attribute.
255
+     *
256
+     * @see getAttributes()
257
+     * @param string $name The attribute name.
258
+     * @return static
259
+     */
260
+    public function withoutAttribute(string $name): ServerRequestInterface;
261
+}
Browse code

removed appinfo/info.xml appinfo/signature.json CHANGELOG.txt lib/AppInfo/Application.php css/style.css providers/Plivo

DoubleBastionAdmin authored on 05/11/2025 13:12:22
Showing 1 changed files
1 1
deleted file mode 100644
... ...
@@ -1,261 +0,0 @@
1
-<?php
2
-
3
-namespace Psr\Http\Message;
4
-
5
-/**
6
- * Representation of an incoming, server-side HTTP request.
7
- *
8
- * Per the HTTP specification, this interface includes properties for
9
- * each of the following:
10
- *
11
- * - Protocol version
12
- * - HTTP method
13
- * - URI
14
- * - Headers
15
- * - Message body
16
- *
17
- * Additionally, it encapsulates all data as it has arrived to the
18
- * application from the CGI and/or PHP environment, including:
19
- *
20
- * - The values represented in $_SERVER.
21
- * - Any cookies provided (generally via $_COOKIE)
22
- * - Query string arguments (generally via $_GET, or as parsed via parse_str())
23
- * - Upload files, if any (as represented by $_FILES)
24
- * - Deserialized body parameters (generally from $_POST)
25
- *
26
- * $_SERVER values MUST be treated as immutable, as they represent application
27
- * state at the time of request; as such, no methods are provided to allow
28
- * modification of those values. The other values provide such methods, as they
29
- * can be restored from $_SERVER or the request body, and may need treatment
30
- * during the application (e.g., body parameters may be deserialized based on
31
- * content type).
32
- *
33
- * Additionally, this interface recognizes the utility of introspecting a
34
- * request to derive and match additional parameters (e.g., via URI path
35
- * matching, decrypting cookie values, deserializing non-form-encoded body
36
- * content, matching authorization headers to users, etc). These parameters
37
- * are stored in an "attributes" property.
38
- *
39
- * Requests are considered immutable; all methods that might change state MUST
40
- * be implemented such that they retain the internal state of the current
41
- * message and return an instance that contains the changed state.
42
- */
43
-interface ServerRequestInterface extends RequestInterface
44
-{
45
-    /**
46
-     * Retrieve server parameters.
47
-     *
48
-     * Retrieves data related to the incoming request environment,
49
-     * typically derived from PHP's $_SERVER superglobal. The data IS NOT
50
-     * REQUIRED to originate from $_SERVER.
51
-     *
52
-     * @return array
53
-     */
54
-    public function getServerParams();
55
-
56
-    /**
57
-     * Retrieve cookies.
58
-     *
59
-     * Retrieves cookies sent by the client to the server.
60
-     *
61
-     * The data MUST be compatible with the structure of the $_COOKIE
62
-     * superglobal.
63
-     *
64
-     * @return array
65
-     */
66
-    public function getCookieParams();
67
-
68
-    /**
69
-     * Return an instance with the specified cookies.
70
-     *
71
-     * The data IS NOT REQUIRED to come from the $_COOKIE superglobal, but MUST
72
-     * be compatible with the structure of $_COOKIE. Typically, this data will
73
-     * be injected at instantiation.
74
-     *
75
-     * This method MUST NOT update the related Cookie header of the request
76
-     * instance, nor related values in the server params.
77
-     *
78
-     * This method MUST be implemented in such a way as to retain the
79
-     * immutability of the message, and MUST return an instance that has the
80
-     * updated cookie values.
81
-     *
82
-     * @param array $cookies Array of key/value pairs representing cookies.
83
-     * @return static
84
-     */
85
-    public function withCookieParams(array $cookies);
86
-
87
-    /**
88
-     * Retrieve query string arguments.
89
-     *
90
-     * Retrieves the deserialized query string arguments, if any.
91
-     *
92
-     * Note: the query params might not be in sync with the URI or server
93
-     * params. If you need to ensure you are only getting the original
94
-     * values, you may need to parse the query string from `getUri()->getQuery()`
95
-     * or from the `QUERY_STRING` server param.
96
-     *
97
-     * @return array
98
-     */
99
-    public function getQueryParams();
100
-
101
-    /**
102
-     * Return an instance with the specified query string arguments.
103
-     *
104
-     * These values SHOULD remain immutable over the course of the incoming
105
-     * request. They MAY be injected during instantiation, such as from PHP's
106
-     * $_GET superglobal, or MAY be derived from some other value such as the
107
-     * URI. In cases where the arguments are parsed from the URI, the data
108
-     * MUST be compatible with what PHP's parse_str() would return for
109
-     * purposes of how duplicate query parameters are handled, and how nested
110
-     * sets are handled.
111
-     *
112
-     * Setting query string arguments MUST NOT change the URI stored by the
113
-     * request, nor the values in the server params.
114
-     *
115
-     * This method MUST be implemented in such a way as to retain the
116
-     * immutability of the message, and MUST return an instance that has the
117
-     * updated query string arguments.
118
-     *
119
-     * @param array $query Array of query string arguments, typically from
120
-     *     $_GET.
121
-     * @return static
122
-     */
123
-    public function withQueryParams(array $query);
124
-
125
-    /**
126
-     * Retrieve normalized file upload data.
127
-     *
128
-     * This method returns upload metadata in a normalized tree, with each leaf
129
-     * an instance of Psr\Http\Message\UploadedFileInterface.
130
-     *
131
-     * These values MAY be prepared from $_FILES or the message body during
132
-     * instantiation, or MAY be injected via withUploadedFiles().
133
-     *
134
-     * @return array An array tree of UploadedFileInterface instances; an empty
135
-     *     array MUST be returned if no data is present.
136
-     */
137
-    public function getUploadedFiles();
138
-
139
-    /**
140
-     * Create a new instance with the specified uploaded files.
141
-     *
142
-     * This method MUST be implemented in such a way as to retain the
143
-     * immutability of the message, and MUST return an instance that has the
144
-     * updated body parameters.
145
-     *
146
-     * @param array $uploadedFiles An array tree of UploadedFileInterface instances.
147
-     * @return static
148
-     * @throws \InvalidArgumentException if an invalid structure is provided.
149
-     */
150
-    public function withUploadedFiles(array $uploadedFiles);
151
-
152
-    /**
153
-     * Retrieve any parameters provided in the request body.
154
-     *
155
-     * If the request Content-Type is either application/x-www-form-urlencoded
156
-     * or multipart/form-data, and the request method is POST, this method MUST
157
-     * return the contents of $_POST.
158
-     *
159
-     * Otherwise, this method may return any results of deserializing
160
-     * the request body content; as parsing returns structured content, the
161
-     * potential types MUST be arrays or objects only. A null value indicates
162
-     * the absence of body content.
163
-     *
164
-     * @return null|array|object The deserialized body parameters, if any.
165
-     *     These will typically be an array or object.
166
-     */
167
-    public function getParsedBody();
168
-
169
-    /**
170
-     * Return an instance with the specified body parameters.
171
-     *
172
-     * These MAY be injected during instantiation.
173
-     *
174
-     * If the request Content-Type is either application/x-www-form-urlencoded
175
-     * or multipart/form-data, and the request method is POST, use this method
176
-     * ONLY to inject the contents of $_POST.
177
-     *
178
-     * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of
179
-     * deserializing the request body content. Deserialization/parsing returns
180
-     * structured data, and, as such, this method ONLY accepts arrays or objects,
181
-     * or a null value if nothing was available to parse.
182
-     *
183
-     * As an example, if content negotiation determines that the request data
184
-     * is a JSON payload, this method could be used to create a request
185
-     * instance with the deserialized parameters.
186
-     *
187
-     * This method MUST be implemented in such a way as to retain the
188
-     * immutability of the message, and MUST return an instance that has the
189
-     * updated body parameters.
190
-     *
191
-     * @param null|array|object $data The deserialized body data. This will
192
-     *     typically be in an array or object.
193
-     * @return static
194
-     * @throws \InvalidArgumentException if an unsupported argument type is
195
-     *     provided.
196
-     */
197
-    public function withParsedBody($data);
198
-
199
-    /**
200
-     * Retrieve attributes derived from the request.
201
-     *
202
-     * The request "attributes" may be used to allow injection of any
203
-     * parameters derived from the request: e.g., the results of path
204
-     * match operations; the results of decrypting cookies; the results of
205
-     * deserializing non-form-encoded message bodies; etc. Attributes
206
-     * will be application and request specific, and CAN be mutable.
207
-     *
208
-     * @return array Attributes derived from the request.
209
-     */
210
-    public function getAttributes();
211
-
212
-    /**
213
-     * Retrieve a single derived request attribute.
214
-     *
215
-     * Retrieves a single derived request attribute as described in
216
-     * getAttributes(). If the attribute has not been previously set, returns
217
-     * the default value as provided.
218
-     *
219
-     * This method obviates the need for a hasAttribute() method, as it allows
220
-     * specifying a default value to return if the attribute is not found.
221
-     *
222
-     * @see getAttributes()
223
-     * @param string $name The attribute name.
224
-     * @param mixed $default Default value to return if the attribute does not exist.
225
-     * @return mixed
226
-     */
227
-    public function getAttribute($name, $default = null);
228
-
229
-    /**
230
-     * Return an instance with the specified derived request attribute.
231
-     *
232
-     * This method allows setting a single derived request attribute as
233
-     * described in getAttributes().
234
-     *
235
-     * This method MUST be implemented in such a way as to retain the
236
-     * immutability of the message, and MUST return an instance that has the
237
-     * updated attribute.
238
-     *
239
-     * @see getAttributes()
240
-     * @param string $name The attribute name.
241
-     * @param mixed $value The value of the attribute.
242
-     * @return static
243
-     */
244
-    public function withAttribute($name, $value);
245
-
246
-    /**
247
-     * Return an instance that removes the specified derived request attribute.
248
-     *
249
-     * This method allows removing a single derived request attribute as
250
-     * described in getAttributes().
251
-     *
252
-     * This method MUST be implemented in such a way as to retain the
253
-     * immutability of the message, and MUST return an instance that removes
254
-     * the attribute.
255
-     *
256
-     * @see getAttributes()
257
-     * @param string $name The attribute name.
258
-     * @return static
259
-     */
260
-    public function withoutAttribute($name);
261
-}
Browse code

Added README.md appinfo/info.xml appinfo/signature.json lib/Controller/AuthorApiController.php and the providers directory

DoubleBastionAdmin authored on 20/08/2022 16:33:00
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,261 @@
1
+<?php
2
+
3
+namespace Psr\Http\Message;
4
+
5
+/**
6
+ * Representation of an incoming, server-side HTTP request.
7
+ *
8
+ * Per the HTTP specification, this interface includes properties for
9
+ * each of the following:
10
+ *
11
+ * - Protocol version
12
+ * - HTTP method
13
+ * - URI
14
+ * - Headers
15
+ * - Message body
16
+ *
17
+ * Additionally, it encapsulates all data as it has arrived to the
18
+ * application from the CGI and/or PHP environment, including:
19
+ *
20
+ * - The values represented in $_SERVER.
21
+ * - Any cookies provided (generally via $_COOKIE)
22
+ * - Query string arguments (generally via $_GET, or as parsed via parse_str())
23
+ * - Upload files, if any (as represented by $_FILES)
24
+ * - Deserialized body parameters (generally from $_POST)
25
+ *
26
+ * $_SERVER values MUST be treated as immutable, as they represent application
27
+ * state at the time of request; as such, no methods are provided to allow
28
+ * modification of those values. The other values provide such methods, as they
29
+ * can be restored from $_SERVER or the request body, and may need treatment
30
+ * during the application (e.g., body parameters may be deserialized based on
31
+ * content type).
32
+ *
33
+ * Additionally, this interface recognizes the utility of introspecting a
34
+ * request to derive and match additional parameters (e.g., via URI path
35
+ * matching, decrypting cookie values, deserializing non-form-encoded body
36
+ * content, matching authorization headers to users, etc). These parameters
37
+ * are stored in an "attributes" property.
38
+ *
39
+ * Requests are considered immutable; all methods that might change state MUST
40
+ * be implemented such that they retain the internal state of the current
41
+ * message and return an instance that contains the changed state.
42
+ */
43
+interface ServerRequestInterface extends RequestInterface
44
+{
45
+    /**
46
+     * Retrieve server parameters.
47
+     *
48
+     * Retrieves data related to the incoming request environment,
49
+     * typically derived from PHP's $_SERVER superglobal. The data IS NOT
50
+     * REQUIRED to originate from $_SERVER.
51
+     *
52
+     * @return array
53
+     */
54
+    public function getServerParams();
55
+
56
+    /**
57
+     * Retrieve cookies.
58
+     *
59
+     * Retrieves cookies sent by the client to the server.
60
+     *
61
+     * The data MUST be compatible with the structure of the $_COOKIE
62
+     * superglobal.
63
+     *
64
+     * @return array
65
+     */
66
+    public function getCookieParams();
67
+
68
+    /**
69
+     * Return an instance with the specified cookies.
70
+     *
71
+     * The data IS NOT REQUIRED to come from the $_COOKIE superglobal, but MUST
72
+     * be compatible with the structure of $_COOKIE. Typically, this data will
73
+     * be injected at instantiation.
74
+     *
75
+     * This method MUST NOT update the related Cookie header of the request
76
+     * instance, nor related values in the server params.
77
+     *
78
+     * This method MUST be implemented in such a way as to retain the
79
+     * immutability of the message, and MUST return an instance that has the
80
+     * updated cookie values.
81
+     *
82
+     * @param array $cookies Array of key/value pairs representing cookies.
83
+     * @return static
84
+     */
85
+    public function withCookieParams(array $cookies);
86
+
87
+    /**
88
+     * Retrieve query string arguments.
89
+     *
90
+     * Retrieves the deserialized query string arguments, if any.
91
+     *
92
+     * Note: the query params might not be in sync with the URI or server
93
+     * params. If you need to ensure you are only getting the original
94
+     * values, you may need to parse the query string from `getUri()->getQuery()`
95
+     * or from the `QUERY_STRING` server param.
96
+     *
97
+     * @return array
98
+     */
99
+    public function getQueryParams();
100
+
101
+    /**
102
+     * Return an instance with the specified query string arguments.
103
+     *
104
+     * These values SHOULD remain immutable over the course of the incoming
105
+     * request. They MAY be injected during instantiation, such as from PHP's
106
+     * $_GET superglobal, or MAY be derived from some other value such as the
107
+     * URI. In cases where the arguments are parsed from the URI, the data
108
+     * MUST be compatible with what PHP's parse_str() would return for
109
+     * purposes of how duplicate query parameters are handled, and how nested
110
+     * sets are handled.
111
+     *
112
+     * Setting query string arguments MUST NOT change the URI stored by the
113
+     * request, nor the values in the server params.
114
+     *
115
+     * This method MUST be implemented in such a way as to retain the
116
+     * immutability of the message, and MUST return an instance that has the
117
+     * updated query string arguments.
118
+     *
119
+     * @param array $query Array of query string arguments, typically from
120
+     *     $_GET.
121
+     * @return static
122
+     */
123
+    public function withQueryParams(array $query);
124
+
125
+    /**
126
+     * Retrieve normalized file upload data.
127
+     *
128
+     * This method returns upload metadata in a normalized tree, with each leaf
129
+     * an instance of Psr\Http\Message\UploadedFileInterface.
130
+     *
131
+     * These values MAY be prepared from $_FILES or the message body during
132
+     * instantiation, or MAY be injected via withUploadedFiles().
133
+     *
134
+     * @return array An array tree of UploadedFileInterface instances; an empty
135
+     *     array MUST be returned if no data is present.
136
+     */
137
+    public function getUploadedFiles();
138
+
139
+    /**
140
+     * Create a new instance with the specified uploaded files.
141
+     *
142
+     * This method MUST be implemented in such a way as to retain the
143
+     * immutability of the message, and MUST return an instance that has the
144
+     * updated body parameters.
145
+     *
146
+     * @param array $uploadedFiles An array tree of UploadedFileInterface instances.
147
+     * @return static
148
+     * @throws \InvalidArgumentException if an invalid structure is provided.
149
+     */
150
+    public function withUploadedFiles(array $uploadedFiles);
151
+
152
+    /**
153
+     * Retrieve any parameters provided in the request body.
154
+     *
155
+     * If the request Content-Type is either application/x-www-form-urlencoded
156
+     * or multipart/form-data, and the request method is POST, this method MUST
157
+     * return the contents of $_POST.
158
+     *
159
+     * Otherwise, this method may return any results of deserializing
160
+     * the request body content; as parsing returns structured content, the
161
+     * potential types MUST be arrays or objects only. A null value indicates
162
+     * the absence of body content.
163
+     *
164
+     * @return null|array|object The deserialized body parameters, if any.
165
+     *     These will typically be an array or object.
166
+     */
167
+    public function getParsedBody();
168
+
169
+    /**
170
+     * Return an instance with the specified body parameters.
171
+     *
172
+     * These MAY be injected during instantiation.
173
+     *
174
+     * If the request Content-Type is either application/x-www-form-urlencoded
175
+     * or multipart/form-data, and the request method is POST, use this method
176
+     * ONLY to inject the contents of $_POST.
177
+     *
178
+     * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of
179
+     * deserializing the request body content. Deserialization/parsing returns
180
+     * structured data, and, as such, this method ONLY accepts arrays or objects,
181
+     * or a null value if nothing was available to parse.
182
+     *
183
+     * As an example, if content negotiation determines that the request data
184
+     * is a JSON payload, this method could be used to create a request
185
+     * instance with the deserialized parameters.
186
+     *
187
+     * This method MUST be implemented in such a way as to retain the
188
+     * immutability of the message, and MUST return an instance that has the
189
+     * updated body parameters.
190
+     *
191
+     * @param null|array|object $data The deserialized body data. This will
192
+     *     typically be in an array or object.
193
+     * @return static
194
+     * @throws \InvalidArgumentException if an unsupported argument type is
195
+     *     provided.
196
+     */
197
+    public function withParsedBody($data);
198
+
199
+    /**
200
+     * Retrieve attributes derived from the request.
201
+     *
202
+     * The request "attributes" may be used to allow injection of any
203
+     * parameters derived from the request: e.g., the results of path
204
+     * match operations; the results of decrypting cookies; the results of
205
+     * deserializing non-form-encoded message bodies; etc. Attributes
206
+     * will be application and request specific, and CAN be mutable.
207
+     *
208
+     * @return array Attributes derived from the request.
209
+     */
210
+    public function getAttributes();
211
+
212
+    /**
213
+     * Retrieve a single derived request attribute.
214
+     *
215
+     * Retrieves a single derived request attribute as described in
216
+     * getAttributes(). If the attribute has not been previously set, returns
217
+     * the default value as provided.
218
+     *
219
+     * This method obviates the need for a hasAttribute() method, as it allows
220
+     * specifying a default value to return if the attribute is not found.
221
+     *
222
+     * @see getAttributes()
223
+     * @param string $name The attribute name.
224
+     * @param mixed $default Default value to return if the attribute does not exist.
225
+     * @return mixed
226
+     */
227
+    public function getAttribute($name, $default = null);
228
+
229
+    /**
230
+     * Return an instance with the specified derived request attribute.
231
+     *
232
+     * This method allows setting a single derived request attribute as
233
+     * described in getAttributes().
234
+     *
235
+     * This method MUST be implemented in such a way as to retain the
236
+     * immutability of the message, and MUST return an instance that has the
237
+     * updated attribute.
238
+     *
239
+     * @see getAttributes()
240
+     * @param string $name The attribute name.
241
+     * @param mixed $value The value of the attribute.
242
+     * @return static
243
+     */
244
+    public function withAttribute($name, $value);
245
+
246
+    /**
247
+     * Return an instance that removes the specified derived request attribute.
248
+     *
249
+     * This method allows removing a single derived request attribute as
250
+     * described in getAttributes().
251
+     *
252
+     * This method MUST be implemented in such a way as to retain the
253
+     * immutability of the message, and MUST return an instance that removes
254
+     * the attribute.
255
+     *
256
+     * @see getAttributes()
257
+     * @param string $name The attribute name.
258
+     * @return static
259
+     */
260
+    public function withoutAttribute($name);
261
+}