19
19
20
20
class Client
21
21
{
22
- const API_CLIENT_VERSION = '1.21.0 ' ;
23
-
24
22
/** @var HttpPluginClientBuilder */
25
23
private $ httpClientBuilder ;
26
24
/** @var ResponseMediator */
@@ -31,15 +29,18 @@ public function __construct(HttpPluginClientBuilder $httpClientBuilder = null, $
31
29
{
32
30
$ this ->httpClientBuilder = $ builder = $ httpClientBuilder ?: new HttpPluginClientBuilder ();
33
31
$ privatePackagistUrl = $ privatePackagistUrl ? : 'https://packagist.com ' ;
34
- $ this ->responseMediator = $ responseMediator ? $ responseMediator : new ResponseMediator ();
32
+ $ this ->responseMediator = $ responseMediator ? : new ResponseMediator ();
35
33
36
34
$ builder ->addPlugin (new Plugin \AddHostPlugin (UriFactoryDiscovery::find ()->createUri ($ privatePackagistUrl )));
37
35
$ builder ->addPlugin (new PathPrepend ('/api ' ));
38
36
$ builder ->addPlugin (new Plugin \RedirectPlugin ());
39
- $ builder -> addPlugin ( new Plugin \ HeaderDefaultsPlugin ( [
37
+ $ headers = [
40
38
'User-Agent ' => 'php-private-packagist-api (https://github.com/packagist/private-packagist-api-client) ' ,
41
- 'X-API-CLIENT-VERSION ' => self ::API_CLIENT_VERSION ,
42
- ]));
39
+ ];
40
+ if ($ apiClientVersion = $ this ->getApiClientVersion ()) {
41
+ $ headers ['API-CLIENT-VERSION ' ] = $ apiClientVersion ;
42
+ }
43
+ $ builder ->addPlugin (new Plugin \HeaderDefaultsPlugin ($ headers ));
43
44
$ builder ->addPlugin (new ExceptionThrower ($ this ->responseMediator ));
44
45
}
45
46
@@ -121,4 +122,17 @@ protected function getHttpClientBuilder()
121
122
{
122
123
return $ this ->httpClientBuilder ;
123
124
}
125
+
126
+ private function getApiClientVersion ()
127
+ {
128
+ try {
129
+ if ($ version = \Composer \InstalledVersions::getVersion ('private-packagist/api-client ' )) {
130
+ return $ version ;
131
+ }
132
+ } catch (\OutOfBoundsException $ exception ) {
133
+ return null ;
134
+ }
135
+
136
+ return null ;
137
+ }
124
138
}
0 commit comments