Skip to content

Commit e756dc5

Browse files
Merge pull request #443 from watson-developer-cloud/add-headers-to-websocket
Add headers to WebSockets fixes #442
2 parents fa0cfa1 + 0e6f846 commit e756dc5

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

src/main/java/com/ibm/watson/developer_cloud/service/WatsonService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public abstract class WatsonService {
7777
private final OkHttpClient client;
7878
private String endPoint;
7979
private final String name;
80-
private Headers defaultHeaders = null;
80+
protected Headers defaultHeaders = null;
8181
private boolean skipAuthentication = false;
8282

8383
/** The Constant MESSAGE_CODE. */

src/main/java/com/ibm/watson/developer_cloud/speech_to_text/v1/SpeechToText.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ public void recognizeUsingWebSocket(final InputStream audio, final RecognizeOpti
347347
Validator.notNull(options.contentType(), "options.contentType cannot be null");
348348
Validator.notNull(callback, "callback cannot be null");
349349

350-
350+
351351
getToken().enqueue(new ServiceCallback<String>() {
352352
@Override
353353
public void onFailure(Exception e) {
@@ -357,7 +357,7 @@ public void onFailure(Exception e) {
357357
@Override
358358
public void onResponse(String token) {
359359
String url = getEndPoint().replaceFirst("(https|http)", "wss");
360-
WebSocketManager wsManager = new WebSocketManager(url + PATH_RECOGNIZE, configureHttpClient(), token);
360+
WebSocketManager wsManager = new WebSocketManager(url + PATH_RECOGNIZE, configureHttpClient(), defaultHeaders, token);
361361
wsManager.recognize(audio, options, callback);
362362
}
363363
});

src/main/java/com/ibm/watson/developer_cloud/speech_to_text/v1/websocket/WebSocketManager.java

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,12 @@
2727
import com.ibm.watson.developer_cloud.speech_to_text.v1.model.RecognizeOptions;
2828
import com.ibm.watson.developer_cloud.speech_to_text.v1.model.SpeechResults;
2929
import com.ibm.watson.developer_cloud.util.GsonSingleton;
30+
import com.ibm.watson.developer_cloud.util.RequestUtils;
3031

32+
import okhttp3.Headers;
3133
import okhttp3.OkHttpClient;
3234
import okhttp3.Request;
35+
import okhttp3.Request.Builder;
3336
import okhttp3.RequestBody;
3437
import okhttp3.Response;
3538
import 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

Comments
 (0)