2727import com .ibm .watson .developer_cloud .speech_to_text .v1 .model .RecognizeOptions ;
2828import com .ibm .watson .developer_cloud .speech_to_text .v1 .model .SpeechResults ;
2929import com .ibm .watson .developer_cloud .util .GsonSingleton ;
30+ import com .ibm .watson .developer_cloud .util .RequestUtils ;
3031
32+ import okhttp3 .Headers ;
3133import okhttp3 .OkHttpClient ;
3234import okhttp3 .Request ;
35+ import okhttp3 .Request .Builder ;
3336import okhttp3 .RequestBody ;
3437import okhttp3 .Response ;
3538import okhttp3 .ResponseBody ;
@@ -47,6 +50,7 @@ public class WebSocketManager {
4750 private final String url ;
4851 private final OkHttpClient client ;
4952 private String token ;
53+ private Headers defaultHeaders ;
5054
5155 private static final Gson GSON = GsonSingleton .getGsonWithoutPrettyPrinting ();
5256 private static final Logger LOG = Logger .getLogger (WebSocketManager .class .getName ());
@@ -249,11 +253,13 @@ private String buildStopMessage() {
249253 *
250254 * @param url the url
251255 * @param client the client
256+ * @param defaultHeaders the default headers
252257 * @param token the token
253258 */
254- public WebSocketManager (String url , OkHttpClient client , String token ) {
259+ public WebSocketManager (String url , OkHttpClient client , Headers defaultHeaders , String token ) {
255260 this .url = url ;
256261 this .client = client ;
262+ this .defaultHeaders = defaultHeaders ;
257263 this .token = token ;
258264 }
259265
@@ -265,12 +271,22 @@ public WebSocketManager(String url, OkHttpClient client, String token) {
265271 */
266272 private WebSocketCall createConnection (RecognizeOptions options ) {
267273 String speechModel = options .model () == null ? "" : "?model=" + options .model ();
268- Request connectionRequest = new Request .Builder ()
274+ Builder builder = new Request .Builder ()
269275 .url (url + speechModel )
270- .addHeader (HttpHeaders .X_WATSON_AUTHORIZATION_TOKEN , token )
271- .build ();
276+ .addHeader (HttpHeaders .X_WATSON_AUTHORIZATION_TOKEN , token );
277+
278+ if (defaultHeaders != null ) {
279+ for (String key : defaultHeaders .names ()) {
280+ builder .header (key , defaultHeaders .get (key ));
281+ }
282+ if (defaultHeaders .get (HttpHeaders .USER_AGENT ) != null ) {
283+ String userAgent = RequestUtils .getUserAgent ();
284+ userAgent += " " + defaultHeaders .get (HttpHeaders .USER_AGENT );
285+ builder .header (HttpHeaders .USER_AGENT , userAgent );
286+ }
287+ }
272288
273- return WebSocketCall .create (client , connectionRequest );
289+ return WebSocketCall .create (client , builder . build () );
274290 }
275291
276292 /**
0 commit comments