/* Copyright (c) Microsoft Open Technologies, Inc. All Rights Reserved See License.txt in the project root for license information. */ package microsoft.aspnet.signalr.client.tests.util; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.UUID; import com.google.gson.JsonElement; import com.google.gson.JsonParser; import microsoft.aspnet.signalr.client.ConnectionState; import microsoft.aspnet.signalr.client.Constants; import microsoft.aspnet.signalr.client.ErrorCallback; import microsoft.aspnet.signalr.client.MessageReceivedHandler; import microsoft.aspnet.signalr.client.NullLogger; import microsoft.aspnet.signalr.client.Connection; import microsoft.aspnet.signalr.client.http.HttpConnection; import microsoft.aspnet.signalr.client.tests.util.MockHttpConnection.RequestEntry; import microsoft.aspnet.signalr.client.transport.ClientTransport; import microsoft.aspnet.signalr.client.transport.LongPollingTransport; import microsoft.aspnet.signalr.client.transport.NegotiationResponse; import microsoft.aspnet.signalr.client.transport.ServerSentEventsTransport; public class Utils { public static String encode(String str) { try { return URLEncoder.encode(str, Constants.UTF8_NAME); } catch (UnsupportedEncodingException e) { return str; } } public static ClientTransport createTransport(TransportType transportType, HttpConnection httpConnection) { if (transportType == TransportType.ServerSentEvents) { return new ServerSentEventsTransport(new NullLogger(), httpConnection); } else { return new LongPollingTransport(new NullLogger(), httpConnection); } } public static String getNegotiationResponseContent(NegotiationResponse negotiation) { return String .format("{\"Url\":\"/signalr\", \"ConnectionToken\":\"%s\", \"ConnectionId\":\"%s\",\"KeepAliveTimeout\":%s,\"DisconnectTimeout\":%s,\"TryWebSockets\":%s,\"WebSocketServerUrl\":\"%s\", \"ProtocolVersion\":\"%s\"}", negotiation.getConnectionToken(), negotiation.getConnectionId(), negotiation.getKeepAliveTimeout(), negotiation.getDisconnectTimeout(), negotiation.shouldTryWebSockets(), negotiation.getUrl(), negotiation.getProtocolVersion()); } public static NegotiationResponse getDefaultNegotiationResponse() { NegotiationResponse negotiation = new NegotiationResponse(null, new JsonParser()); negotiation.setConnectionToken(UUID.randomUUID().toString()); negotiation.setConnectionId(UUID.randomUUID().toString()); negotiation.setProtocolVersion("1.3"); negotiation.setDisconnectTimeout(6); negotiation.setKeepAliveTimeout(3); negotiation.setTryWebSockets(false); negotiation.setUrl("/signalr"); return negotiation; } public static void addResultHandlersToConnection(Connection connection, final MultiResult result, final boolean throwOnError) { connection.connected(new Runnable() { @Override public void run() { result.statesResult.add(ConnectionState.Connected); } }); connection.closed(new Runnable() { @Override public void run() { result.statesResult.add(ConnectionState.Disconnected); } }); connection.reconnected(new Runnable() { @Override public void run() { result.statesResult.add(ConnectionState.Connected); } }); connection.reconnecting(new Runnable() { @Override public void run() { result.statesResult.add(ConnectionState.Reconnecting); } }); connection.received(new MessageReceivedHandler() { @Override public void onMessageReceived(JsonElement json) { result.listResult.add(json.toString()); } }); connection.error(new ErrorCallback() { @Override public void onError(Throwable error) { result.errorsResult.add(error); if (throwOnError) { throw new RuntimeException(error); } } }); } public static void finishMessage(RequestEntry entry) throws Exception { entry.finishRequest(); entry.triggerResponse(); } }