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 @@
### 3. 全员推送
- [ ] 全员推送
- [ ] 设置应用属性名称
- [ ] 获取应用属性名称
- [ ] 获取用户属性
- [ ] 设置用户属性
- [ ] 删除用户属性
- [ ] 获取用户标签
- [ ] 添加用户标签
- [ ] 删除用户标签
- [ ] 删除用户所有标签
- [x] 全员推送
- [x] 设置应用属性名称
- [x] 获取应用属性名称
- [x] 获取用户属性
- [x] 设置用户属性
- [x] 删除用户属性
- [x] 获取用户标签
- [x] 添加用户标签
- [x] 删除用户标签
- [x] 删除用户所有标签
### 4. 资料管理
......@@ -88,8 +88,8 @@
### 7. 全局禁言管理
- [ ] 设置全局禁言
- [ ] 查询全局禁言
- [x] 设置全局禁言
- [x] 查询全局禁言
### 8. 运营管理
......
......@@ -19,6 +19,7 @@ public class IMClient {
*/
public Account account;
public Message message;
public Member member;
public Profile profile;
public SNS sns;
public Operation operation;
......@@ -52,6 +53,7 @@ public class IMClient {
this.userSig = SigUtil.genUserSig(sdkAppId, key, userId, expire);
account = new Account(this);
message = new Message(this);
member = new Member(this);
profile = new Profile(this);
operation = new Operation(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;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
......@@ -8,6 +9,7 @@ import java.util.List;
* @author hyh
* @since 2021/07/31 10:39
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class PortraitGetRequest extends GenericRequest {
@JsonProperty("To_Account")
private List<String> toAccount;
......
package com.qcloud.im.model.request;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* @author xy
* @since 2021/07/31 11:39
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SetNoSpeakingRequest extends GenericRequest {
@JsonProperty("Set_Account")
private String setAccount;
......
......@@ -10,15 +10,22 @@ import java.util.Map;
*/
public class IMGetAttrNameResult extends GenericResult {
@JsonProperty("AttrNames")
private Map<String,String> attrNames;
private Map<String, Object> attrNames;
public Map<String, String> getAttrNames() {
public Map<String, Object> getAttrNames() {
return attrNames;
}
public void setAttrNames(Map<String, String> attrNames) {
public void setAttrNames(Map<String, Object> attrNames) {
this.attrNames = attrNames;
}
@Override
public String toString() {
return "IMGetAttrNameResult{" +
"attrNames=" + attrNames +
'}';
}
}
......@@ -19,4 +19,11 @@ public class IMGetAttrResult extends GenericResult {
public void setUserAttrs(List<UserAttrItem> userAttrs) {
this.userAttrs = userAttrs;
}
@Override
public String toString() {
return "IMGetAttrResult{" +
"userAttrs=" + userAttrs +
'}';
}
}
......@@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
* @author hyh
* @since 2021/07/30 11:20
*/
public class IMPushResult extends GenericResult{
public class IMPushResult extends GenericResult {
@JsonProperty("TaskId")
private String taskId;
......@@ -17,4 +17,11 @@ public class IMPushResult extends GenericResult{
public void setTaskId(String taskId) {
this.taskId = taskId;
}
@Override
public String toString() {
return "IMPushResult{" +
"taskId='" + taskId + '\'' +
'}';
}
}
......@@ -4,5 +4,5 @@ package com.qcloud.im.model.response;
* @author hyh
* @since 2021/07/30 14:28
*/
public class IMRemoveAllTags extends GenericResult {
public class IMRemoveAllTagsResult extends GenericResult {
}
......@@ -30,4 +30,12 @@ public class UserAttrItem {
public void setAttrs(Map<String, Object> attrs) {
this.attrs = attrs;
}
@Override
public String toString() {
return "UserAttrItem{" +
"toAccount='" + toAccount + '\'' +
", attrs=" + attrs +
'}';
}
}
......@@ -30,4 +30,12 @@ public class UserTagItem {
public void setTags(List<String> 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