@@ -10,6 +10,7 @@ abstract class BaseApiClient
10
10
public const DEFAULT_HANDLER = 'handler ' ;
11
11
public const DEFAULT_BASE_URI = 'base_uri ' ;
12
12
public const DEFAULT_HEADERS = 'headers ' ;
13
+ public const DEFAULT_TIMEOUT = 'timeout ' ;
13
14
14
15
private const HEADERS__AUTH_CLIENT = 'X-Auth-Client ' ;
15
16
private const HEADERS__AUTH_TOKEN = 'X-Auth-Token ' ;
@@ -29,36 +30,44 @@ abstract class BaseApiClient
29
30
30
31
private array $ debugContainer = [];
31
32
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
+
32
41
public function __construct (
33
42
string $ storeHash ,
34
43
string $ clientId ,
35
44
string $ accessToken ,
36
- ?\GuzzleHttp \Client $ client = null
45
+ ?\GuzzleHttp \Client $ client = null ,
46
+ ?array $ clientOptions = []
37
47
) {
38
48
$ this ->storeHash = $ storeHash ;
39
49
$ this ->clientId = $ clientId ;
40
50
$ this ->accessToken = $ accessToken ;
41
51
$ this ->setBaseUri (sprintf ($ this ->defaultBaseUrl (), $ this ->storeHash ));
42
52
43
- $ this ->client = $ client ?? $ this ->buildDefaultHttpClient ();
53
+ $ this ->client = $ client ?? $ this ->buildDefaultHttpClient ($ clientOptions );
44
54
}
45
55
46
- private function buildDefaultHttpClient (): \GuzzleHttp \Client
56
+ private function buildDefaultHttpClient (array $ clientOptions ): \GuzzleHttp \Client
47
57
{
48
58
$ history = Middleware::history ($ this ->debugContainer );
49
59
$ stack = HandlerStack::create ();
50
60
$ stack ->push ($ history );
51
61
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 );
62
71
}
63
72
64
73
public function getBaseUri (): string
0 commit comments