diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/FriendRelationAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/FriendRelationAction.java index 177e3a95..510462ad 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/FriendRelationAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/FriendRelationAction.java @@ -29,7 +29,7 @@ import win.liyufan.im.IMTopic; import java.util.concurrent.Executor; -@Route(APIPath.Friend_Status) +@Route(APIPath.Friend_Update_Status) @HttpMethod("POST") public class FriendRelationAction extends AdminAction { diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/FriendRelationGetAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/FriendRelationGetAction.java index 714c4851..c771bb0d 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/FriendRelationGetAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/FriendRelationGetAction.java @@ -23,7 +23,7 @@ import io.netty.handler.codec.http.HttpResponseStatus; import java.util.ArrayList; import java.util.List; -@Route(APIPath.Friend_List) +@Route(APIPath.Friend_Get_List) @HttpMethod("POST") public class FriendRelationGetAction extends AdminAction { diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetUserAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetUserAction.java index a8ec9ffc..2e8748d1 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetUserAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetUserAction.java @@ -37,7 +37,7 @@ public class GetUserAction extends AdminAction { if (request.getNettyRequest() instanceof FullHttpRequest) { InputGetUserInfo inputUserId = getRequestBody(request.getNettyRequest(), InputGetUserInfo.class); if (inputUserId != null - && (!StringUtil.isNullOrEmpty(inputUserId.getUserId()) || !StringUtil.isNullOrEmpty(inputUserId.getName()))) { + && (!StringUtil.isNullOrEmpty(inputUserId.getUserId()) || !StringUtil.isNullOrEmpty(inputUserId.getName()) || !StringUtil.isNullOrEmpty(inputUserId.getMobile()))) { WFCMessage.User user = null; if(!StringUtil.isNullOrEmpty(inputUserId.getUserId())) { diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetUserBlockListAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetUserBlockListAction.java index df8de4e2..0b09ed34 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetUserBlockListAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetUserBlockListAction.java @@ -9,6 +9,7 @@ package com.xiaoleilu.loServer.action.admin; import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.pojos.OutputUserBlockStatusList; import com.google.gson.Gson; import com.xiaoleilu.loServer.RestResult; import com.xiaoleilu.loServer.annotation.HttpMethod; @@ -31,7 +32,9 @@ public class GetUserBlockListAction extends AdminAction { public boolean action(Request request, Response response) { if (request.getNettyRequest() instanceof FullHttpRequest) { response.setStatus(HttpResponseStatus.OK); - RestResult result = RestResult.ok(messagesStore.getUserStatusList()); + OutputUserBlockStatusList list = new OutputUserBlockStatusList(); + list.setStatusList(messagesStore.getUserStatusList()); + RestResult result = RestResult.ok(list); response.setContent(new Gson().toJson(result)); } return true; diff --git a/common/src/main/java/cn.wildfirechat.pojos/InputGetUserInfo.java b/common/src/main/java/cn.wildfirechat.pojos/InputGetUserInfo.java index 492a1179..efc05a9b 100755 --- a/common/src/main/java/cn.wildfirechat.pojos/InputGetUserInfo.java +++ b/common/src/main/java/cn.wildfirechat.pojos/InputGetUserInfo.java @@ -13,9 +13,10 @@ public class InputGetUserInfo { private String name; private String mobile; - public InputGetUserInfo(String userId, String name) { + public InputGetUserInfo(String userId, String name, String mobile) { this.userId = userId; this.name = name; + this.mobile = mobile; } public String getMobile() { diff --git a/common/src/main/java/cn/wildfirechat/common/APIPath.java b/common/src/main/java/cn/wildfirechat/common/APIPath.java index e6bcceb6..e15d7776 100644 --- a/common/src/main/java/cn/wildfirechat/common/APIPath.java +++ b/common/src/main/java/cn/wildfirechat/common/APIPath.java @@ -19,8 +19,8 @@ public interface APIPath { String User_Get_Online_Status = "/admin/user/onlinestatus"; - String Friend_Status = "/admin/friend/status"; - String Friend_List = "/admin/friend/list"; + String Friend_Update_Status = "/admin/friend/status"; + String Friend_Get_List = "/admin/friend/list"; String Msg_Send = "/admin/message/send"; String Msg_Recall = "/admin/message/recall"; @@ -33,7 +33,6 @@ public interface APIPath { String Create_Robot = "/admin/robot/create"; - String Channel_Message_Send = "/channel/message/send"; String Robot_User_Info = "/robot/user_info"; diff --git a/distribution/src/main/resources/wildfirechat.conf b/distribution/src/main/resources/wildfirechat.conf index 68d50d5c..708ec7ad 100755 --- a/distribution/src/main/resources/wildfirechat.conf +++ b/distribution/src/main/resources/wildfirechat.conf @@ -63,9 +63,11 @@ media.server.use_qiniu 0 #Media_Type_FAVORITE = 6 # qiniu media server configuration +## 上传地址,不同的区域,上传地址也不同,请注意现在正确的地址 qiniu.server_url http://up.qbox.me qiniu.access_key tU3vdBK5BL5j4N7jI5N5uZgq_HQDo170w5C9Amnn qiniu.secret_key YfQIJdgp5YGhwEw14vGpaD2HJZsuJldWtqens7i5 +## bucket名字及Domain qiniu.bucket_general_name media qiniu.bucket_general_domain http://cdn.wildfirechat.cn qiniu.bucket_image_name media diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/ChatConfig.java b/sdk/src/main/java/cn/wildfirechat/sdk/ChatConfig.java index 3f099a44..fcc3787f 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/ChatConfig.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/ChatConfig.java @@ -1,9 +1,19 @@ package cn.wildfirechat.sdk; -import cn.wildfirechat.sdk.utilities.HttpUtils; +import cn.wildfirechat.sdk.utilities.AdminHttpUtils; +import cn.wildfirechat.sdk.utilities.ChannelHttpUtils; +import cn.wildfirechat.sdk.utilities.RobotHttpUtils; public class ChatConfig { - public static void init(String url, String secret) { - HttpUtils.init(url, secret); + public static void initAdmin(String url, String secret) { + AdminHttpUtils.init(url, secret); + } + + public static void initRobot(String url, String robotId, String secret) { + RobotHttpUtils.init(url, robotId, secret); + } + + public static void initChannel(String url, String channelId, String secret) { + ChannelHttpUtils.init(url, channelId, secret); } } diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/ChatroomAdmin.java b/sdk/src/main/java/cn/wildfirechat/sdk/ChatroomAdmin.java new file mode 100644 index 00000000..c13d0a63 --- /dev/null +++ b/sdk/src/main/java/cn/wildfirechat/sdk/ChatroomAdmin.java @@ -0,0 +1,27 @@ +package cn.wildfirechat.sdk; + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.pojos.*; +import cn.wildfirechat.sdk.model.IMResult; +import cn.wildfirechat.sdk.utilities.AdminHttpUtils; + +public class ChatroomAdmin { + public static IMResult createChatroom(InputCreateChatroom input) throws Exception { + String path = APIPath.Create_Chatroom; + return AdminHttpUtils.httpJsonPost(path, input, OutputCreateChatroom.class); + } + + public static IMResult destroyChatroom(String chatroomId) throws Exception { + String path = APIPath.Chatroom_Destroy; + InputDestoryChatroom input = new InputDestoryChatroom(); + input.setChatroomId(chatroomId); + return AdminHttpUtils.httpJsonPost(path, input, Void.class); + } + + public static IMResult getChatroomInfo(String chatroomId) throws Exception { + String path = APIPath.Chatroom_Info; + InputGetChatroomInfo input = new InputGetChatroomInfo(chatroomId); + return AdminHttpUtils.httpJsonPost(path, input, OutputGetChatroomInfo.class); + } + +} diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/FriendAdmin.java b/sdk/src/main/java/cn/wildfirechat/sdk/FriendAdmin.java new file mode 100644 index 00000000..ad68da9f --- /dev/null +++ b/sdk/src/main/java/cn/wildfirechat/sdk/FriendAdmin.java @@ -0,0 +1,26 @@ +package cn.wildfirechat.sdk; + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.pojos.*; +import cn.wildfirechat.sdk.model.IMResult; +import cn.wildfirechat.sdk.utilities.AdminHttpUtils; + +public class FriendAdmin { + public static IMResult updateFriendStatus(String userId, String targetId, int status) throws Exception { + String path = APIPath.Friend_Update_Status; + InputFriendRequest input = new InputFriendRequest(); + input.setUserId(userId); + input.setFriendUid(targetId); + input.setStatus(status); + return AdminHttpUtils.httpJsonPost(path, input, Void.class); + } + + public static IMResult getFriendStatusList(String userId, int status) throws Exception { + String path = APIPath.Friend_Get_List; + InputGetFriendList input = new InputGetFriendList(); + input.setUserId(userId); + input.setStatus(0); + return AdminHttpUtils.httpJsonPost(path, input, Void.class); + } + +} diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java b/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java index 1d902bb8..c8efd83e 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java @@ -3,7 +3,7 @@ package cn.wildfirechat.sdk; import cn.wildfirechat.common.APIPath; import cn.wildfirechat.pojos.*; import cn.wildfirechat.sdk.model.IMResult; -import cn.wildfirechat.sdk.utilities.HttpUtils; +import cn.wildfirechat.sdk.utilities.AdminHttpUtils; import java.util.ArrayList; import java.util.List; @@ -20,7 +20,7 @@ public class GroupAdmin { createGroup.setTo_lines(to_lines); createGroup.setNotify_message(notify_message); - return HttpUtils.httpJsonPost(path, createGroup, OutputCreateGroupResult.class); + return AdminHttpUtils.httpJsonPost(path, createGroup, OutputCreateGroupResult.class); } public static IMResult dismissGroup(String operator, String groupId, List to_lines, MessagePayload notify_message) throws Exception { @@ -30,7 +30,7 @@ public class GroupAdmin { dismissGroup.setGroup_id(groupId); dismissGroup.setTo_lines(to_lines); dismissGroup.setNotify_message(notify_message); - return HttpUtils.httpJsonPost(path, dismissGroup, Void.class); + return AdminHttpUtils.httpJsonPost(path, dismissGroup, Void.class); } public static IMResult transferGroup(String operator, String groupId, String newOwner, List to_lines, MessagePayload notify_message) throws Exception { @@ -40,7 +40,7 @@ public class GroupAdmin { transferGroup.setNew_owner(newOwner); transferGroup.setTo_lines(to_lines); transferGroup.setNotify_message(notify_message); - return HttpUtils.httpJsonPost(path, transferGroup, Void.class); + return AdminHttpUtils.httpJsonPost(path, transferGroup, Void.class); } public static IMResult addGroupMembers(String operator, String groupId, List groupMemberIds, List to_lines, MessagePayload notify_message) throws Exception { @@ -56,7 +56,7 @@ public class GroupAdmin { addGroupMember.setMembers(members); addGroupMember.setTo_lines(to_lines); addGroupMember.setNotify_message(notify_message); - return HttpUtils.httpJsonPost(path, addGroupMember, Void.class); + return AdminHttpUtils.httpJsonPost(path, addGroupMember, Void.class); } public static IMResult kickoffGroupMembers(String operator, String groupId, List groupMemberIds, List to_lines, MessagePayload notify_message) throws Exception { @@ -66,7 +66,7 @@ public class GroupAdmin { kickoffGroupMember.setMembers(groupMemberIds); kickoffGroupMember.setTo_lines(to_lines); kickoffGroupMember.setNotify_message(notify_message); - return HttpUtils.httpJsonPost(path, kickoffGroupMember, Void.class); + return AdminHttpUtils.httpJsonPost(path, kickoffGroupMember, Void.class); } } diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java new file mode 100644 index 00000000..53d146d5 --- /dev/null +++ b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java @@ -0,0 +1,123 @@ +package cn.wildfirechat.sdk; + +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.pojos.*; +import cn.wildfirechat.sdk.model.IMResult; +import cn.wildfirechat.sdk.utilities.AdminHttpUtils; + +public class Main { + public static void main(String[] args) throws Exception { + AdminHttpUtils.init("http://localhost:18080", "123456"); + + InputOutputUserInfo userInfo = new InputOutputUserInfo(); + userInfo.setUserId("userId1"); + userInfo.setName("user1"); + userInfo.setMobile("13900000000"); + userInfo.setDisplayName("user 1"); + + IMResult resultCreateUser = UserAdmin.createUser(userInfo); + if (resultCreateUser != null && resultCreateUser.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("Create user " + resultCreateUser.getResult().getName() + " success"); + } else { + System.out.println("Create user failure"); + System.exit(-1); + } + + IMResult resultGetUserInfo1 = UserAdmin.getUserByName(userInfo.getName()); + if (resultGetUserInfo1 != null && resultGetUserInfo1.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + if (userInfo.getUserId().equals(resultGetUserInfo1.getResult().getUserId()) + && userInfo.getName().equals(resultGetUserInfo1.getResult().getName()) + && userInfo.getMobile().equals(resultGetUserInfo1.getResult().getMobile()) + && userInfo.getDisplayName().equals(resultGetUserInfo1.getResult().getDisplayName())) { + System.out.println("get user info success"); + } else { + System.out.println("get user info by name failure"); + System.exit(-1); + } + } else { + System.out.println("get user info by name failure"); + System.exit(-1); + } + + IMResult resultGetUserInfo2 = UserAdmin.getUserByMobile(userInfo.getMobile()); + if (resultGetUserInfo2 != null && resultGetUserInfo2.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + if (userInfo.getUserId().equals(resultGetUserInfo2.getResult().getUserId()) + && userInfo.getName().equals(resultGetUserInfo2.getResult().getName()) + && userInfo.getMobile().equals(resultGetUserInfo2.getResult().getMobile()) + && userInfo.getDisplayName().equals(resultGetUserInfo2.getResult().getDisplayName())) { + System.out.println("get user info success"); + } else { + System.out.println("get user info by mobile failure"); + System.exit(-1); + } + } else { + System.out.println("get user info by mobile failure"); + System.exit(-1); + } + + IMResult resultGetUserInfo3 = UserAdmin.getUserByUserId(userInfo.getUserId()); + if (resultGetUserInfo3 != null && resultGetUserInfo3.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + if (userInfo.getUserId().equals(resultGetUserInfo3.getResult().getUserId()) + && userInfo.getName().equals(resultGetUserInfo3.getResult().getName()) + && userInfo.getMobile().equals(resultGetUserInfo3.getResult().getMobile()) + && userInfo.getDisplayName().equals(resultGetUserInfo3.getResult().getDisplayName())) { + System.out.println("get user info success"); + } else { + System.out.println("get user info by userId failure"); + System.exit(-1); + } + } else { + System.out.println("get user info by userId failure"); + System.exit(-1); + } + + IMResult resultGetToken = UserAdmin.getUserToken(userInfo.getUserId(), "client111"); + if (resultGetToken != null && resultGetToken.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("get token success: " + resultGetToken.getResult().getToken()); + } else { + System.out.println("get user token failure"); + System.exit(-1); + } + + IMResult resultVoid =UserAdmin.updateUserBlockStatus(userInfo.getUserId(), 1); + if (resultVoid != null && resultVoid.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("block user done"); + } else { + System.out.println("block user failure"); + System.exit(-1); + } + + IMResult resultCheckUserStatus = UserAdmin.checkUserBlockStatus(userInfo.getUserId()); + if (resultCheckUserStatus != null && resultCheckUserStatus.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + if (resultCheckUserStatus.getResult().getStatus() == 1) { + System.out.println("check user status success"); + } else { + System.out.println("user status not correct"); + System.exit(-1); + } + } else { + System.out.println("block user failure"); + System.exit(-1); + } + + IMResult resultBlockStatusList = UserAdmin.getBlockedList(); + if (resultBlockStatusList != null && resultBlockStatusList.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + boolean success = false; + for (InputOutputUserBlockStatus blockStatus : resultBlockStatusList.getResult().getStatusList()) { + if (blockStatus.getUserId().equals(userInfo.getUserId()) && blockStatus.getStatus() == 1) { + System.out.println("get block list done"); + success = true; + break; + } + } + if (!success) { + System.out.println("block user status is not expected"); + System.exit(-1); + } + } else { + System.out.println("block user failure"); + System.exit(-1); + } + + } +} diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/MessageAdmin.java b/sdk/src/main/java/cn/wildfirechat/sdk/MessageAdmin.java index bcaac0ef..ff297fd9 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/MessageAdmin.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/MessageAdmin.java @@ -3,7 +3,7 @@ package cn.wildfirechat.sdk; import cn.wildfirechat.common.APIPath; import cn.wildfirechat.pojos.*; import cn.wildfirechat.sdk.model.IMResult; -import cn.wildfirechat.sdk.utilities.HttpUtils; +import cn.wildfirechat.sdk.utilities.AdminHttpUtils; public class MessageAdmin { public static IMResult sendMessage(String sender, Conversation conversation, MessagePayload payload) throws Exception { @@ -12,7 +12,7 @@ public class MessageAdmin { messageData.setSender(sender); messageData.setConv(conversation); messageData.setPayload(payload); - return HttpUtils.httpJsonPost(path, messageData, SendMessageResult.class); + return AdminHttpUtils.httpJsonPost(path, messageData, SendMessageResult.class); } public static IMResult recallMessage(String operator, long messageUid) throws Exception { @@ -20,6 +20,6 @@ public class MessageAdmin { RecallMessageData messageData = new RecallMessageData(); messageData.setOperator(operator); messageData.setMessageUid(messageUid); - return HttpUtils.httpJsonPost(path, messageData, Void.class); + return AdminHttpUtils.httpJsonPost(path, messageData, Void.class); } } diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/SensitiveAdmin.java b/sdk/src/main/java/cn/wildfirechat/sdk/SensitiveAdmin.java new file mode 100644 index 00000000..9be06fb4 --- /dev/null +++ b/sdk/src/main/java/cn/wildfirechat/sdk/SensitiveAdmin.java @@ -0,0 +1,30 @@ +package cn.wildfirechat.sdk; + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.pojos.*; +import cn.wildfirechat.sdk.model.IMResult; +import cn.wildfirechat.sdk.utilities.AdminHttpUtils; + +import java.util.List; + +public class SensitiveAdmin { + public static IMResult addSensitives(List sensitives) throws Exception { + String path = APIPath.Sensitive_Add; + InputOutputSensitiveWords input = new InputOutputSensitiveWords(); + input.setWords(sensitives); + return AdminHttpUtils.httpJsonPost(path, input, Void.class); + } + + public static IMResult removeSensitives(List sensitives) throws Exception { + String path = APIPath.Sensitive_Del; + InputOutputSensitiveWords input = new InputOutputSensitiveWords(); + input.setWords(sensitives); + return AdminHttpUtils.httpJsonPost(path, input, Void.class); + } + + public static IMResult getSensitives(List sensitives) throws Exception { + String path = APIPath.Sensitive_Query; + return AdminHttpUtils.httpJsonPost(path, null, InputOutputSensitiveWords.class); + } + +} diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java b/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java index c4df2cfd..03a1979f 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java @@ -3,48 +3,60 @@ package cn.wildfirechat.sdk; import cn.wildfirechat.common.APIPath; import cn.wildfirechat.pojos.*; import cn.wildfirechat.sdk.model.IMResult; -import cn.wildfirechat.sdk.utilities.HttpUtils; +import cn.wildfirechat.sdk.utilities.AdminHttpUtils; public class UserAdmin { - public static IMResult getUserByName(String mobile) throws Exception { + public static IMResult getUserByName(String name) throws Exception { String path = APIPath.User_Get_Info; - InputGetUserInfo getUserInfo = new InputGetUserInfo(null, mobile); - return HttpUtils.httpJsonPost(path, getUserInfo, InputOutputUserInfo.class); + InputGetUserInfo getUserInfo = new InputGetUserInfo(null, name, null); + return AdminHttpUtils.httpJsonPost(path, getUserInfo, InputOutputUserInfo.class); + } + + public static IMResult getUserByUserId(String userId) throws Exception { + String path = APIPath.User_Get_Info; + InputGetUserInfo getUserInfo = new InputGetUserInfo(userId, null, null); + return AdminHttpUtils.httpJsonPost(path, getUserInfo, InputOutputUserInfo.class); + } + + public static IMResult getUserByMobile(String mobile) throws Exception { + String path = APIPath.User_Get_Info; + InputGetUserInfo getUserInfo = new InputGetUserInfo(null, null, mobile); + return AdminHttpUtils.httpJsonPost(path, getUserInfo, InputOutputUserInfo.class); } public static IMResult createUser(InputOutputUserInfo user) throws Exception { String path = APIPath.Create_User; - return HttpUtils.httpJsonPost(path, user, OutputCreateUser.class); + return AdminHttpUtils.httpJsonPost(path, user, OutputCreateUser.class); } public static IMResult getUserToken(String userId, String clientId) throws Exception { String path = APIPath.User_Get_Token; InputGetToken getToken = new InputGetToken(userId, clientId); - return HttpUtils.httpJsonPost(path, getToken, OutputGetIMTokenData.class); + return AdminHttpUtils.httpJsonPost(path, getToken, OutputGetIMTokenData.class); } public static IMResult updateUserBlockStatus(String userId, int block) throws Exception { String path = APIPath.User_Update_Block_Status; InputOutputUserBlockStatus blockStatus = new InputOutputUserBlockStatus(userId, block); - return HttpUtils.httpJsonPost(path, blockStatus, Void.class); + return AdminHttpUtils.httpJsonPost(path, blockStatus, Void.class); } public static IMResult checkUserBlockStatus(String userId) throws Exception { - String path = APIPath.User_Update_Block_Status; - InputGetUserInfo getUserInfo = new InputGetUserInfo(userId, null); - return HttpUtils.httpJsonPost(path, getUserInfo, OutputUserStatus.class); + String path = APIPath.User_Check_Block_Status; + InputGetUserInfo getUserInfo = new InputGetUserInfo(userId, null, null); + return AdminHttpUtils.httpJsonPost(path, getUserInfo, OutputUserStatus.class); } public static IMResult getBlockedList() throws Exception { String path = APIPath.User_Get_Blocked_List; - return HttpUtils.httpJsonPost(path, null, OutputUserBlockStatusList.class); + return AdminHttpUtils.httpJsonPost(path, null, OutputUserBlockStatusList.class); } //not implement // public static IMResult getUserOnlineStatus(String userId) throws Exception { // String path = APIPath.User_Get_Online_Status; // InputGetUserInfo inputGetUserInfo = new InputGetUserInfo(userId, null); -// return HttpUtils.httpJsonPost(path, null, OutputUserBlockStatusList.class); +// return AdminHttpUtils.httpJsonPost(path, null, OutputUserBlockStatusList.class); // } diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/model/SendMessageResult.java b/sdk/src/main/java/cn/wildfirechat/sdk/model/SendMessageResult.java deleted file mode 100644 index aeb2152c..00000000 --- a/sdk/src/main/java/cn/wildfirechat/sdk/model/SendMessageResult.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.wildfirechat.sdk.model; - -public class SendMessageResult { - private long messageUid; - private long timestamp; - - public SendMessageResult() { - } - - public SendMessageResult(long messageUid, long timestamp) { - this.messageUid = messageUid; - this.timestamp = timestamp; - } - - public long getMessageUid() { - return messageUid; - } - - public void setMessageUid(long messageUid) { - this.messageUid = messageUid; - } - - public long getTimestamp() { - return timestamp; - } - - public void setTimestamp(long timestamp) { - this.timestamp = timestamp; - } -} diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/utilities/HttpUtils.java b/sdk/src/main/java/cn/wildfirechat/sdk/utilities/AdminHttpUtils.java similarity index 96% rename from sdk/src/main/java/cn/wildfirechat/sdk/utilities/HttpUtils.java rename to sdk/src/main/java/cn/wildfirechat/sdk/utilities/AdminHttpUtils.java index 7c7a0679..92254d58 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/utilities/HttpUtils.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/utilities/AdminHttpUtils.java @@ -19,8 +19,8 @@ import java.lang.reflect.Type; import java.nio.charset.Charset; -public class HttpUtils { - private static final Logger LOG = LoggerFactory.getLogger(HttpUtils.class); +public class AdminHttpUtils { + private static final Logger LOG = LoggerFactory.getLogger(AdminHttpUtils.class); private static String adminUrl; private static String adminSecret; @@ -54,7 +54,7 @@ public class HttpUtils { post.setHeader("timestamp", "" + timestamp); post.setHeader("sign", sign); - String jsonStr = null; + String jsonStr = ""; if (object != null) { jsonStr = new Gson().toJson(object); } diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/utilities/ChannelHttpUtils.java b/sdk/src/main/java/cn/wildfirechat/sdk/utilities/ChannelHttpUtils.java new file mode 100644 index 00000000..ba43730f --- /dev/null +++ b/sdk/src/main/java/cn/wildfirechat/sdk/utilities/ChannelHttpUtils.java @@ -0,0 +1,114 @@ +package cn.wildfirechat.sdk.utilities; + +import cn.wildfirechat.sdk.model.IMResult; +import com.google.gson.Gson; +import ikidou.reflect.TypeBuilder; +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.HttpClientBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.lang.reflect.Type; +import java.nio.charset.Charset; + + +public class ChannelHttpUtils { + private static final Logger LOG = LoggerFactory.getLogger(ChannelHttpUtils.class); + + private static String url; + private static String channelId; + private static String channelSecret; + + public static void init(String url, String channelId, String secret) { + ChannelHttpUtils.url = url; + ChannelHttpUtils.channelId = channelId; + ChannelHttpUtils.channelSecret = secret; + } + + public static IMResult httpJsonPost(String path, Object object, Class clazz) throws Exception{ + if (isNullOrEmpty(url) || isNullOrEmpty(path)) { + LOG.error("Not init IM SDK correctly. Do you forget init it?"); + throw new Exception("SDK url or secret lack!"); + } + + String url = ChannelHttpUtils.url + path; + HttpPost post = null; + try { + HttpClient httpClient = HttpClientBuilder.create().build(); + + int nonce = (int)(Math.random() * 100000 + 3); + long timestamp = System.currentTimeMillis(); + String str = nonce + "|" + channelSecret + "|" + timestamp; + String sign = DigestUtils.sha1Hex(str); + + + post = new HttpPost(url); + post.setHeader("Content-type", "application/json; charset=utf-8"); + post.setHeader("Connection", "Keep-Alive"); + post.setHeader("nonce", nonce + ""); + post.setHeader("timestamp", "" + timestamp); + post.setHeader("sign", sign); + + String jsonStr = null; + if (object != null) { + jsonStr = new Gson().toJson(object); + } + LOG.info("http request content: {}", jsonStr); + + StringEntity entity = new StringEntity(jsonStr, Charset.forName("UTF-8")); + entity.setContentEncoding("UTF-8"); + entity.setContentType("application/json"); + post.setEntity(entity); + HttpResponse response = httpClient.execute(post); + + int statusCode = response.getStatusLine().getStatusCode(); + if(statusCode != HttpStatus.SC_OK){ + LOG.info("Request error: "+statusCode); + throw new Exception("Http request error with code:" + statusCode); + }else{ + BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity() + .getContent(),"utf-8")); + StringBuffer sb = new StringBuffer(); + String line; + String NL = System.getProperty("line.separator"); + while ((line = in.readLine()) != null) { + sb.append(line + NL); + } + + in.close(); + + String content = sb.toString(); + LOG.info("http request response content: {}", content); + + return fromJsonObject(content, clazz); + } + } catch (Exception e) { + e.printStackTrace(); + throw e; + }finally{ + if(post != null){ + post.releaseConnection(); + } + } + } + + private static IMResult fromJsonObject(String content, Class clazz) { + Type type = TypeBuilder + .newInstance(IMResult.class) + .addTypeParam(clazz) + .build(); + return new Gson().fromJson(content, type); + } + + private static boolean isNullOrEmpty(String str) { + return str == null || str.isEmpty(); + } + +} diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/utilities/RobotHttpUtils.java b/sdk/src/main/java/cn/wildfirechat/sdk/utilities/RobotHttpUtils.java new file mode 100644 index 00000000..9b531640 --- /dev/null +++ b/sdk/src/main/java/cn/wildfirechat/sdk/utilities/RobotHttpUtils.java @@ -0,0 +1,114 @@ +package cn.wildfirechat.sdk.utilities; + +import cn.wildfirechat.sdk.model.IMResult; +import com.google.gson.Gson; +import ikidou.reflect.TypeBuilder; +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.HttpClientBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.lang.reflect.Type; +import java.nio.charset.Charset; + + +public class RobotHttpUtils { + private static final Logger LOG = LoggerFactory.getLogger(RobotHttpUtils.class); + + private static String url; + private static String robotId; + private static String robotSecret; + + public static void init(String url, String robotId, String secret) { + RobotHttpUtils.url = url; + RobotHttpUtils.robotId = robotId; + RobotHttpUtils.robotSecret = secret; + } + + public static IMResult httpJsonPost(String path, Object object, Class clazz) throws Exception{ + if (isNullOrEmpty(url) || isNullOrEmpty(path)) { + LOG.error("Not init IM SDK correctly. Do you forget init it?"); + throw new Exception("SDK url or secret lack!"); + } + + String url = RobotHttpUtils.url + path; + HttpPost post = null; + try { + HttpClient httpClient = HttpClientBuilder.create().build(); + + int nonce = (int)(Math.random() * 100000 + 3); + long timestamp = System.currentTimeMillis(); + String str = nonce + "|" + robotSecret + "|" + timestamp; + String sign = DigestUtils.sha1Hex(str); + + + post = new HttpPost(url); + post.setHeader("Content-type", "application/json; charset=utf-8"); + post.setHeader("Connection", "Keep-Alive"); + post.setHeader("nonce", nonce + ""); + post.setHeader("timestamp", "" + timestamp); + post.setHeader("sign", sign); + + String jsonStr = null; + if (object != null) { + jsonStr = new Gson().toJson(object); + } + LOG.info("http request content: {}", jsonStr); + + StringEntity entity = new StringEntity(jsonStr, Charset.forName("UTF-8")); + entity.setContentEncoding("UTF-8"); + entity.setContentType("application/json"); + post.setEntity(entity); + HttpResponse response = httpClient.execute(post); + + int statusCode = response.getStatusLine().getStatusCode(); + if(statusCode != HttpStatus.SC_OK){ + LOG.info("Request error: "+statusCode); + throw new Exception("Http request error with code:" + statusCode); + }else{ + BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity() + .getContent(),"utf-8")); + StringBuffer sb = new StringBuffer(); + String line; + String NL = System.getProperty("line.separator"); + while ((line = in.readLine()) != null) { + sb.append(line + NL); + } + + in.close(); + + String content = sb.toString(); + LOG.info("http request response content: {}", content); + + return fromJsonObject(content, clazz); + } + } catch (Exception e) { + e.printStackTrace(); + throw e; + }finally{ + if(post != null){ + post.releaseConnection(); + } + } + } + + private static IMResult fromJsonObject(String content, Class clazz) { + Type type = TypeBuilder + .newInstance(IMResult.class) + .addTypeParam(clazz) + .build(); + return new Gson().fromJson(content, type); + } + + private static boolean isNullOrEmpty(String str) { + return str == null || str.isEmpty(); + } + +}