mirror of
https://github.com/AsamK/signal-cli
synced 2025-09-02 12:30:39 +00:00
changed send_message json parsing to match new schema
This commit is contained in:
parent
9dd31c91aa
commit
4feff17553
1 changed files with 27 additions and 10 deletions
|
@ -78,23 +78,35 @@ public class JsonEventLoopCommand implements LocalCommand {
|
||||||
*/
|
*/
|
||||||
JsonEventLoopStatusReport send_message( JsonNode reqObj, JsonNode reqID) {
|
JsonEventLoopStatusReport send_message( JsonNode reqObj, JsonNode reqID) {
|
||||||
|
|
||||||
|
JsonNode dataMessage = reqObj.get("dataMessage");
|
||||||
|
if(dataMessage == null) {
|
||||||
|
return new JsonEventLoopStatusReport("send_message", reqID, JsonEventLoopStatusReport.STATUSCODE_REQUEST_FORMAT_ERROR, "send_message: ERROR: dataMessage attribute missing from request object");
|
||||||
|
}
|
||||||
|
|
||||||
// get body text
|
// get body text
|
||||||
String body_text = null;
|
String body_text = null;
|
||||||
if(reqObj.get("messageBody") != null) {
|
if(dataMessage.get("message") != null) {
|
||||||
body_text = reqObj.get("messageBody").asText();
|
body_text = dataMessage.get("message").asText();
|
||||||
}
|
}
|
||||||
|
|
||||||
// parse attachment list
|
// parse attachment list
|
||||||
List<String> attachments = new ArrayList<String>();
|
List<String> attachments = new ArrayList<String>();
|
||||||
if(reqObj.get("attachments") != null && reqObj.get("attachments").isArray()) {
|
if(dataMessage.get("attachments") != null && dataMessage.get("attachments").isArray()) {
|
||||||
for( JsonNode node : reqObj.get("attachments")) {
|
for( JsonNode node : dataMessage.get("attachments")) {
|
||||||
attachments.add(node.asText());
|
if( node.get("filename") == null) {
|
||||||
|
return new JsonEventLoopStatusReport("send_message", reqID, JsonEventLoopStatusReport.STATUSCODE_REQUEST_FORMAT_ERROR, "send_message: ERROR: 'filename' attribute from attachment object");
|
||||||
|
}
|
||||||
|
attachments.add(node.get("filename").asText());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( reqObj.get("recipientNumber") != null) {
|
if( reqObj.get("recipient") != null) {
|
||||||
|
JsonNode recipient_obj = reqObj.get("recipient");
|
||||||
|
if(recipient_obj.get("number") == null) {
|
||||||
|
return new JsonEventLoopStatusReport("send_message", reqID, JsonEventLoopStatusReport.STATUSCODE_REQUEST_FORMAT_ERROR, "send_message: ERROR: 'recipient' is missing 'number' attribute");
|
||||||
|
}
|
||||||
// send message directly to another user
|
// send message directly to another user
|
||||||
String recipientNumber = reqObj.get("recipientNumber").asText();
|
String recipientNumber = recipient_obj.get("number").asText();
|
||||||
try {
|
try {
|
||||||
m.sendMessage( body_text, attachments, recipientNumber);
|
m.sendMessage( body_text, attachments, recipientNumber);
|
||||||
} catch( IOException e) {
|
} catch( IOException e) {
|
||||||
|
@ -102,9 +114,14 @@ public class JsonEventLoopCommand implements LocalCommand {
|
||||||
} catch( EncapsulatedExceptions e) {
|
} catch( EncapsulatedExceptions e) {
|
||||||
return new JsonEventLoopStatusReport( "send_message", reqID, JsonEventLoopStatusReport.STATUSCODE_SEND_ERROR, "EncapsulatedException: " + e.toString() );
|
return new JsonEventLoopStatusReport( "send_message", reqID, JsonEventLoopStatusReport.STATUSCODE_SEND_ERROR, "EncapsulatedException: " + e.toString() );
|
||||||
}
|
}
|
||||||
} else if( reqObj.get("recipientGroupID") != null) {
|
} else if( dataMessage.get("groupInfo") != null) {
|
||||||
|
JsonNode groupInfo_obj = dataMessage.get("groupInfo");
|
||||||
|
if(groupInfo_obj.get("groupId") == null) {
|
||||||
|
return new JsonEventLoopStatusReport("send_message", reqID, JsonEventLoopStatusReport.STATUSCODE_REQUEST_FORMAT_ERROR, "send_message: ERROR: dataMessage.groupInfo is missing 'groupId' atribute");
|
||||||
|
}
|
||||||
|
|
||||||
// send message to group
|
// send message to group
|
||||||
String recipientGroupID = reqObj.get("recipientGroupID").asText();
|
String recipientGroupID = groupInfo_obj.get("groupId").asText();
|
||||||
try {
|
try {
|
||||||
byte[] recipientGroupID_bytearray = Util.decodeGroupId(recipientGroupID);
|
byte[] recipientGroupID_bytearray = Util.decodeGroupId(recipientGroupID);
|
||||||
m.sendGroupMessage( body_text, attachments, recipientGroupID_bytearray);
|
m.sendGroupMessage( body_text, attachments, recipientGroupID_bytearray);
|
||||||
|
@ -116,7 +133,7 @@ public class JsonEventLoopCommand implements LocalCommand {
|
||||||
return new JsonEventLoopStatusReport( "send_message", reqID, JsonEventLoopStatusReport.STATUSCODE_SEND_ERROR, "EncapsulatedException: " + e.toString() );
|
return new JsonEventLoopStatusReport( "send_message", reqID, JsonEventLoopStatusReport.STATUSCODE_SEND_ERROR, "EncapsulatedException: " + e.toString() );
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return new JsonEventLoopStatusReport( "send_message", reqID, JsonEventLoopStatusReport.STATUSCODE_RECIPIENT_FORMAT_ERROR, "Neither recipientNumber or recipientGroupID present in request, nothing to do");
|
return new JsonEventLoopStatusReport( "send_message", reqID, JsonEventLoopStatusReport.STATUSCODE_RECIPIENT_FORMAT_ERROR, "Neither recipient.number or dataMessage.groupInfo.groupId present in request");
|
||||||
}
|
}
|
||||||
|
|
||||||
return new JsonEventLoopStatusReport("send_message", reqID, JsonEventLoopStatusReport.STATUSCODE_OK);
|
return new JsonEventLoopStatusReport("send_message", reqID, JsonEventLoopStatusReport.STATUSCODE_OK);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue