Skip to content

Commit 8305ae5

Browse files
committed
Merge branch 'feat/modifyMsg' into 'master'
Add Message Modify Method See merge request public-server/server-sdk-java!32
2 parents 042b8ec + ef91ff7 commit 8305ae5

16 files changed

Lines changed: 604 additions & 9 deletions

File tree

README-CN.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ RongCloud IM Server SDK in Java.
1111
<dependency>
1212
<groupId>cn.rongcloud.im</groupId>
1313
<artifactId>server-sdk-java</artifactId>
14-
<version>4.0.10</version>
14+
<version>4.0.11</version>
1515
</dependency>
1616
```
1717
* Gradle
1818
```
19-
compile group: 'cn.rongcloud.im', name: 'server-sdk-java', version: '4.0.10'
19+
compile group: 'cn.rongcloud.im', name: 'server-sdk-java', version: '4.0.11'
2020
2121
```
2222
* 基于源码 Meavn 打包构建

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ RongCloud IM Server SDK in Java.
1010
<dependency>
1111
<groupId>cn.rongcloud.im</groupId>
1212
<artifactId>server-sdk-java</artifactId>
13-
<version>4.0.10</version>
13+
<version>4.0.11</version>
1414
</dependency>
1515
```
1616
* Gradle
1717
```
18-
compile group: 'cn.rongcloud.im', name: 'server-sdk-java', version: '4.0.10'
18+
compile group: 'cn.rongcloud.im', name: 'server-sdk-java', version: '4.0.11'
1919
```
2020
* Build from source
2121
```

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>cn.rongcloud.im</groupId>
88
<artifactId>server-sdk-java</artifactId>
9-
<version>4.0.10</version>
9+
<version>4.0.11</version>
1010
<packaging>jar</packaging>
1111
<name>RongCloud IM Server SDK</name>
1212
<description>

src/main/java/io/rong/example/message/MessageExample.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ public static void main(String[] args) throws Exception {
240240
* Typing status messages are only supported for one-to-one chat text messages and do not support other message types (including custom messages)
241241
*/
242242
TypingStatusMessage typpingStatusMessage = new TypingStatusMessage();
243+
typpingStatusMessage.setTypingContentType("RC:TxtMsg");
243244
PrivateMessage privateMsg = new PrivateMessage()
244245
.setSenderId("BzUPcKM2B")
245246
.setTargetId(new String[]{"jf8yVWgZO"})

src/main/java/io/rong/messages/TypingStatusMessage.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44

55
public class TypingStatusMessage extends BaseMessage {
66

7-
private String content = "{\"typingContentType\":\"RC:TxtMsg\"}";
7+
private String typingContentType = "RC:TxtMsg";
88
private transient static final String TYPE = "RC:TypSts";
99

10+
11+
1012
public TypingStatusMessage() {
1113

1214
}
@@ -16,13 +18,17 @@ public String getType() {
1618
return TYPE;
1719
}
1820

19-
public String getContent() {
20-
return content;
21+
22+
public String getTypingContentType() {
23+
return typingContentType;
24+
}
25+
26+
public void setTypingContentType(String typingContentType) {
27+
this.typingContentType = typingContentType;
2128
}
2229

2330
@Override
2431
public String toString() {
2532
return GsonUtil.toJson(this, TypingStatusMessage.class);
2633
}
27-
2834
}

src/main/java/io/rong/methods/message/_private/Private.java

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@
77
import io.rong.models.CheckMethod;
88
import io.rong.models.Result;
99
import io.rong.models.Templates;
10+
import io.rong.models.message.ModifyPrivateMessage;
1011
import io.rong.models.message.PrivateMessage;
1112
import io.rong.models.message.PrivateStatusMessage;
1213
import io.rong.models.message.RecallMessage;
1314
import io.rong.models.message.TemplateMessage;
1415
import io.rong.models.response.MessageResult;
1516
import io.rong.models.response.ResponseResult;
17+
import io.rong.messages.BaseMessage;
1618
import io.rong.util.CommonUtil;
1719
import io.rong.util.GsonUtil;
1820
import io.rong.util.HttpUtil;
@@ -340,6 +342,7 @@ public MessageResult sendStatusMessage(PrivateStatusMessage message) throws Exce
340342
* @return MessageResult
341343
* @throws Exception
342344
*/
345+
@Deprecated
343346
public MessageResult sendTypingStatusMessage(PrivateMessage message) throws Exception {
344347
String errMsg = CommonUtil.checkFiled(message, PATH, CheckMethod.SEND);
345348
if (null != errMsg) {
@@ -382,4 +385,63 @@ public MessageResult sendTypingStatusMessage(PrivateMessage message) throws Exce
382385
result.setReqBody(body);
383386
return result;
384387
}
388+
389+
/**
390+
* Modify a one-to-one chat message.
391+
*
392+
* @param message The one-to-one chat message modification request.
393+
* @return ResponseResult
394+
* @throws Exception
395+
*/
396+
public Result modify(ModifyPrivateMessage message) throws Exception {
397+
String errMsg = CommonUtil.checkFiled(message, PATH, CheckMethod.MODIFY);
398+
if (null != errMsg) {
399+
return (ResponseResult) GsonUtil.fromJson(errMsg, ResponseResult.class);
400+
}
401+
402+
StringBuilder sb = new StringBuilder();
403+
sb.append("&fromUserId=").append(URLEncoder.encode(message.getSenderId(), UTF8));
404+
sb.append("&targetId=").append(URLEncoder.encode(message.getTargetId(), UTF8));
405+
sb.append("&msgUID=").append(URLEncoder.encode(message.getMsgUID(), UTF8));
406+
407+
BaseMessage content = message.getContent();
408+
String objectName = message.getObjectName();
409+
if (StringUtils.isBlank(objectName)) {
410+
objectName = content.getType();
411+
}
412+
413+
if (StringUtils.isNotBlank(objectName)) {
414+
sb.append("&objectName=").append(URLEncoder.encode(objectName, UTF8));
415+
}
416+
sb.append("&content=").append(URLEncoder.encode(content.toString(), UTF8));
417+
418+
String body = sb.toString();
419+
if (body.indexOf("&") == 0) {
420+
body = body.substring(1, body.length());
421+
}
422+
423+
HttpURLConnection conn = HttpUtil.CreatePostHttpConnection(
424+
rongCloud.getConfig(),
425+
appKey,
426+
appSecret,
427+
"/message/private/modify.json",
428+
"application/x-www-form-urlencoded"
429+
);
430+
HttpUtil.setBodyParameter(body, conn, rongCloud.getConfig());
431+
432+
ResponseResult result = null;
433+
String response = "";
434+
try {
435+
response = HttpUtil.returnResult(conn, rongCloud.getConfig());
436+
result = (ResponseResult) GsonUtil.fromJson(
437+
CommonUtil.getResponseByCode(PATH, CheckMethod.MODIFY, response),
438+
ResponseResult.class
439+
);
440+
} catch (JSONException | JsonParseException | IllegalStateException e) {
441+
rongCloud.getConfig().errorCounter.incrementAndGet();
442+
result = new ResponseResult(500, "request:" + conn.getURL() + " ,response:" + response + " ,JSONException:" + e.getMessage());
443+
}
444+
result.setReqBody(body);
445+
return result;
446+
}
385447
}

src/main/java/io/rong/methods/message/group/Group.java

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
import io.rong.models.message.GroupMessage;
1010
import io.rong.models.message.GroupStatusMessage;
1111
import io.rong.models.message.MentionMessage;
12+
import io.rong.models.message.ModifyGroupMessage;
1213
import io.rong.models.message.RecallMessage;
1314
import io.rong.models.response.MessageResult;
1415
import io.rong.models.response.ResponseResult;
16+
import io.rong.messages.BaseMessage;
1517
import io.rong.util.CommonUtil;
1618
import io.rong.util.GsonUtil;
1719
import io.rong.util.HttpUtil;
@@ -473,4 +475,63 @@ public MessageResult sendStatusMessage(GroupStatusMessage message) throws Except
473475
result.setReqBody(body);
474476
return result;
475477
}
478+
479+
/**
480+
* Modify a group chat message.
481+
*
482+
* @param message The group chat message modification request.
483+
* @return ResponseResult
484+
* @throws Exception
485+
*/
486+
public Result modify(ModifyGroupMessage message) throws Exception {
487+
String errMsg = CommonUtil.checkFiled(message, PATH, CheckMethod.MODIFY);
488+
if (null != errMsg) {
489+
return (ResponseResult) GsonUtil.fromJson(errMsg, ResponseResult.class);
490+
}
491+
492+
StringBuilder sb = new StringBuilder();
493+
sb.append("&fromUserId=").append(URLEncoder.encode(message.getSenderId(), UTF8));
494+
sb.append("&groupId=").append(URLEncoder.encode(message.getGroupId(), UTF8));
495+
sb.append("&msgUID=").append(URLEncoder.encode(message.getMsgUID(), UTF8));
496+
497+
BaseMessage content = message.getContent();
498+
String objectName = message.getObjectName();
499+
if (StringUtils.isBlank(objectName)) {
500+
objectName = content.getType();
501+
}
502+
503+
if (StringUtils.isNotBlank(objectName)) {
504+
sb.append("&objectName=").append(URLEncoder.encode(objectName, UTF8));
505+
}
506+
sb.append("&content=").append(URLEncoder.encode(content.toString(), UTF8));
507+
508+
String body = sb.toString();
509+
if (body.indexOf("&") == 0) {
510+
body = body.substring(1, body.length());
511+
}
512+
513+
HttpURLConnection conn = HttpUtil.CreatePostHttpConnection(
514+
rongCloud.getConfig(),
515+
appKey,
516+
appSecret,
517+
"/message/group/modify.json",
518+
"application/x-www-form-urlencoded"
519+
);
520+
HttpUtil.setBodyParameter(body, conn, rongCloud.getConfig());
521+
522+
ResponseResult result = null;
523+
String response = "";
524+
try {
525+
response = HttpUtil.returnResult(conn, rongCloud.getConfig());
526+
result = (ResponseResult) GsonUtil.fromJson(
527+
CommonUtil.getResponseByCode(PATH, CheckMethod.MODIFY, response),
528+
ResponseResult.class
529+
);
530+
} catch (JSONException | JsonParseException | IllegalStateException e) {
531+
rongCloud.getConfig().errorCounter.incrementAndGet();
532+
result = new ResponseResult(500, "request:" + conn.getURL() + " ,response:" + response + " ,JSONException:" + e.getMessage());
533+
}
534+
result.setReqBody(body);
535+
return result;
536+
}
476537
}

src/main/java/io/rong/models/CheckMethod.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class CheckMethod {
2727
public static final String DIS = "dis";
2828
public static final String REFRESH = "refresh";
2929
public static final String UPDATE = "update";
30+
public static final String MODIFY = "modify";
3031
public static final String GET_MEMBERS_LIST = "getMemberList";
3132
public static final String PUSH = "push";
3233
public static final String SET_TAG = "setTag";
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package io.rong.models.message;
2+
3+
import io.rong.messages.BaseMessage;
4+
5+
/**
6+
* Group chat message modification request body.
7+
*/
8+
public class ModifyGroupMessage {
9+
10+
/**
11+
* The sender user ID of the original message.
12+
*/
13+
private String senderId;
14+
15+
/**
16+
* The group ID of the original message.
17+
*/
18+
private String groupId;
19+
20+
/**
21+
* The unique identifier of the original message.
22+
*/
23+
private String msgUID;
24+
25+
/**
26+
* The modified message content.
27+
*/
28+
private BaseMessage content;
29+
30+
/**
31+
* Optional message type. It is mainly used for custom message types.
32+
*/
33+
private String objectName;
34+
35+
public ModifyGroupMessage() {
36+
}
37+
38+
public ModifyGroupMessage(String senderId, String groupId, String msgUID, BaseMessage content) {
39+
this.senderId = senderId;
40+
this.groupId = groupId;
41+
this.msgUID = msgUID;
42+
this.content = content;
43+
}
44+
45+
public String getSenderId() {
46+
return senderId;
47+
}
48+
49+
public ModifyGroupMessage setSenderId(String senderId) {
50+
this.senderId = senderId;
51+
return this;
52+
}
53+
54+
public String getGroupId() {
55+
return groupId;
56+
}
57+
58+
public ModifyGroupMessage setGroupId(String groupId) {
59+
this.groupId = groupId;
60+
return this;
61+
}
62+
63+
public String getMsgUID() {
64+
return msgUID;
65+
}
66+
67+
public ModifyGroupMessage setMsgUID(String msgUID) {
68+
this.msgUID = msgUID;
69+
return this;
70+
}
71+
72+
public BaseMessage getContent() {
73+
return content;
74+
}
75+
76+
public ModifyGroupMessage setContent(BaseMessage content) {
77+
this.content = content;
78+
return this;
79+
}
80+
81+
public String getObjectName() {
82+
return objectName;
83+
}
84+
85+
public ModifyGroupMessage setObjectName(String objectName) {
86+
this.objectName = objectName;
87+
return this;
88+
}
89+
}

0 commit comments

Comments
 (0)