Skip to content

Commit

Permalink
CES-898: Created an API to get message by id along with the disclaim…
Browse files Browse the repository at this point in the history
…er text (#114)
  • Loading branch information
alokpatel11290 authored May 26, 2020
1 parent a3b7060 commit d4e1609
Show file tree
Hide file tree
Showing 4 changed files with 100 additions and 0 deletions.
35 changes: 35 additions & 0 deletions src/main/java/clients/symphony/api/MessagesClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,41 @@ public InboundMessage sendTaggedMessage(String streamId, OutboundMessage message
return sendMessage(streamId, message, false);
}

public InboundMessage getMessageById(String messageId) {
String cleanMessageId = messageId.replaceAll("=", "")
.replaceAll("/", "_")
.replaceAll("\\+", "-");

WebTarget webTarget = botClient.getAgentClient()
.target(botClient.getConfig().getAgentUrl())
.path(AgentConstants.GETMESSAGEBYID.replace("{mid}", cleanMessageId));

Invocation.Builder builder = webTarget
.request(MediaType.APPLICATION_JSON)
.header("sessionToken", botClient.getSymAuth().getSessionToken());

if (isKeyManTokenRequired) {
builder = builder.header("keyManagerToken", botClient.getSymAuth().getKmToken());
}

InboundMessage result;
try (Response response = builder.get()) {
if (response.getStatusInfo().getFamily() != SUCCESSFUL) {
try {
handleError(response, botClient);
} catch (UnauthorizedException ex) {
return getMessageById(messageId);
}
return null;
} else if (response.getStatus() == 204) {
return null;
} else {
result = response.readEntity(InboundMessage.class);
}
return result;
}
}

public List<InboundMessage> getMessagesFromStream(String streamId, long since, int skip, int limit)
throws SymClientException {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ public class AgentConstants {
public static final String READDATAFEED = AGENT + "/v4/datafeed/{id}/read";
public static final String CREATEMESSAGE = AGENT + "/v4/stream/{sid}/message/create";
public static final String GETMESSAGES = AGENT + "/v4/stream/{sid}/message";
public static final String GETMESSAGEBYID = AGENT + "/v1/message/{mid}";
public static final String GETATTACHMENT = AGENT + "/v1/stream/{sid}/attachment";
public static final String SEARCHMESSAGES = AGENT + "/v1/message/search";
public static final String MESSAGEIMPORT = AGENT + "/v4/message/import";
Expand Down
27 changes: 27 additions & 0 deletions src/main/java/model/InboundMessage.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ public class InboundMessage {
private String messageId;
private Long timestamp;
private String message;
private InboundMessage sharedMessage;
private String data;
private List<Attachment> attachments;
private User user;
Expand All @@ -18,6 +19,8 @@ public class InboundMessage {
private String diagnostic;
private String userAgent;
private String originalFormat;
private String disclaimer;
private String sid;

public String getMessageId() {
return messageId;
Expand All @@ -43,6 +46,14 @@ public void setMessage(String message) {
this.message = message;
}

public InboundMessage getSharedMessage() {
return sharedMessage;
}

public void setSharedMessage(InboundMessage sharedMessage) {
this.sharedMessage = sharedMessage;
}

public String getData() {
return data;
}
Expand Down Expand Up @@ -107,6 +118,22 @@ public void setOriginalFormat(String originalFormat) {
this.originalFormat = originalFormat;
}

public String getDisclaimer() {
return disclaimer;
}

public void setDisclaimer(String disclaimer) {
this.disclaimer = disclaimer;
}

public String getSid() {
return sid;
}

public void setSid(String sid) {
this.sid = sid;
}

public String getMessageText() {
if (SymMessageParser.getInstance() == null) {
return null;
Expand Down
37 changes: 37 additions & 0 deletions src/test/java/it/clients/symphony/api/MessagesClientTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,43 @@ public void initClient() {
messagesClient = new MessagesClient(symBotClient);
}

@Test
public void getMessageByIdSuccess() {
stubFor(get(urlEqualTo(AgentConstants.GETMESSAGEBYID.replace("{mid}", "mock-message_id")))
.withHeader(HttpHeaders.ACCEPT, equalTo(MediaType.APPLICATION_JSON))
.willReturn(aResponse()
.withStatus(200)
.withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.withBody("{\n" +
" \"messageId\": \"mockMessageId\",\n" +
" \"timestamp\": 1590130725008,\n" +
" \"message\": \"<div data-format=\\\"PresentationML\\\" data-version=\\\"2.0\\\" class=\\\"wysiwyg\\\"><p>Hello</p></div>\",\n" +
" \"data\": \"{}\",\n" +
" \"user\": {\n" +
" \"userId\": 12345678901234,\n" +
" \"firstName\": \"Mock\",\n" +
" \"lastName\": \"User\",\n" +
" \"displayName\": \"Mock User\",\n" +
" \"email\": \"[email protected]\"\n" +
" },\n" +
" \"stream\": {\n" +
" \"streamId\": \"mock_stream_id\",\n" +
" \"streamType\": \"IM\"\n" +
" },\n" +
" \"userAgent\": \"DESKTOP-40.0.0-11751-Windows-10-Chrome-81.0.4044.138\",\n" +
" \"originalFormat\": \"com.symphony.messageml.v2\",\n" +
" \"disclaimer\": \"This is mock disclaimer\",\n" +
" \"sid\": \"mock_sid\"\n" +
"}")));

InboundMessage message = messagesClient.getMessageById("mock+message/id");

assertNotNull(message);
assertEquals("mockMessageId", message.getMessageId());
assertEquals("This is mock disclaimer", message.getDisclaimer());
assertEquals("mock_sid", message.getSid());
}

@Test
public void getMessagesFromStreamSuccess() {
stubFor(get(urlEqualTo(AgentConstants.GETMESSAGES.replace("{sid}", "1").concat("?since=1461808167175")))
Expand Down

0 comments on commit d4e1609

Please sign in to comment.