1414import engineer .nightowl .sonos .api .resource .PlayerVolumeResource ;
1515import engineer .nightowl .sonos .api .resource .PlaylistResource ;
1616import engineer .nightowl .sonos .api .resource .SettingsResource ;
17+
1718import org .apache .http .impl .client .CloseableHttpClient ;
1819import org .apache .http .impl .client .HttpClientBuilder ;
20+ import org .apache .http .util .VersionInfo ;
1921import org .slf4j .Logger ;
2022import org .slf4j .LoggerFactory ;
2123
2224import java .io .IOException ;
25+ import java .net .http .HttpClient ;
2326import java .util .Properties ;
2427
2528public class SonosApiClient implements AutoCloseable
@@ -48,6 +51,8 @@ public class SonosApiClient implements AutoCloseable
4851 private SonosApiConfiguration configuration ;
4952 private CloseableHttpClient httpClient ;
5053
54+ private final String version ;
55+
5156 /**
5257 * Main client for Sonos API.
5358 *
@@ -71,10 +76,12 @@ public SonosApiClient(final SonosApiConfiguration configuration)
7176 public SonosApiClient (final SonosApiConfiguration configuration , final CloseableHttpClient httpClient )
7277 {
7378 loadProperties ();
74- logger .info ("Initialising sonos-api-java:{}" , properties .getProperty ("sonosapijava.version" ));
79+ version = properties .getProperty ("sonosapijava.version" );
80+ logger .info ("Initialising sonos-api-java:{}" , version );
7581
7682 this .configuration = configuration ;
7783 this .httpClient = (httpClient == null ? generateHttpClient () : httpClient );
84+
7885
7986 // Setup resources
8087 audioClipResource = new AudioClipResource (this );
@@ -93,6 +100,15 @@ public SonosApiClient(final SonosApiConfiguration configuration, final Closeable
93100 settingsResource = new SettingsResource (this );
94101 }
95102
103+ public String getUserAgent ()
104+ {
105+ final String ahcUa = VersionInfo .getUserAgent ("Apache-HttpClient" ,
106+ "org.apache.http.client" , HttpClientBuilder .class );
107+
108+ return String .format ("sonos-api-java/%s (applicationId/%s) (httpClient/(%s))" ,
109+ version , configuration .getApplicationId (), ahcUa );
110+ }
111+
96112 /**
97113 * Generate a default HTTP client.
98114 *
@@ -101,7 +117,7 @@ public SonosApiClient(final SonosApiConfiguration configuration, final Closeable
101117 private CloseableHttpClient generateHttpClient ()
102118 {
103119 logger .debug ("Using default HttpClient" );
104- return HttpClientBuilder .create ().build ();
120+ return HttpClientBuilder .create ().setUserAgent ( getUserAgent ()). build ();
105121 }
106122
107123 /**
0 commit comments