@@ -10,6 +10,7 @@ abstract class BaseApiClient
1010 public const DEFAULT_HANDLER = 'handler ' ;
1111 public const DEFAULT_BASE_URI = 'base_uri ' ;
1212 public const DEFAULT_HEADERS = 'headers ' ;
13+ public const DEFAULT_TIMEOUT = 'timeout ' ;
1314
1415 private const HEADERS__AUTH_CLIENT = 'X-Auth-Client ' ;
1516 private const HEADERS__AUTH_TOKEN = 'X-Auth-Token ' ;
@@ -29,36 +30,44 @@ abstract class BaseApiClient
2930
3031 private array $ debugContainer = [];
3132
33+ private array $ defaultClientOptions = [
34+ self ::DEFAULT_TIMEOUT => 45 ,
35+ self ::DEFAULT_HEADERS => [
36+ self ::HEADERS__CONTENT_TYPE => self ::APPLICATION_JSON ,
37+ self ::HEADERS__ACCEPT => self ::APPLICATION_JSON ,
38+ ]
39+ ];
40+
3241 public function __construct (
3342 string $ storeHash ,
3443 string $ clientId ,
3544 string $ accessToken ,
36- ?\GuzzleHttp \Client $ client = null
45+ ?\GuzzleHttp \Client $ client = null ,
46+ ?array $ clientOptions = []
3747 ) {
3848 $ this ->storeHash = $ storeHash ;
3949 $ this ->clientId = $ clientId ;
4050 $ this ->accessToken = $ accessToken ;
4151 $ this ->setBaseUri (sprintf ($ this ->defaultBaseUrl (), $ this ->storeHash ));
4252
43- $ this ->client = $ client ?? $ this ->buildDefaultHttpClient ();
53+ $ this ->client = $ client ?? $ this ->buildDefaultHttpClient ($ clientOptions );
4454 }
4555
46- private function buildDefaultHttpClient (): \GuzzleHttp \Client
56+ private function buildDefaultHttpClient (array $ clientOptions ): \GuzzleHttp \Client
4757 {
4858 $ history = Middleware::history ($ this ->debugContainer );
4959 $ stack = HandlerStack::create ();
5060 $ stack ->push ($ history );
5161
52- return new \GuzzleHttp \Client ([
53- self ::DEFAULT_HANDLER => $ stack ,
54- self ::DEFAULT_BASE_URI => $ this ->getBaseUri (),
55- self ::DEFAULT_HEADERS => [
56- self ::HEADERS__AUTH_CLIENT => $ this ->clientId ,
57- self ::HEADERS__AUTH_TOKEN => $ this ->accessToken ,
58- self ::HEADERS__CONTENT_TYPE => self ::APPLICATION_JSON ,
59- self ::HEADERS__ACCEPT => self ::APPLICATION_JSON ,
60- ],
61- ]);
62+ $ options = array_merge ($ this ->defaultClientOptions , $ clientOptions );
63+ $ options [self ::DEFAULT_HANDLER ] = $ stack ;
64+ $ options [self ::DEFAULT_BASE_URI ] = $ this ->getBaseUri ();
65+ $ options [self ::DEFAULT_HEADERS ] = array_merge ([
66+ self ::HEADERS__AUTH_CLIENT => $ this ->clientId ,
67+ self ::HEADERS__AUTH_TOKEN => $ this ->accessToken ,
68+ ], $ options [self ::DEFAULT_HEADERS ]);
69+
70+ return new \GuzzleHttp \Client ($ options );
6271 }
6372
6473 public function getBaseUri (): string
0 commit comments