@Override public void onDispatchMessage(String channel, byte[] message) { try { PubSubMessage outgoingMessage = PubSubMessage.parseFrom(message); if (outgoingMessage.getType() == PubSubMessage.Type.DELIVER) { Optional<byte[]> body = Optional.of(outgoingMessage.getContent().toByteArray()); ListenableFuture<WebSocketResponseMessage> response = client.sendRequest("PUT", "/v1/message", null, body); Futures.addCallback(response, new FutureCallback<WebSocketResponseMessage>() { @Override public void onSuccess(WebSocketResponseMessage webSocketResponseMessage) { client.close(1001, "All you get."); } @Override public void onFailure(Throwable throwable) { client.close(1001, "That's all!"); } }); } } catch (InvalidProtocolBufferException e) { logger.warn("Protobuf Error: ", e); } }
@Override public void onDispatchSubscribed(String channel) { try { ProvisioningAddress address = new ProvisioningAddress(channel); this.client.sendRequest("PUT", "/v1/address", null, Optional.of(ProvisioningUuid.newBuilder() .setUuid(address.getAddress()) .build() .toByteArray())); } catch (InvalidWebsocketAddressException e) { logger.warn("Badly formatted address", e); this.client.close(1001, "Server Error"); } }
ListenableFuture<WebSocketResponseMessage> response = client.sendRequest("PUT", "/api/v1/message", Collections.singletonList(header), body);
private void processStoredMessages() { OutgoingMessageEntityList messages = messagesManager.getMessagesForDevice(account.getNumber(), device.getId()); Iterator<OutgoingMessageEntity> iterator = messages.getMessages().iterator(); while (iterator.hasNext()) { OutgoingMessageEntity message = iterator.next(); Envelope.Builder builder = Envelope.newBuilder() .setType(Envelope.Type.valueOf(message.getType())) .setTimestamp(message.getTimestamp()) .setServerTimestamp(message.getServerTimestamp()); if (!Util.isEmpty(message.getSource())) { builder.setSource(message.getSource()) .setSourceDevice(message.getSourceDevice()); } if (message.getMessage() != null) { builder.setLegacyMessage(ByteString.copyFrom(message.getMessage())); } if (message.getContent() != null) { builder.setContent(ByteString.copyFrom(message.getContent())); } if (message.getRelay() != null && !message.getRelay().isEmpty()) { builder.setRelay(message.getRelay()); } sendMessage(builder.build(), Optional.of(new StoredMessageInfo(message.getId(), message.isCached())), !iterator.hasNext() && messages.hasMore()); } if (!messages.hasMore()) { client.sendRequest("PUT", "/api/v1/queue/empty", null, Optional.empty()); } }
@GET @Path("/prompt") public Response askMe(@Auth HelloAccount account, @WebSocketSession WebSocketSessionContext context) { ListenableFuture<WebSocketResponseMessage> response = context.getClient().sendRequest("GET", "/hello", new LinkedList<>(), Optional.empty()); Futures.addCallback(response, new FutureCallback<WebSocketResponseMessage>() { @Override public void onSuccess(WebSocketResponseMessage result) { logger.warn("Got response: " + new String(result.getBody().orElse(null))); } @Override public void onFailure(Throwable t) { logger.warn("Request error", t); } }); return Response.ok().build(); }