1<?php
2
3namespace GuzzleHttp;
4
5/**
6 * This class contains a list of built-in Guzzle request options.
7 *
8 * @see https://docs.guzzlephp.org/en/latest/request-options.html
9 */
10final class RequestOptions
11{
12    /**
13     * allow_redirects: (bool|array) Controls redirect behavior. Pass false
14     * to disable redirects, pass true to enable redirects, pass an
15     * associative to provide custom redirect settings. Defaults to "false".
16     * This option only works if your handler has the RedirectMiddleware. When
17     * passing an associative array, you can provide the following key value
18     * pairs:
19     *
20     * - max: (int, default=5) maximum number of allowed redirects.
21     * - strict: (bool, default=false) Set to true to use strict redirects
22     *   meaning redirect POST requests with POST requests vs. doing what most
23     *   browsers do which is redirect POST requests with GET requests
24     * - referer: (bool, default=false) Set to true to enable the Referer
25     *   header.
26     * - protocols: (array, default=['http', 'https']) Allowed redirect
27     *   protocols.
28     * - on_redirect: (callable) PHP callable that is invoked when a redirect
29     *   is encountered. The callable is invoked with the request, the redirect
30     *   response that was received, and the effective URI. Any return value
31     *   from the on_redirect function is ignored.
32     */
33    public const ALLOW_REDIRECTS = 'allow_redirects';
34
35    /**
36     * auth: (array) Pass an array of HTTP authentication parameters to use
37     * with the request. The array must contain the username in index [0],
38     * the password in index [1], and you can optionally provide a built-in
39     * authentication type in index [2]. Pass null to disable authentication
40     * for a request.
41     */
42    public const AUTH = 'auth';
43
44    /**
45     * body: (resource|string|null|int|float|StreamInterface|callable|\Iterator)
46     * Body to send in the request.
47     */
48    public const BODY = 'body';
49
50    /**
51     * cert: (string|array) Set to a string to specify the path to a file
52     * containing a PEM formatted SSL client side certificate. If a password
53     * is required, then set cert to an array containing the path to the PEM
54     * file in the first array element followed by the certificate password
55     * in the second array element.
56     */
57    public const CERT = 'cert';
58
59    /**
60     * cookies: (bool|GuzzleHttp\Cookie\CookieJarInterface, default=false)
61     * Specifies whether or not cookies are used in a request or what cookie
62     * jar to use or what cookies to send. This option only works if your
63     * handler has the `cookie` middleware. Valid values are `false` and
64     * an instance of {@see \GuzzleHttp\Cookie\CookieJarInterface}.
65     */
66    public const COOKIES = 'cookies';
67
68    /**
69     * connect_timeout: (float, default=0) Float describing the number of
70     * seconds to wait while trying to connect to a server. Use 0 to wait
71     * 300 seconds (the default behavior).
72     */
73    public const CONNECT_TIMEOUT = 'connect_timeout';
74
75    /**
76     * crypto_method: (int) A value describing the minimum TLS protocol
77     * version to use.
78     *
79     * This setting must be set to one of the
80     * ``STREAM_CRYPTO_METHOD_TLS*_CLIENT`` constants. PHP 7.4 or higher is
81     * required in order to use TLS 1.3, and cURL 7.34.0 or higher is required
82     * in order to specify a crypto method, with cURL 7.52.0 or higher being
83     * required to use TLS 1.3.
84     */
85    public const CRYPTO_METHOD = 'crypto_method';
86
87    /**
88     * debug: (bool|resource) Set to true or set to a PHP stream returned by
89     * fopen()  enable debug output with the HTTP handler used to send a
90     * request.
91     */
92    public const DEBUG = 'debug';
93
94    /**
95     * decode_content: (bool, default=true) Specify whether or not
96     * Content-Encoding responses (gzip, deflate, etc.) are automatically
97     * decoded.
98     */
99    public const DECODE_CONTENT = 'decode_content';
100
101    /**
102     * delay: (int) The amount of time to delay before sending in milliseconds.
103     */
104    public const DELAY = 'delay';
105
106    /**
107     * expect: (bool|integer) Controls the behavior of the
108     * "Expect: 100-Continue" header.
109     *
110     * Set to `true` to enable the "Expect: 100-Continue" header for all
111     * requests that sends a body. Set to `false` to disable the
112     * "Expect: 100-Continue" header for all requests. Set to a number so that
113     * the size of the payload must be greater than the number in order to send
114     * the Expect header. Setting to a number will send the Expect header for
115     * all requests in which the size of the payload cannot be determined or
116     * where the body is not rewindable.
117     *
118     * By default, Guzzle will add the "Expect: 100-Continue" header when the
119     * size of the body of a request is greater than 1 MB and a request is
120     * using HTTP/1.1.
121     */
122    public const EXPECT = 'expect';
123
124    /**
125     * form_params: (array) Associative array of form field names to values
126     * where each value is a string or array of strings. Sets the Content-Type
127     * header to application/x-www-form-urlencoded when no Content-Type header
128     * is already present.
129     */
130    public const FORM_PARAMS = 'form_params';
131
132    /**
133     * headers: (array) Associative array of HTTP headers. Each value MUST be
134     * a string or array of strings.
135     */
136    public const HEADERS = 'headers';
137
138    /**
139     * http_errors: (bool, default=true) Set to false to disable exceptions
140     * when a non- successful HTTP response is received. By default,
141     * exceptions will be thrown for 4xx and 5xx responses. This option only
142     * works if your handler has the `httpErrors` middleware.
143     */
144    public const HTTP_ERRORS = 'http_errors';
145
146    /**
147     * idn: (bool|int, default=true) A combination of IDNA_* constants for
148     * idn_to_ascii() PHP's function (see "options" parameter). Set to false to
149     * disable IDN support completely, or to true to use the default
150     * configuration (IDNA_DEFAULT constant).
151     */
152    public const IDN_CONVERSION = 'idn_conversion';
153
154    /**
155     * json: (mixed) Adds JSON data to a request. The provided value is JSON
156     * encoded and a Content-Type header of application/json will be added to
157     * the request if no Content-Type header is already present.
158     */
159    public const JSON = 'json';
160
161    /**
162     * multipart: (array) Array of associative arrays, each containing a
163     * required "name" key mapping to the form field, name, a required
164     * "contents" key mapping to a StreamInterface|resource|string, an
165     * optional "headers" associative array of custom headers, and an
166     * optional "filename" key mapping to a string to send as the filename in
167     * the part. If no "filename" key is present, then no "filename" attribute
168     * will be added to the part.
169     */
170    public const MULTIPART = 'multipart';
171
172    /**
173     * on_headers: (callable) A callable that is invoked when the HTTP headers
174     * of the response have been received but the body has not yet begun to
175     * download.
176     */
177    public const ON_HEADERS = 'on_headers';
178
179    /**
180     * on_stats: (callable) allows you to get access to transfer statistics of
181     * a request and access the lower level transfer details of the handler
182     * associated with your client. ``on_stats`` is a callable that is invoked
183     * when a handler has finished sending a request. The callback is invoked
184     * with transfer statistics about the request, the response received, or
185     * the error encountered. Included in the data is the total amount of time
186     * taken to send the request.
187     */
188    public const ON_STATS = 'on_stats';
189
190    /**
191     * progress: (callable) Defines a function to invoke when transfer
192     * progress is made. The function accepts the following positional
193     * arguments: the total number of bytes expected to be downloaded, the
194     * number of bytes downloaded so far, the number of bytes expected to be
195     * uploaded, the number of bytes uploaded so far.
196     */
197    public const PROGRESS = 'progress';
198
199    /**
200     * proxy: (string|array) Pass a string to specify an HTTP proxy, or an
201     * array to specify different proxies for different protocols (where the
202     * key is the protocol and the value is a proxy string).
203     */
204    public const PROXY = 'proxy';
205
206    /**
207     * query: (array|string) Associative array of query string values to add
208     * to the request. This option uses PHP's http_build_query() to create
209     * the string representation. Pass a string value if you need more
210     * control than what this method provides
211     */
212    public const QUERY = 'query';
213
214    /**
215     * sink: (resource|string|StreamInterface) Where the data of the
216     * response is written to. Defaults to a PHP temp stream. Providing a
217     * string will write data to a file by the given name.
218     */
219    public const SINK = 'sink';
220
221    /**
222     * synchronous: (bool) Set to true to inform HTTP handlers that you intend
223     * on waiting on the response. This can be useful for optimizations. Note
224     * that a promise is still returned if you are using one of the async
225     * client methods.
226     */
227    public const SYNCHRONOUS = 'synchronous';
228
229    /**
230     * ssl_key: (array|string) Specify the path to a file containing a private
231     * SSL key in PEM format. If a password is required, then set to an array
232     * containing the path to the SSL key in the first array element followed
233     * by the password required for the certificate in the second element.
234     */
235    public const SSL_KEY = 'ssl_key';
236
237    /**
238     * stream: Set to true to attempt to stream a response rather than
239     * download it all up-front.
240     */
241    public const STREAM = 'stream';
242
243    /**
244     * verify: (bool|string, default=true) Describes the SSL certificate
245     * verification behavior of a request. Set to true to enable SSL
246     * certificate verification using the system CA bundle when available
247     * (the default). Set to false to disable certificate verification (this
248     * is insecure!). Set to a string to provide the path to a CA bundle on
249     * disk to enable verification using a custom certificate.
250     */
251    public const VERIFY = 'verify';
252
253    /**
254     * timeout: (float, default=0) Float describing the timeout of the
255     * request in seconds. Use 0 to wait indefinitely (the default behavior).
256     */
257    public const TIMEOUT = 'timeout';
258
259    /**
260     * read_timeout: (float, default=default_socket_timeout ini setting) Float describing
261     * the body read timeout, for stream requests.
262     */
263    public const READ_TIMEOUT = 'read_timeout';
264
265    /**
266     * version: (float) Specifies the HTTP protocol version to attempt to use.
267     */
268    public const VERSION = 'version';
269
270    /**
271     * force_ip_resolve: (bool) Force client to use only ipv4 or ipv6 protocol
272     */
273    public const FORCE_IP_RESOLVE = 'force_ip_resolve';
274}
275