3131 */
3232final class Client implements HttpClientInterface
3333{
34- /**
35- * @var Response
36- */
37- private $ response ;
34+ use HttpClientTrait;
3835
3936 /**
4037 * @see HttpClientInterface::OPTIONS_DEFAULTS
4138 */
42- public const OPTIONS_DEFAULT = [
39+ public const API_OPTIONS_DEFAULTS = [
4340 'auth_basic ' => null ,
4441 'auth_bearer ' => null ,
4542 'query ' => [],
@@ -49,27 +46,48 @@ final class Client implements HttpClientInterface
4946 'base_uri ' => 'http://example.com ' ,
5047 ];
5148
52- use HttpClientTrait;
53-
5449 private $ kernelBrowser ;
5550
56- public function __construct (KernelBrowser $ kernelBrowser )
51+ private $ defaultOptions = self ::API_OPTIONS_DEFAULTS ;
52+
53+ /**
54+ * @var Response
55+ */
56+ private $ response ;
57+
58+ /**
59+ * @param array $defaultOptions Default options for the requests
60+ *
61+ * @see HttpClientInterface::OPTIONS_DEFAULTS for available options
62+ */
63+ public function __construct (KernelBrowser $ kernelBrowser , array $ defaultOptions = [])
5764 {
5865 $ this ->kernelBrowser = $ kernelBrowser ;
5966 $ kernelBrowser ->followRedirects (false );
67+ if ($ defaultOptions ) {
68+ $ this ->setDefaultOptions ($ defaultOptions );
69+ }
6070 }
6171
6272 /**
63- * {@inheritdoc}
73+ * Sets the default options for the requests.
6474 *
65- * @see Client::OPTIONS_DEFAULTS for available options
75+ * @see HttpClientInterface::OPTIONS_DEFAULTS for available options
76+ */
77+ public function setDefaultOptions (array $ defaultOptions ): void
78+ {
79+ [, $ this ->defaultOptions ] = self ::prepareRequest (null , null , $ defaultOptions , self ::API_OPTIONS_DEFAULTS );
80+ }
81+
82+ /**
83+ * {@inheritdoc}
6684 *
6785 * @return Response
6886 */
6987 public function request (string $ method , string $ url , array $ options = []): ResponseInterface
7088 {
7189 $ basic = $ options ['auth_basic ' ] ?? null ;
72- [$ url , $ options ] = self ::prepareRequest ($ method , $ url , $ options , self :: OPTIONS_DEFAULT );
90+ [$ url , $ options ] = self ::prepareRequest ($ method , $ url , $ options , $ this -> defaultOptions );
7391 $ resolvedUrl = implode ('' , $ url );
7492
7593 $ server = [];
0 commit comments