Unverified Commit 4b378a0b authored by Yang Libin's avatar Yang Libin Committed by GitHub

feat(member): implement member api (#13)

parent 8eb0d5ff
...@@ -25,16 +25,16 @@ ...@@ -25,16 +25,16 @@
### 3. 全员推送 ### 3. 全员推送
- [ ] 全员推送 - [x] 全员推送
- [ ] 设置应用属性名称 - [x] 设置应用属性名称
- [ ] 获取应用属性名称 - [x] 获取应用属性名称
- [ ] 获取用户属性 - [x] 获取用户属性
- [ ] 设置用户属性 - [x] 设置用户属性
- [ ] 删除用户属性 - [x] 删除用户属性
- [ ] 获取用户标签 - [x] 获取用户标签
- [ ] 添加用户标签 - [x] 添加用户标签
- [ ] 删除用户标签 - [x] 删除用户标签
- [ ] 删除用户所有标签 - [x] 删除用户所有标签
### 4. 资料管理 ### 4. 资料管理
...@@ -88,8 +88,8 @@ ...@@ -88,8 +88,8 @@
### 7. 全局禁言管理 ### 7. 全局禁言管理
- [ ] 设置全局禁言 - [x] 设置全局禁言
- [ ] 查询全局禁言 - [x] 查询全局禁言
### 8. 运营管理 ### 8. 运营管理
......
...@@ -19,6 +19,7 @@ public class IMClient { ...@@ -19,6 +19,7 @@ public class IMClient {
*/ */
public Account account; public Account account;
public Message message; public Message message;
public Member member;
public Profile profile; public Profile profile;
public SNS sns; public SNS sns;
public Operation operation; public Operation operation;
...@@ -52,6 +53,7 @@ public class IMClient { ...@@ -52,6 +53,7 @@ public class IMClient {
this.userSig = SigUtil.genUserSig(sdkAppId, key, userId, expire); this.userSig = SigUtil.genUserSig(sdkAppId, key, userId, expire);
account = new Account(this); account = new Account(this);
message = new Message(this); message = new Message(this);
member = new Member(this);
profile = new Profile(this); profile = new Profile(this);
operation = new Operation(this); operation = new Operation(this);
sns = new SNS(this); sns = new SNS(this);
......
package com.qcloud.im.core;
import com.qcloud.im.IMClient;
import com.qcloud.im.model.request.*;
import com.qcloud.im.model.response.*;
import com.qcloud.im.util.HttpUtil;
import com.qcloud.im.util.JsonUtil;
import java.io.IOException;
/**
* @author bingo
* @since 2021/7/31 16:19
*/
public class Member {
private static final String SERVICE_NAME = "all_member_push";
private static final String IM_PUSH_COMMAND = "im_push";
private static final String IM_SET_ATTR_NAME_COMMAND = "im_set_attr_name";
private static final String IM_GET_ATTR_NAME_COMMAND = "im_get_attr_name";
private static final String IM_GET_ATTR_COMMAND = "im_get_attr";
private static final String IM_SET_ATTR_COMMAND = "im_set_attr";
private static final String IM_REMOVE_ATTR_COMMAND = "im_remove_attr";
private static final String IM_GET_TAG_COMMAND = "im_get_tag";
private static final String IM_ADD_TAG_COMMAND = "im_add_tag";
private static final String IM_REMOVE_TAG_COMMAND = "im_remove_tag";
private static final String IM_REMOVE_ALL_TAGS_COMMAND = "im_remove_all_tags";
private final IMClient imClient;
public Member(IMClient imClient) {
this.imClient = imClient;
}
public IMPushResult imPush(IMPushRequest imPushRequest) throws IOException {
String url = imClient.getUrl(SERVICE_NAME, IM_PUSH_COMMAND);
String result = HttpUtil.post(url, JsonUtil.obj2Str(imPushRequest), null);
return JsonUtil.str2Obj(result, IMPushResult.class);
}
public IMSetAttrNameResult imSetAttrName(IMSetAttrNameRequest imSetAttrNameRequest) throws IOException {
String url = imClient.getUrl(SERVICE_NAME, IM_SET_ATTR_NAME_COMMAND);
String result = HttpUtil.post(url, JsonUtil.obj2Str(imSetAttrNameRequest), null);
return JsonUtil.str2Obj(result, IMSetAttrNameResult.class);
}
public IMGetAttrNameResult imGetAttrName(IMGetAttrNameRequest imGetAttrNameRequest) throws IOException {
String url = imClient.getUrl(SERVICE_NAME, IM_GET_ATTR_NAME_COMMAND);
String result = HttpUtil.post(url, JsonUtil.obj2Str(imGetAttrNameRequest), null);
return JsonUtil.str2Obj(result, IMGetAttrNameResult.class);
}
public IMGetAttrResult imGetAttr(IMGetAttrRequest imGetAttrRequest) throws IOException {
String url = imClient.getUrl(SERVICE_NAME, IM_GET_ATTR_COMMAND);
String result = HttpUtil.post(url, JsonUtil.obj2Str(imGetAttrRequest), null);
return JsonUtil.str2Obj(result, IMGetAttrResult.class);
}
public IMSetAttrResult imSetAttr(IMSetAttrRequest imSetAttrRequest) throws IOException {
String url = imClient.getUrl(SERVICE_NAME, IM_SET_ATTR_COMMAND);
String result = HttpUtil.post(url, JsonUtil.obj2Str(imSetAttrRequest), null);
return JsonUtil.str2Obj(result, IMSetAttrResult.class);
}
public IMRemoveAttrResult imRemoveAttr(IMRemoveAttrRequest imRemoveAttrRequest) throws IOException {
String url = imClient.getUrl(SERVICE_NAME, IM_REMOVE_ATTR_COMMAND);
String result = HttpUtil.post(url, JsonUtil.obj2Str(imRemoveAttrRequest), null);
return JsonUtil.str2Obj(result, IMRemoveAttrResult.class);
}
public IMGetTagResult imGetTag(IMGetTagRequest imGetTagRequest) throws IOException {
String url = imClient.getUrl(SERVICE_NAME, IM_GET_TAG_COMMAND);
String result = HttpUtil.post(url, JsonUtil.obj2Str(imGetTagRequest), null);
return JsonUtil.str2Obj(result, IMGetTagResult.class);
}
public IMAddTagResult imAddTag(IMAddTagRequest imAddTagRequest) throws IOException {
String url = imClient.getUrl(SERVICE_NAME, IM_ADD_TAG_COMMAND);
String result = HttpUtil.post(url, JsonUtil.obj2Str(imAddTagRequest), null);
return JsonUtil.str2Obj(result, IMAddTagResult.class);
}
public IMRemoveTagResult imRemoveTag(IMRemoveTagRequest imRemoveTagRequest) throws IOException {
String url = imClient.getUrl(SERVICE_NAME, IM_REMOVE_TAG_COMMAND);
String result = HttpUtil.post(url, JsonUtil.obj2Str(imRemoveTagRequest), null);
return JsonUtil.str2Obj(result, IMRemoveTagResult.class);
}
public IMRemoveAllTagsResult imRemoveAllTags(IMRemoveAllTagsRequest imRemoveAllTagsRequest) throws IOException {
String url = imClient.getUrl(SERVICE_NAME, IM_REMOVE_ALL_TAGS_COMMAND);
String result = HttpUtil.post(url, JsonUtil.obj2Str(imRemoveAllTagsRequest), null);
return JsonUtil.str2Obj(result, IMRemoveAllTagsResult.class);
}
}
package com.qcloud.im.model.request;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.qcloud.im.model.response.UserTagItem;
import java.util.List;
/**
* @author bingo
* @since 2021/7/31 17:05
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class IMAddTagRequest extends GenericRequest {
@JsonProperty("UserTags")
private List<UserTagItem> userTags;
public List<UserTagItem> getUserTags() {
return userTags;
}
public void setUserTags(List<UserTagItem> userTags) {
this.userTags = userTags;
}
}
package com.qcloud.im.model.request;
import com.fasterxml.jackson.annotation.JsonInclude;
/**
* @author bingo
* @since 2021/7/31 16:47
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class IMGetAttrNameRequest extends GenericRequest {
}
package com.qcloud.im.model.request;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
/**
* @author bingo
* @since 2021/7/31 16:50
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class IMGetAttrRequest extends GenericRequest {
@JsonProperty("To_Account")
private List<String> toAccount;
public List<String> getToAccount() {
return toAccount;
}
public void setToAccount(List<String> toAccount) {
this.toAccount = toAccount;
}
}
package com.qcloud.im.model.request;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
/**
* @author bingo
* @since 2021/7/31 17:03
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class IMGetTagRequest extends GenericRequest {
@JsonProperty("To_Account")
private List<String> toAccount;
public List<String> getToAccount() {
return toAccount;
}
public void setToAccount(List<String> toAccount) {
this.toAccount = toAccount;
}
}
package com.qcloud.im.model.request;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.qcloud.im.model.response.MsgBodyItem;
import java.util.List;
import java.util.Map;
/**
* @author bingo
* @since 2021/7/31 16:27
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class IMPushRequest extends GenericRequest {
@JsonProperty("Condition")
private Map<String, Object> condition;
@JsonProperty("MsgRandom")
private Integer msgRandom;
@JsonProperty("MsgBody")
private List<MsgBodyItem> msgBody;
@JsonProperty("MsgLifeTime")
private Integer msgLifeTime;
@JsonProperty("From_Account")
private String fromAccount;
@JsonProperty("OfflinePushInfo")
private OfflinePushInfo offlinePushInfo;
public Map<String, Object> getCondition() {
return condition;
}
public void setCondition(Map<String, Object> condition) {
this.condition = condition;
}
public Integer getMsgRandom() {
return msgRandom;
}
public void setMsgRandom(Integer msgRandom) {
this.msgRandom = msgRandom;
}
public List<MsgBodyItem> getMsgBody() {
return msgBody;
}
public void setMsgBody(List<MsgBodyItem> msgBody) {
this.msgBody = msgBody;
}
public Integer getMsgLifeTime() {
return msgLifeTime;
}
public void setMsgLifeTime(Integer msgLifeTime) {
this.msgLifeTime = msgLifeTime;
}
public String getFromAccount() {
return fromAccount;
}
public void setFromAccount(String fromAccount) {
this.fromAccount = fromAccount;
}
public OfflinePushInfo getOfflinePushInfo() {
return offlinePushInfo;
}
public void setOfflinePushInfo(OfflinePushInfo offlinePushInfo) {
this.offlinePushInfo = offlinePushInfo;
}
}
package com.qcloud.im.model.request;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
/**
* @author bingo
* @since 2021/7/31 17:08
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class IMRemoveAllTagsRequest extends GenericRequest {
@JsonProperty("To_Account")
private List<String> toAccount;
public List<String> getToAccount() {
return toAccount;
}
public void setToAccount(List<String> toAccount) {
this.toAccount = toAccount;
}
}
package com.qcloud.im.model.request;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.qcloud.im.model.response.UserAttrItem;
import java.util.List;
/**
* @author bingo
* @since 2021/7/31 17:01
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class IMRemoveAttrRequest extends GenericRequest {
@JsonProperty("UserAttrs")
private List<UserAttrItem> userAttrs;
public List<UserAttrItem> getUserAttrs() {
return userAttrs;
}
public void setUserAttrs(List<UserAttrItem> userAttrs) {
this.userAttrs = userAttrs;
}
}
package com.qcloud.im.model.request;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.qcloud.im.model.response.UserTagItem;
import java.util.List;
/**
* @author bingo
* @since 2021/7/31 17:07
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class IMRemoveTagRequest extends GenericRequest {
@JsonProperty("UserTags")
private List<UserTagItem> userTags;
public List<UserTagItem> getUserTags() {
return userTags;
}
public void setUserTags(List<UserTagItem> userTags) {
this.userTags = userTags;
}
}
package com.qcloud.im.model.request;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Map;
/**
* @author bingo
* @since 2021/7/31 17:14
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class IMSetAttrNameRequest extends GenericRequest {
@JsonProperty("AttrNames")
private Map<String, String> attrNames;
public Map<String, String> getAttrNames() {
return attrNames;
}
public void setAttrNames(Map<String, String> attrNames) {
this.attrNames = attrNames;
}
}
package com.qcloud.im.model.request;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.qcloud.im.model.response.UserAttrItem;
import java.util.List;
/**
* @author bingo
* @since 2021/7/31 16:58
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class IMSetAttrRequest extends GenericRequest {
@JsonProperty("UserAttrs")
List<UserAttrItem> userAttrs;
public List<UserAttrItem> getUserAttrs() {
return userAttrs;
}
public void setUserAttrs(List<UserAttrItem> userAttrs) {
this.userAttrs = userAttrs;
}
}
package com.qcloud.im.model.request; package com.qcloud.im.model.request;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List; import java.util.List;
...@@ -8,6 +9,7 @@ import java.util.List; ...@@ -8,6 +9,7 @@ import java.util.List;
* @author hyh * @author hyh
* @since 2021/07/31 10:39 * @since 2021/07/31 10:39
*/ */
@JsonInclude(JsonInclude.Include.NON_NULL)
public class PortraitGetRequest extends GenericRequest { public class PortraitGetRequest extends GenericRequest {
@JsonProperty("To_Account") @JsonProperty("To_Account")
private List<String> toAccount; private List<String> toAccount;
......
package com.qcloud.im.model.request; package com.qcloud.im.model.request;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
/** /**
* @author xy * @author xy
* @since 2021/07/31 11:39 * @since 2021/07/31 11:39
*/ */
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SetNoSpeakingRequest extends GenericRequest { public class SetNoSpeakingRequest extends GenericRequest {
@JsonProperty("Set_Account") @JsonProperty("Set_Account")
private String setAccount; private String setAccount;
......
...@@ -10,15 +10,22 @@ import java.util.Map; ...@@ -10,15 +10,22 @@ import java.util.Map;
*/ */
public class IMGetAttrNameResult extends GenericResult { public class IMGetAttrNameResult extends GenericResult {
@JsonProperty("AttrNames") @JsonProperty("AttrNames")
private Map<String,String> attrNames; private Map<String, Object> attrNames;
public Map<String, String> getAttrNames() { public Map<String, Object> getAttrNames() {
return attrNames; return attrNames;
} }
public void setAttrNames(Map<String, String> attrNames) { public void setAttrNames(Map<String, Object> attrNames) {
this.attrNames = attrNames; this.attrNames = attrNames;
} }
@Override
public String toString() {
return "IMGetAttrNameResult{" +
"attrNames=" + attrNames +
'}';
}
} }
...@@ -19,4 +19,11 @@ public class IMGetAttrResult extends GenericResult { ...@@ -19,4 +19,11 @@ public class IMGetAttrResult extends GenericResult {
public void setUserAttrs(List<UserAttrItem> userAttrs) { public void setUserAttrs(List<UserAttrItem> userAttrs) {
this.userAttrs = userAttrs; this.userAttrs = userAttrs;
} }
@Override
public String toString() {
return "IMGetAttrResult{" +
"userAttrs=" + userAttrs +
'}';
}
} }
...@@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; ...@@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
* @author hyh * @author hyh
* @since 2021/07/30 11:20 * @since 2021/07/30 11:20
*/ */
public class IMPushResult extends GenericResult{ public class IMPushResult extends GenericResult {
@JsonProperty("TaskId") @JsonProperty("TaskId")
private String taskId; private String taskId;
...@@ -17,4 +17,11 @@ public class IMPushResult extends GenericResult{ ...@@ -17,4 +17,11 @@ public class IMPushResult extends GenericResult{
public void setTaskId(String taskId) { public void setTaskId(String taskId) {
this.taskId = taskId; this.taskId = taskId;
} }
@Override
public String toString() {
return "IMPushResult{" +
"taskId='" + taskId + '\'' +
'}';
}
} }
...@@ -4,5 +4,5 @@ package com.qcloud.im.model.response; ...@@ -4,5 +4,5 @@ package com.qcloud.im.model.response;
* @author hyh * @author hyh
* @since 2021/07/30 14:28 * @since 2021/07/30 14:28
*/ */
public class IMRemoveAllTags extends GenericResult { public class IMRemoveAllTagsResult extends GenericResult {
} }
...@@ -30,4 +30,12 @@ public class UserAttrItem { ...@@ -30,4 +30,12 @@ public class UserAttrItem {
public void setAttrs(Map<String, Object> attrs) { public void setAttrs(Map<String, Object> attrs) {
this.attrs = attrs; this.attrs = attrs;
} }
@Override
public String toString() {
return "UserAttrItem{" +
"toAccount='" + toAccount + '\'' +
", attrs=" + attrs +
'}';
}
} }
...@@ -30,4 +30,12 @@ public class UserTagItem { ...@@ -30,4 +30,12 @@ public class UserTagItem {
public void setTags(List<String> tags) { public void setTags(List<String> tags) {
this.tags = tags; this.tags = tags;
} }
@Override
public String toString() {
return "UserTagItem{" +
"toAccount='" + toAccount + '\'' +
", tags=" + tags +
'}';
}
} }
package com.qcloud.im;
import com.qcloud.im.model.request.*;
import com.qcloud.im.model.response.*;
import org.junit.Assert;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
/**
* @author bingo
* @since 2021/7/31 17:22
*/
public class MemberTest {
private static final Properties properties = new Properties();
private static final IMClient client;
static {
InputStream resourceAsStream = AccountTest.class.getClassLoader().getResourceAsStream("app.properties");
try {
properties.load(resourceAsStream);
} catch (IOException e) {
e.printStackTrace();
}
String key = properties.getProperty("key");
String identifier = properties.getProperty("identifier");
Long appId = Long.parseLong(properties.getProperty("appId"));
client = IMClient.getInstance(appId, identifier, key);
}
@Test
public void testImPush() throws IOException {
IMPushRequest request = new IMPushRequest();
request.setFromAccount("admin");
request.setMsgRandom(9312457);
request.setMsgLifeTime(120);
MsgBodyItem item = new MsgBodyItem();
MsgContentItem contentItem = new MsgContentItem();
contentItem.setText("hi, beauty");
item.setMsgContent(contentItem);
request.setMsgBody(Collections.singletonList(item));
IMPushResult result = client.member.imPush(request);
System.out.println(result);
Assert.assertEquals("OK", result.getActionStatus());
}
@Test
public void testImSetAttrName() throws IOException {
IMSetAttrNameRequest request = new IMSetAttrNameRequest();
Map<String, String> attrNames = new HashMap<>(3);
attrNames.put("0", "sex");
attrNames.put("1", "city");
attrNames.put("2", "country");
request.setAttrNames(attrNames);
IMSetAttrNameResult result = client.member.imSetAttrName(request);
System.out.println(result);
Assert.assertEquals("OK", result.getActionStatus());
}
@Test
public void testImGetAttrName() throws IOException {
IMGetAttrNameRequest request = new IMGetAttrNameRequest();
IMGetAttrNameResult result = client.member.imGetAttrName(request);
System.out.println(result);
Assert.assertEquals("OK", result.getActionStatus());
}
@Test
public void testImGetAttr() throws IOException {
IMGetAttrRequest request = new IMGetAttrRequest();
request.setToAccount(Arrays.asList("test1", "test2"));
IMGetAttrResult result = client.member.imGetAttr(request);
System.out.println(result);
Assert.assertEquals("OK", result.getActionStatus());
}
@Test
public void testImSetAttr() throws IOException {
IMSetAttrRequest request = new IMSetAttrRequest();
UserAttrItem item = new UserAttrItem();
Map<String, Object> attrs = new HashMap<>();
attrs.put("sex", "attr1");
attrs.put("city", "attr2");
item.setAttrs(attrs);
item.setToAccount("test1");
request.setUserAttrs(Collections.singletonList(item));
IMSetAttrResult result = client.member.imSetAttr(request);
System.out.println(result);
Assert.assertEquals("OK", result.getActionStatus());
}
@Test
public void testImRemoveAttr() throws IOException {
IMRemoveAttrRequest request = new IMRemoveAttrRequest();
UserAttrItem item = new UserAttrItem();
Map<String, Object> attrs = new HashMap<>();
attrs.put("sex", "attr1");
attrs.put("city", "attr2");
item.setAttrs(attrs);
request.setUserAttrs(Collections.singletonList(item));
IMRemoveAttrResult result = client.member.imRemoveAttr(request);
System.out.println(result);
Assert.assertEquals("OK", result.getActionStatus());
}
@Test
public void testImGetTag() throws IOException {
IMGetTagRequest request = new IMGetTagRequest();
request.setToAccount(Arrays.asList("test1", "test2"));
IMGetTagResult result = client.member.imGetTag(request);
System.out.println(result);
Assert.assertEquals("OK", result.getActionStatus());
}
@Test
public void testImAddTag() throws IOException {
IMAddTagRequest request = new IMAddTagRequest();
UserTagItem item = new UserTagItem();
item.setTags(Arrays.asList("a", "b"));
item.setToAccount("test1");
request.setUserTags(Collections.singletonList(item));
IMAddTagResult result = client.member.imAddTag(request);
System.out.println(result);
Assert.assertEquals("OK", result.getActionStatus());
}
@Test
public void testImRemoveTag() throws IOException {
IMRemoveTagRequest request = new IMRemoveTagRequest();
UserTagItem item = new UserTagItem();
item.setTags(Arrays.asList("a", "b"));
item.setToAccount("test1");
request.setUserTags(Collections.singletonList(item));
IMRemoveTagResult result = client.member.imRemoveTag(request);
System.out.println(result);
Assert.assertEquals("OK", result.getActionStatus());
}
@Test
public void testImRemoveAllTags() throws IOException {
IMRemoveAllTagsRequest request = new IMRemoveAllTagsRequest();
request.setToAccount(Arrays.asList("test1", "test2"));
IMRemoveAllTagsResult result = client.member.imRemoveAllTags(request);
System.out.println(result);
Assert.assertEquals("OK", result.getActionStatus());
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment