Register message controller with websocket channel
// FREEBIE
This commit is contained in:
parent
9250d90e57
commit
0087f328d6
2
pom.xml
2
pom.xml
|
@ -94,7 +94,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.whispersystems</groupId>
|
<groupId>org.whispersystems</groupId>
|
||||||
<artifactId>websocket-resources</artifactId>
|
<artifactId>websocket-resources</artifactId>
|
||||||
<version>0.3.3</version>
|
<version>0.4.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.whispersystems</groupId>
|
<groupId>org.whispersystems</groupId>
|
||||||
|
|
|
@ -228,6 +228,7 @@ public class WhisperServerService extends Application<WhisperServerConfiguration
|
||||||
webSocketEnvironment.setAuthenticator(new WebSocketAccountAuthenticator(deviceAuthenticator));
|
webSocketEnvironment.setAuthenticator(new WebSocketAccountAuthenticator(deviceAuthenticator));
|
||||||
webSocketEnvironment.setConnectListener(new AuthenticatedConnectListener(accountsManager, pushSender, receiptSender, messagesManager, pubSubManager));
|
webSocketEnvironment.setConnectListener(new AuthenticatedConnectListener(accountsManager, pushSender, receiptSender, messagesManager, pubSubManager));
|
||||||
webSocketEnvironment.jersey().register(new KeepAliveController(pubSubManager));
|
webSocketEnvironment.jersey().register(new KeepAliveController(pubSubManager));
|
||||||
|
webSocketEnvironment.jersey().register(messageController);
|
||||||
|
|
||||||
WebSocketEnvironment provisioningEnvironment = new WebSocketEnvironment(environment, config);
|
WebSocketEnvironment provisioningEnvironment = new WebSocketEnvironment(environment, config);
|
||||||
provisioningEnvironment.setConnectListener(new ProvisioningConnectListener(pubSubManager));
|
provisioningEnvironment.setConnectListener(new ProvisioningConnectListener(pubSubManager));
|
||||||
|
|
|
@ -31,7 +31,7 @@ public class ProvisioningConnection implements DispatchChannel {
|
||||||
if (outgoingMessage.getType() == PubSubMessage.Type.DELIVER) {
|
if (outgoingMessage.getType() == PubSubMessage.Type.DELIVER) {
|
||||||
Optional<byte[]> body = Optional.of(outgoingMessage.getContent().toByteArray());
|
Optional<byte[]> body = Optional.of(outgoingMessage.getContent().toByteArray());
|
||||||
|
|
||||||
ListenableFuture<WebSocketResponseMessage> response = client.sendRequest("PUT", "/v1/message", body);
|
ListenableFuture<WebSocketResponseMessage> response = client.sendRequest("PUT", "/v1/message", null, body);
|
||||||
|
|
||||||
Futures.addCallback(response, new FutureCallback<WebSocketResponseMessage>() {
|
Futures.addCallback(response, new FutureCallback<WebSocketResponseMessage>() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -54,10 +54,10 @@ public class ProvisioningConnection implements DispatchChannel {
|
||||||
public void onDispatchSubscribed(String channel) {
|
public void onDispatchSubscribed(String channel) {
|
||||||
try {
|
try {
|
||||||
ProvisioningAddress address = new ProvisioningAddress(channel);
|
ProvisioningAddress address = new ProvisioningAddress(channel);
|
||||||
this.client.sendRequest("PUT", "/v1/address", Optional.of(ProvisioningUuid.newBuilder()
|
this.client.sendRequest("PUT", "/v1/address", null, Optional.of(ProvisioningUuid.newBuilder()
|
||||||
.setUuid(address.getAddress())
|
.setUuid(address.getAddress())
|
||||||
.build()
|
.build()
|
||||||
.toByteArray()));
|
.toByteArray()));
|
||||||
} catch (InvalidWebsocketAddressException e) {
|
} catch (InvalidWebsocketAddressException e) {
|
||||||
logger.warn("Badly formatted address", e);
|
logger.warn("Badly formatted address", e);
|
||||||
this.client.close(1001, "Server Error");
|
this.client.close(1001, "Server Error");
|
||||||
|
|
|
@ -105,7 +105,7 @@ public class WebSocketConnection implements DispatchChannel {
|
||||||
try {
|
try {
|
||||||
EncryptedOutgoingMessage encryptedMessage = new EncryptedOutgoingMessage(message, device.getSignalingKey());
|
EncryptedOutgoingMessage encryptedMessage = new EncryptedOutgoingMessage(message, device.getSignalingKey());
|
||||||
Optional<byte[]> body = Optional.fromNullable(encryptedMessage.toByteArray());
|
Optional<byte[]> body = Optional.fromNullable(encryptedMessage.toByteArray());
|
||||||
ListenableFuture<WebSocketResponseMessage> response = client.sendRequest("PUT", "/api/v1/message", body);
|
ListenableFuture<WebSocketResponseMessage> response = client.sendRequest("PUT", "/api/v1/message", null, body);
|
||||||
|
|
||||||
Futures.addCallback(response, new FutureCallback<WebSocketResponseMessage>() {
|
Futures.addCallback(response, new FutureCallback<WebSocketResponseMessage>() {
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -130,7 +130,7 @@ public class WebSocketConnectionTest {
|
||||||
final List<SettableFuture<WebSocketResponseMessage>> futures = new LinkedList<>();
|
final List<SettableFuture<WebSocketResponseMessage>> futures = new LinkedList<>();
|
||||||
final WebSocketClient client = mock(WebSocketClient.class);
|
final WebSocketClient client = mock(WebSocketClient.class);
|
||||||
|
|
||||||
when(client.sendRequest(eq("PUT"), eq("/api/v1/message"), any(Optional.class)))
|
when(client.sendRequest(eq("PUT"), eq("/api/v1/message"), any(List.class), any(Optional.class)))
|
||||||
.thenAnswer(new Answer<SettableFuture<WebSocketResponseMessage>>() {
|
.thenAnswer(new Answer<SettableFuture<WebSocketResponseMessage>>() {
|
||||||
@Override
|
@Override
|
||||||
public SettableFuture<WebSocketResponseMessage> answer(InvocationOnMock invocationOnMock) throws Throwable {
|
public SettableFuture<WebSocketResponseMessage> answer(InvocationOnMock invocationOnMock) throws Throwable {
|
||||||
|
@ -145,7 +145,7 @@ public class WebSocketConnectionTest {
|
||||||
account, device, client);
|
account, device, client);
|
||||||
|
|
||||||
connection.onDispatchSubscribed(websocketAddress.serialize());
|
connection.onDispatchSubscribed(websocketAddress.serialize());
|
||||||
verify(client, times(3)).sendRequest(eq("PUT"), eq("/api/v1/message"), any(Optional.class));
|
verify(client, times(3)).sendRequest(eq("PUT"), eq("/api/v1/message"), anyList(), any(Optional.class));
|
||||||
|
|
||||||
assertTrue(futures.size() == 3);
|
assertTrue(futures.size() == 3);
|
||||||
|
|
||||||
|
@ -214,7 +214,7 @@ public class WebSocketConnectionTest {
|
||||||
final List<SettableFuture<WebSocketResponseMessage>> futures = new LinkedList<>();
|
final List<SettableFuture<WebSocketResponseMessage>> futures = new LinkedList<>();
|
||||||
final WebSocketClient client = mock(WebSocketClient.class);
|
final WebSocketClient client = mock(WebSocketClient.class);
|
||||||
|
|
||||||
when(client.sendRequest(eq("PUT"), eq("/api/v1/message"), any(Optional.class)))
|
when(client.sendRequest(eq("PUT"), eq("/api/v1/message"), anyList(), any(Optional.class)))
|
||||||
.thenAnswer(new Answer<SettableFuture<WebSocketResponseMessage>>() {
|
.thenAnswer(new Answer<SettableFuture<WebSocketResponseMessage>>() {
|
||||||
@Override
|
@Override
|
||||||
public SettableFuture<WebSocketResponseMessage> answer(InvocationOnMock invocationOnMock) throws Throwable {
|
public SettableFuture<WebSocketResponseMessage> answer(InvocationOnMock invocationOnMock) throws Throwable {
|
||||||
|
@ -239,7 +239,7 @@ public class WebSocketConnectionTest {
|
||||||
.setContent(ByteString.copyFrom(secondMessage.toByteArray()))
|
.setContent(ByteString.copyFrom(secondMessage.toByteArray()))
|
||||||
.build().toByteArray());
|
.build().toByteArray());
|
||||||
|
|
||||||
verify(client, times(2)).sendRequest(eq("PUT"), eq("/api/v1/message"), any(Optional.class));
|
verify(client, times(2)).sendRequest(eq("PUT"), eq("/api/v1/message"), anyList(), any(Optional.class));
|
||||||
|
|
||||||
assertEquals(futures.size(), 2);
|
assertEquals(futures.size(), 2);
|
||||||
|
|
||||||
|
@ -320,7 +320,7 @@ public class WebSocketConnectionTest {
|
||||||
final List<SettableFuture<WebSocketResponseMessage>> futures = new LinkedList<>();
|
final List<SettableFuture<WebSocketResponseMessage>> futures = new LinkedList<>();
|
||||||
final WebSocketClient client = mock(WebSocketClient.class);
|
final WebSocketClient client = mock(WebSocketClient.class);
|
||||||
|
|
||||||
when(client.sendRequest(eq("PUT"), eq("/api/v1/message"), any(Optional.class)))
|
when(client.sendRequest(eq("PUT"), eq("/api/v1/message"), anyList(), any(Optional.class)))
|
||||||
.thenAnswer(new Answer<SettableFuture<WebSocketResponseMessage>>() {
|
.thenAnswer(new Answer<SettableFuture<WebSocketResponseMessage>>() {
|
||||||
@Override
|
@Override
|
||||||
public SettableFuture<WebSocketResponseMessage> answer(InvocationOnMock invocationOnMock) throws Throwable {
|
public SettableFuture<WebSocketResponseMessage> answer(InvocationOnMock invocationOnMock) throws Throwable {
|
||||||
|
@ -336,7 +336,7 @@ public class WebSocketConnectionTest {
|
||||||
|
|
||||||
connection.onDispatchSubscribed(websocketAddress.serialize());
|
connection.onDispatchSubscribed(websocketAddress.serialize());
|
||||||
|
|
||||||
verify(client, times(2)).sendRequest(eq("PUT"), eq("/api/v1/message"), any(Optional.class));
|
verify(client, times(2)).sendRequest(eq("PUT"), eq("/api/v1/message"), anyList(), any(Optional.class));
|
||||||
|
|
||||||
assertEquals(futures.size(), 2);
|
assertEquals(futures.size(), 2);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue